1.6 KiB
Plugin manifests publish MCP descriptors
CMS plugins expose ConnectRPC services with method-role mappings. The host can turn those unary methods into MCP tools, but a wasm plugin previously carried only its RBAC map; the host had no protobuf method descriptions or input schemas from which to build a safe MCP catalogue.
Decision: PluginManifest carries repeated MCPToolDescriptor values at field
38. The Go guest binding derives descriptors from linked protobuf reflection,
includes only mapped unary methods, emits JSON object input schemas, and omits
methods it cannot describe. The host remains responsible for validating every
descriptor against the manifest RBAC map before registration.
Generating descriptors from handwritten plugin metadata was rejected because it would duplicate protobuf definitions and drift from the actual service. Publishing every reflected method was rejected because tools without explicit RBAC mappings would widen the plugin's callable surface.
Consequences:
- Wasm plugin manifests can advertise their own ConnectRPC methods as MCP tools.
- Descriptor capture fails closed for missing services, streaming methods, and malformed or unsupported protobuf inputs.
- Consumers must use pluginsdk v0.3.2 or newer before calling
PluginManifest.GetMcpTools. abi/proto/v1/manifest.protoremains the language-neutral source of truth;abi/v1/manifest.pb.gois generated output.
Keywords: PluginManifest, MCPToolDescriptor, mcp_tools, GetMcpTools, captureMCPTools, plugin/wasmguest/mcp.go, abi/proto/v1/manifest.proto, abi/v1/manifest.pb.go, ConnectRPC, MCP, RBAC, pluginsdk v0.3.2