II.
Page JSON
Structured · livepage:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-025
GAP-TOOLS-025: MCP Tool Discovery and Invocation from Orchestrated Tasks json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-025",
"_kind": "Page",
"_file": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-025.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-025.md",
"sourceKind": "repo-docs",
"title": "GAP-TOOLS-025: MCP Tool Discovery and Invocation from Orchestrated Tasks",
"displayName": "GAP-TOOLS-025: MCP Tool Discovery and Invocation from Orchestrated Tasks",
"slug": "docs/harness-features-backlog/gaps/tools-capabilities/gap-tools-025",
"articlePath": "wiki/docs/harness-features-backlog/gaps/tools-capabilities/GAP-TOOLS-025.md",
"article": "\n# GAP-TOOLS-025: MCP Tool Discovery and Invocation from Orchestrated Tasks\n\n| Field | Value |\n|-------|-------|\n| Category | tools-capabilities |\n| Priority | High |\n| Effort | M |\n| Status | Partial |\n\n## Description\nEnable process definitions to discover and invoke MCP tools registered on connected MCP servers, treating them as first-class routable capabilities. The orchestrator should know what MCP tools are available and route effects to MCP-capable harnesses or invoke MCP tools directly.\n\n## Current State\nThe SDK has an MCP server (`mcp:serve`) that exposes babysitter's own tools via MCP. However, the orchestrator cannot act as an MCP client -- it cannot discover tools on external MCP servers or invoke them from within process definitions. Harnesses like CC have their own MCP client support, but the orchestrator has no visibility into what MCP tools are available.\n\n## Target State\nAn MCP client module that: discovers tools on configured MCP servers, registers discovered tools in the capability registry, enables `ctx.mcpTool(server, tool, args)` intrinsic in process definitions, routes MCP tool invocations through the effect system for journal tracking, caches tool schemas for prompt enrichment. MCP tool availability becomes a routing constraint for harness selection.\n\n## Dependencies\n- [GAP-HADAPT-001](../harness-adaptation/GAP-HADAPT-001.md) -- capability-based routing with MCP as a capability\n- [GAP-REMOTE-006](../remote-integration/GAP-REMOTE-006.md) -- MCP client infrastructure\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| MCP server | `packages/sdk/src/mcp/` |\n| Harness capabilities | `packages/sdk/src/harness/types.ts` |\n| Effect routing | `packages/sdk/src/harness/registry.ts` |\n| Task definitions | `packages/sdk/src/tasks/` |\n\n## Recommendation\nPhase 2-3 implementation. Build MCP client module alongside existing MCP server. Register discovered tools in capability registry. Add `ctx.mcpTool()` to ProcessContext with full journal tracking.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-harness-features-backlog",
"to": "page:docs-harness-features-backlog-gaps-tools-capabilities-gap-tools-025",
"kind": "contains_page"
}
]
}