Model Context Protocol (MCP) integration for pi-coding-agent. Connect to any MCP server (stdio, SSE, StreamableHTTP, WebSocket) and use its tools, resources, and prompts natively.
pi-mcp is a meta-tool that dynamically wraps other MCP servers' tools. Tool definitions are inferred at runtime rather than statically registered. The 4 tools shown have minimal descriptions (mcp_discover is adequate at ~100 chars, but mcp_<server>_<tool> and resource/prompt tools are generic placeholders). Input schemas are present but sparse: mcp_discover has a basic optional 'server' param; dynamic tools have empty schemas ({}); resource and prompt tools have minimal required params. No output schemas documented. No error handling guidance. Tool names use underscores but lack clarity about what 'mcp_' prefix means to an LLM. This is a proxy/gateway pattern, not a domain-specific tool suite, which limits scoring potential.
Dynamically registered MCP tool from connected server. Each tool from an MCP server is registered with prefix mcp_<servername>_<toolname>
Get a prompt template from MCP server. Use mcp_discover to find available prompts.
Read a resource from MCP server. Use mcp_discover to find available resource URIs.
Discover available tools, resources, and prompts from all connected MCP servers
Dynamic tool definitions (mcp_<server>_<tool>) have empty input schemas ({}). LLMs cannot infer what parameters these tools accept, leading to hallucinated calls.
No output schemas documented for any tool. LLMs cannot plan downstream tool chains or extract required fields (e.g., tool_id, resource_uri) from responses.
Tool names use generic prefix 'mcp_' without explaining to LLMs what this means or when to use these tools vs. native tools. Naming lacks action verbs for dynamic tools.
No error handling guidance. If a tool call fails (e.g., server unreachable, invalid resource URI), LLMs receive no recovery hints or categorization (retryable vs. fatal).
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Tool definitions are inferred at runtime; static schema inspection is impossible. This violates the principle that tool definitions should be discoverable and stable.