cmind/agents/v1/external_mcp_server_service.proto
Package: cmind.agents.v1
Enums
ExternalMcpAuthType
| Value | Number | Description |
|---|---|---|
EXTERNAL_MCP_AUTH_TYPE_UNSPECIFIED | 0 | |
EXTERNAL_MCP_AUTH_TYPE_NONE | 1 | |
EXTERNAL_MCP_AUTH_TYPE_BEARER | 2 | |
EXTERNAL_MCP_AUTH_TYPE_OAUTH_AUTHORIZATION_CODE | 3 |
Messages
ExternalMcpServer
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | Resource name used as the model-visible tool prefix; the gateway joins it with each tool as {name}{tool}, so "" is disallowed |
serverUrl | string | 2 | |
sharing | cmind.modelmanager.v1.Sharing | 3 | Mutated by UpdateExternalMcpServer; this service has no separate sharing RPC |
displayName | string | 4 | |
auth | ExternalMcpServerAuth | 5 | Omitted on update means no auth config change. UNSPECIFIED is invalid when present |
staticHeaderNames | repeated string | 6 | Names of Secret-backed static request headers; values are never returned |
DiscoverExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
serverUrl | string | 1 | |
tenantId | string | 2 |
DiscoverPlatformExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
serverUrl | string | 1 |
DiscoverExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
discovery | ExternalMcpServerDiscovery | 1 |
DiscoverPlatformExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
discovery | ExternalMcpServerDiscovery | 1 |
ExternalMcpServerDiscovery
What probing an MCP endpoint tells the caller that it cannot work out on its own. Deliberately narrow: endpoints, scopes and the resource are rediscovered on every connect (see resolveOAuthProfile), so echoing them back into a create/update would pin stale values instead.
| Field | Type | Number | Description |
|---|---|---|---|
authType | ExternalMcpAuthType | 1 | Which auth type to store for this server. |
serverName | string | 2 | The server's own name for itself, for confirmation copy only. |
dynamicClientRegistrationSupported | bool | 3 | True when the existing public-client registration path can obtain a client_id. False means the caller must supply a pre-registered client. |
ExternalMcpStaticHeaderValue
Write-only static request header stored in the credentials Secret
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | RFC 9110 token |
value | string | 2 | No control characters other than tab |
ExternalMcpOAuthConfig
Non-user-specific OAuth config; access/refresh tokens are client-owned and never stored here
| Field | Type | Number | Description |
|---|---|---|---|
authorizationUrl | string | 1 | Manual endpoint; omitted when automatic discovery is enabled |
tokenUrl | string | 2 | Manual endpoint; omitted when automatic discovery is enabled |
issuerUrl | string | 3 | Discovery override or fallback |
clientId | string | 4 | |
scopes | repeated string | 5 | |
resource | string | 6 | |
authorizationParameters | map<string, string> | 8 | Additional provider-specific authorization request parameters. OAuth protocol-owned parameters are rejected by the manager. |
tokenEndpointAuthMethod | string | 9 | Confidential-client token-endpoint authentication; empty defaults to client_secret_post when a client secret is configured |
clientSecretSet | bool | 10 | Output only: a backend-persisted client secret is configured for this server |
ExternalMcpServerAuth
| Field | Type | Number | Description |
|---|---|---|---|
type | ExternalMcpAuthType | 1 | |
oauth | ExternalMcpOAuthConfig | 2 | Required when type is EXTERNAL_MCP_AUTH_TYPE_OAUTH_AUTHORIZATION_CODE |
CreateExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 | |
tenantId | string | 2 | Tenant that owns the server |
apiKey | string | 3 | Outbound bearer token stored as credentials |
staticHeaders | repeated ExternalMcpStaticHeaderValue | 4 | Secret-backed values, never returned |
oauthClientSecret | string | 5 | Confidential OAuth client secret; write-only and never returned |
CreateExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 |
CreatePlatformExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 | |
apiKey | string | 2 | Outbound bearer token stored as credentials |
staticHeaders | repeated ExternalMcpStaticHeaderValue | 3 | Secret-backed values, never returned |
oauthClientSecret | string | 4 | Confidential OAuth client secret; write-only and never returned |
CreatePlatformExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 |
GetExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 |
GetExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 |
UpdateExternalMcpServerRequest
name identifies the server and is immutable; ownership scope is fixed at create (set by which Create RPC was used) and cannot change here
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 | |
apiKey | string | 2 | Outbound bearer token stored as credentials. Empty leaves the stored credential unchanged, non-empty rotates it |
staticHeaders | repeated ExternalMcpStaticHeaderValue | 3 | Replaces configured static headers; values are never returned |
oauthClientSecret | optional string | 4 | Confidential OAuth client secret. Omitted keeps the current value; an empty value clears it. The value is never returned. |
clearStaticHeaders | bool | 5 | Clears static headers when set |
UpdateExternalMcpServerResponse
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServer | ExternalMcpServer | 1 |
DeleteExternalMcpServerRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 |
DeleteExternalMcpServerResponse
ListExternalMcpServersRequest
ExternalMcpServerSummary
List view for MCP servers
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | |
displayName | string | 2 | |
shareToAll | bool | 3 | |
tenantId | string | 4 | Owning tenant; empty means platform-owned (cluster-wide) |
authType | ExternalMcpAuthType | 5 | |
userAuthRequired | bool | 6 | True for oauth_authorization_code servers; the chat client must obtain a per-user token before invoking tools on this server |
ListExternalMcpServersResponse
| Field | Type | Number | Description |
|---|---|---|---|
externalMcpServers | repeated ExternalMcpServerSummary | 1 |
GetExternalMcpServerOAuthMetadataRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 |
GetExternalMcpServerOAuthMetadataResponse
| Field | Type | Number | Description |
|---|---|---|---|
oauth | ExternalMcpOAuthConfig | 1 | |
redirectUri | string | 2 | |
metadataVersion | string | 3 |
ExchangeExternalMcpOAuthTokenRequest
Exactly one grant: authorization code (code, code_verifier, redirect_uri) or refresh_token. The token endpoint is resolved server-side from the registered config or discovery, never from the request
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | |
code | string | 2 | |
codeVerifier | string | 3 | |
redirectUri | string | 4 | |
refreshToken | string | 5 | |
metadataVersion | string | 6 |
ExchangeExternalMcpOAuthTokenResponse
| Field | Type | Number | Description |
|---|---|---|---|
accessToken | string | 1 | |
tokenType | string | 2 | |
expiresIn | int64 | 3 | |
refreshToken | string | 4 | |
scope | string | 5 |
ListExternalMcpServerPermissionsRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | |
subjectType | optional cmind.permissions.v1.SubjectType | 2 | |
role | optional cmind.permissions.v1.DeploymentRole | 3 |
ListExternalMcpServerPermissionsResponse
| Field | Type | Number | Description |
|---|---|---|---|
permissions | repeated cmind.permissions.v1.DeploymentPermission | 1 |
AddExternalMcpServerPermissionRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | |
subject | cmind.permissions.v1.Subject | 2 | |
role | cmind.permissions.v1.DeploymentRole | 3 |
AddExternalMcpServerPermissionResponse
RemoveExternalMcpServerPermissionRequest
| Field | Type | Number | Description |
|---|---|---|---|
name | string | 1 | |
subject | cmind.permissions.v1.Subject | 2 | |
role | cmind.permissions.v1.DeploymentRole | 3 |
RemoveExternalMcpServerPermissionResponse
Services
ExternalMcpServerService
DiscoverExternalMcpServer
Probes an MCP endpoint and returns the authentication settings it advertises.
Request: DiscoverExternalMcpServerRequest
Response: DiscoverExternalMcpServerResponse
DiscoverPlatformExternalMcpServer
Platform-scoped variant of DiscoverExternalMcpServer.
Request: DiscoverPlatformExternalMcpServerRequest
Response: DiscoverPlatformExternalMcpServerResponse
CreateExternalMcpServer
Creates an MCP server owned by a tenant
Request: CreateExternalMcpServerRequest
Response: CreateExternalMcpServerResponse
CreatePlatformExternalMcpServer
Creates an MCP server owned by the platform
Request: CreatePlatformExternalMcpServerRequest
Response: CreatePlatformExternalMcpServerResponse
GetExternalMcpServer
Request: GetExternalMcpServerRequest
Response: GetExternalMcpServerResponse
GetExternalMcpServerOAuthMetadata
Returns non-secret OAuth bootstrap metadata for invokers; unlike GetExternalMcpServer this is can_invoke gated so the chat client can use it without admin rights
Request: GetExternalMcpServerOAuthMetadataRequest
Response: GetExternalMcpServerOAuthMetadataResponse
ExchangeExternalMcpOAuthToken
Server-side token exchange and refresh; confidential client secrets are read from backend storage and never leave the backend
Request: ExchangeExternalMcpOAuthTokenRequest
Response: ExchangeExternalMcpOAuthTokenResponse
UpdateExternalMcpServer
Request: UpdateExternalMcpServerRequest
Response: UpdateExternalMcpServerResponse
DeleteExternalMcpServer
Request: DeleteExternalMcpServerRequest
Response: DeleteExternalMcpServerResponse
ListExternalMcpServers
The handler returns every server the caller can invoke, tenant-owned and platform-owned
Request: ListExternalMcpServersRequest
Response: ListExternalMcpServersResponse
ListExternalMcpServerPermissions
Request: ListExternalMcpServerPermissionsRequest
Response: ListExternalMcpServerPermissionsResponse
AddExternalMcpServerPermission
Request: AddExternalMcpServerPermissionRequest
Response: AddExternalMcpServerPermissionResponse
RemoveExternalMcpServerPermission
Request: RemoveExternalMcpServerPermissionRequest
Response: RemoveExternalMcpServerPermissionResponse