subagentservers

.com mcp server
grounding: this repo's own 3 crates

What an MCP server actually is, here

The Model Context Protocol (MCP) defines a client-server pattern for giving an LLM tool access: a server declares a set of named, schema-typed tools; a client (an agent, an IDE, a chat surface) discovers and calls them. This repo builds MCP servers using rmcp, the official Rust SDK, with the #[tool_router] / #[tool] / #[tool_handler] macros doing the JSON-RPC and schema plumbing.

The 3 real servers

  • subagentjobs-mcp (crates/mcp-server) -- exposes this repo's own job-board data: search_jobs, get_job, get_skill_graph, crawl_board. Backed by DurableStore (Redis L2 → Postgres L3) and a Postgres-backed FSM (task-state-machine) tracking crawl state Pending → Crawling → Enriching → Active.
  • a2a-bridge (crates/a2a-bridge) -- doesn't expose its own tools; instead it spawns subagentjobs-mcp as a stdio child process per request and re-exposes search_jobs/get_job over the A2A protocol via an axum HTTP server, publishing an AgentCard at GET /.well-known/agent-card.json.
  • engineering-coworker (crates/engineering-coworker) -- the one server that actually executes side effects: cargo_check, cargo_test, wrangler_deploy, d1_query (rejects DROP/ALTER automatically), git_status, git_commit_push. Runs on the developer's own Mac under the macos__desktop_cowork__engineering_coworker naming-ontology profile.

Source: read directly from crates/mcp-server/{Cargo.toml,src/main.rs,src/server.rs,src/tools.rs}, crates/a2a-bridge/{Cargo.toml,src/main.rs}, and crates/engineering-coworker/{Cargo.toml,src/main.rs} in this repo.