Skip to content

feat: bidirectional MCP bridge + tool composer (S20)#394

Merged
EmersonBraun merged 1 commit into
mainfrom
feat/phase3-s20-mcp-composer
Apr 19, 2026
Merged

feat: bidirectional MCP bridge + tool composer (S20)#394
EmersonBraun merged 1 commit into
mainfrom
feat/phase3-s20-mcp-composer

Conversation

@EmersonBraun

Copy link
Copy Markdown
Collaborator

Summary

Phase 3 sprint S20closes #167, #168.

  • [F3] #54 — Bidirectional MCP bridge #167 Bidirectional MCP bridge — new `@agentskit/tools/mcp` subpath.
    • Consume: `createMcpClient` + `toolsFromMcpClient` pull an MCP server's tools into native AgentsKit `ToolDefinition`s.
    • Publish: `createMcpServer` exposes your AgentsKit tools to any MCP host (Claude Desktop, Cursor, Zed, IDEs).
    • Transports: `createStdioTransport` (newline-JSON over stdin/stdout) + `createInMemoryTransportPair` for tests. Bring your own for WebSocket / SSE + POST.
    • Protocol subset: `initialize` + `tools/list` + `tools/call` over JSON-RPC 2.0. Resources / prompts / sampling deferred.
  • [F3] #55 — Tool composer (chaining) #168 Tool composer — new `@agentskit/core/compose-tool` subpath. `composeTool` chains N tools into one macro tool; each step's `mapArgs` builds the next sub-call from accumulated state, `mapResult` transforms, `stopWhen` short-circuits, `finalize` reduces. One schema to the model, fixed recipe underneath.

23 new tests.

Coverage

  • `@agentskit/core` lines ≥87% (threshold 75); `compose-tool.ts` 100%
  • `@agentskit/tools` lines ≥70% (threshold 70)

Docs

  • `apps/docs-next/content/docs/recipes/mcp-bridge.mdx`
  • `apps/docs-next/content/docs/recipes/tool-composer.mdx`

Changeset

`.changeset/phase3-s20-mcp-composer.md` — minor bumps on `@agentskit/tools`, `@agentskit/core`.

Test plan

  • `pnpm --filter @agentskit/tools test` (62, 17 new from MCP)
  • `pnpm --filter @agentskit/core test` (226, 10 new from composer)
  • `pnpm -r lint`
  • Core bundle under 10 KB
  • Manual: run an external MCP server through the stdio transport

Phase 3 sprint S20 — issues #167, #168.

- @agentskit/tools/mcp (subpath): bidirectional Model Context
  Protocol bridge. createMcpClient + toolsFromMcpClient consume MCP
  servers as native ToolDefinitions. createMcpServer exposes
  AgentsKit tools to MCP hosts. Transports: createStdioTransport
  (newline-JSON on stdin/stdout), createInMemoryTransportPair for
  tests. Protocol subset: initialize + tools/list + tools/call over
  JSON-RPC 2.0.
- @agentskit/core/compose-tool (subpath): composeTool chains N
  ToolDefinitions into one macro tool. mapArgs builds next sub-call
  from state, mapResult transforms, stopWhen short-circuits, finalize
  reduces. One schema visible to the model, fixed recipe underneath.

23 new tests. Core bundle still 8.7 KB / 9.7 KB gzipped.
@EmersonBraun EmersonBraun merged commit bb3ae1f into main Apr 19, 2026
6 checks passed
@EmersonBraun EmersonBraun deleted the feat/phase3-s20-mcp-composer branch April 19, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[F3] #54 — Bidirectional MCP bridge

1 participant