Skip to main content

The mcp-api meta-group

get mcp-api <tools|resources|prompts|info> is a reserved meta-group for the MCP protocol's own top-level catalog concepts - not a real tools_group, and distinct from tool <name>/resource <uri> (which invoke one specific item). It exists to answer "what can we get from this daemon over the MCP standard itself," straight from the protocol:

$ linuxctl get mcp-api tools
Available tools:
files/list - Lists contents of a directory. ...
files/read - Precision reading of file contents ...
...

$ linuxctl get mcp-api resources
Available static resources:
os://uname - Native system uname information ...
...

$ linuxctl get mcp-api prompts
This mcpd daemon does not implement the MCP prompts capability (Method not found).
Its initialize response only declares "tools" and "resources" - see `linuxctl get mcp-api info`.

$ linuxctl get mcp-api info
{
"capabilities": {
"resources": {},
"tools": {}
},
"protocolVersion": "2024-11-05",
"serverInfo": {
"name": "linux-mcp-daemon",
"version": "1.0.0"
}
}

get mcp-api info calls the real MCP initialize method and prints the raw response - the server's own self-declared protocol version and capabilities, not a client-side summary of them. get mcp-api prompts calls the real prompts/list method too, rather than silently reporting an empty list: since mcpd genuinely doesn't implement the MCP prompts capability (only tools and resources are declared in its initialize response - see internal/rpc/rpc.go), the honest answer is to say so plainly.

What mcpd does and doesn't implement​

The full MCP spec (2024-11-05, the version this daemon declares) has a few other server-side capabilities beyond tools/resources/prompts, none of which mcpd implements:

CapabilityImplemented?Notes
tools✅tools/list, tools/call
resources✅ (partial)resources/list, resources/read, resources/templates/list - but not subscribe/unsubscribe (see below)
prompts❌Not declared in initialize; get mcp-api prompts reports this plainly
resources.subscribe/unsubscribe❌Push/watch mechanism - the server notifies the client when a specific resource changes, instead of the client re-polling resources/read. Deliberately not planned: it would require the daemon to hold a persistent background watcher (e.g. inotify) per subscription, which doesn't fit the current architecture where every tool/resource call spawns a fresh, short-lived worker process and exits (internal/worker/spawner.go) - there's no long-lived process to hold the watch.
logging❌The server pushing log messages to the client via notifications/message
completion❌completion/complete, argument autocompletion for prompt/resource-template parameters

roots and sampling are client-side capabilities in the spec - the client declaring filesystem roots or offering its own LLM back to the server - so they're not something mcpd would ever expose as a server, and don't belong in this table at all.