Problem Statement
Terminal Agent is currently restricted to its 12 built-in tools. Developers cannot connect external tool ecosystems (such as database query runners, browser inspectors, GitHub API integrations, or custom debuggers) into the agent loop.
Proposed Architecture & Solution
- MCP Client Adapter (
src/terminal_agent/tools/mcp.py):
- Implement an MCP client communicating via stdio JSON-RPC with configured MCP servers.
- Discover available tools using the MCP
tools/list protocol.
- Wrap MCP tool definitions as
BaseTool instances compatible with ToolRegistry.
- Configuration Support (
src/terminal_agent/config/schema.py):
- Add
mcp_servers configuration to TerminalAgentConfig:
mcp_servers:
postgres:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
github:
command: "docker"
args: ["run", "-i", "--rm", "mcp/github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"
- Registry Integration (
src/terminal_agent/tools/registry.py):
- Initialize and register active MCP server tools during
ToolRegistry setup.
- Cleanly handle MCP server shutdown on session completion.
Files to Modify / Create
src/terminal_agent/tools/mcp.py (New)
src/terminal_agent/tools/registry.py
src/terminal_agent/config/schema.py
tests/unit/test_mcp.py (New)
Acceptance Criteria
Problem Statement
Terminal Agent is currently restricted to its 12 built-in tools. Developers cannot connect external tool ecosystems (such as database query runners, browser inspectors, GitHub API integrations, or custom debuggers) into the agent loop.
Proposed Architecture & Solution
src/terminal_agent/tools/mcp.py):tools/listprotocol.BaseToolinstances compatible withToolRegistry.src/terminal_agent/config/schema.py):mcp_serversconfiguration toTerminalAgentConfig:src/terminal_agent/tools/registry.py):ToolRegistrysetup.Files to Modify / Create
src/terminal_agent/tools/mcp.py(New)src/terminal_agent/tools/registry.pysrc/terminal_agent/config/schema.pytests/unit/test_mcp.py(New)Acceptance Criteria
tools/callrequests and returns structuredToolResult.