fabro/lib/components/fabro-mcp/Cargo.toml
Bryan Helmkamp 64c578d044
Take MCP servers from pebble
Step 3 of .ai/plans/pebble-absorbs-embedder-concerns.md, pinning pebble
6cdb30a with its `mcp` feature.

Pebble starts the stage's MCP servers while the agent is built, registers
their tools under `mcp__{server}__{tool}` with `ToolSource::Mcp`, and
closes them with the agent, for all three placements: a child of the run
worker over stdio, a server over HTTP (streamable or SSE), and a server
launched in the run sandbox and reached through the sandbox's preview
URL. `fabro_mcp::pebble::pebble_server` maps `McpServerSettings` onto
pebble's `McpServer`, keeping fabro's `/sse` path for sandbox-hosted SSE
servers; `RunSandbox::port_routes` hands pebble the driver's `PreviewUrls`
facet as the route to a sandbox port. The stage's event sink mirrors
`McpServerReady` and `McpServerFailed` onto the run's `agent.mcp.ready`
and `agent.mcp.failed` events, as it mirrors `RouteFailover` onto
`agent.failover`, and stores no second copy of a mirrored fact.

Deleted: `sandbox_mcp.rs`, the MCP branches of `pebble.rs` and `fabro
exec`, and fabro-mcp's client, connection manager, HTTP helpers, and SSE
transport, whose tests moved to pebble. fabro-mcp keeps the settings
re-export, the mapping, and a stdio client behind `test-support` for the
tests of fabro's own MCP server. `fabro exec` reports each server's
outcome from the agent's snapshot. The Daytona Playwright live test now
drives the sandbox-hosted server through an agent.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 19:26:41 -06:00

35 lines
1.1 KiB
TOML

[package]
name = "fabro-mcp"
edition.workspace = true
version.workspace = true
publish = false
license.workspace = true
description = "MCP server settings for fabro's agents, and how they reach pebble"
[lib]
doctest = false
[features]
# A stdio MCP client for tests of fabro's own MCP server. Production agents
# reach MCP servers through pebble; nothing here links into a normal build.
test-support = ["dep:anyhow", "dep:rmcp", "dep:serde_json", "dep:tokio", "dep:tracing"]
[lints]
workspace = true
[dependencies]
fabro-types = { path = "../../foundation/fabro-types" }
pebble-coding-agent.workspace = true
anyhow = { workspace = true, optional = true }
rmcp = { workspace = true, features = ["client", "transport-child-process"], optional = true }
serde_json = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
[dev-dependencies]
# The test-support client's dependencies, so `cfg(test)` builds see them too.
anyhow.workspace = true
rmcp = { workspace = true, features = ["client", "transport-child-process"] }
serde_json.workspace = true
tokio.workspace = true
tracing.workspace = true