Three pieces, all required for an end-to-end MCP tool call:
* McpToolService used generic spec names "request"/"response" instead of
"mcp-tool-request"/"mcp-tool-response", so RequestResponseSpec's
flow-config topic lookup never matched and consumers bound to literal
subjects nobody else publishes to.
* Add entrypoints/mcp-tool.mjs (mirrors agent/librarian entrypoints) so
the service can be launched in the prebuilt trustgraph-ts image.
* Add a `mcp-tool` service block to deploy/docker-compose.yml.
With these three fixes plus a `mcp-tool-request`/`mcp-tool-response`
entry in each flow's topics map, the agent ReAct loop can now invoke
remote MCP tools (verified end-to-end against Brave Search and FireCrawl).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add the full MCP tool pipeline enabling agents to invoke external tools
(like Brave Search) via MCP servers:
- Add ToolRequest/ToolResponse types and mcp-tool topics to @trustgraph/base
- Create McpToolService (FlowProcessor) that connects to external MCP servers
via @modelcontextprotocol/sdk StreamableHTTP transport
- Add createMcpTool() to wire MCP tools into the agent's ReAct loop
- Implement config-driven tool registration in AgentService with backward-
compatible fallback to hardcoded tools
- Add tool filtering by group and state (port of Python tool_filter.py)
- Register mcp-tool in gateway dispatcher and export from @trustgraph/flow
- Fix flow restart race condition: skip restart when flow definitions unchanged
- Update seed config with MCP server config and tool definitions
- Add run scripts for MCP tool service and Brave Search MCP server
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>