Summary & Motivation
letitloop currently includes a built-in MCP server (orchestrator/mcp_server.py), allowing external AI assistants (like Claude Desktop, Antigravity, Cursor, and Windsurf) to control letitloop as a macro-task engine.
The next evolution is Bidirectional MCP Support: enabling letitloop contracts to act as MCP clients that dynamically discover, mount, and execute tools provided by external MCP servers (e.g., PostgreSQL MCP, GitHub MCP, Puppeteer Browser MCP, Slack MCP).
Proposed Architecture
MCPClientManager (orchestrator/mcp_client.py):
- Manages stdio and SSE transport connections to external MCP servers declared in a
.letitloop/mcp.json config.
- Discovers available tools (
tools/list) and translates them into tool definitions for worker adapters.
- Contract Tool Binding:
- Contracts can specify
required_mcp_servers: ["postgres", "github"] in their contract metadata.
- The worker adapter receives access only to the tools exposed by declared servers.
Acceptance Criteria
Summary & Motivation
letitloopcurrently includes a built-in MCP server (orchestrator/mcp_server.py), allowing external AI assistants (like Claude Desktop, Antigravity, Cursor, and Windsurf) to controlletitloopas a macro-task engine.The next evolution is Bidirectional MCP Support: enabling
letitloopcontracts to act as MCP clients that dynamically discover, mount, and execute tools provided by external MCP servers (e.g., PostgreSQL MCP, GitHub MCP, Puppeteer Browser MCP, Slack MCP).Proposed Architecture
MCPClientManager(orchestrator/mcp_client.py):.letitloop/mcp.jsonconfig.tools/list) and translates them into tool definitions for worker adapters.required_mcp_servers: ["postgres", "github"]in their contract metadata.Acceptance Criteria
tests/test_mcp_client.py.