1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! MCP (Model Context Protocol) server library — transport-agnostic
//! dispatch for exposing CAR capabilities to MCP-aware clients.
//!
//! Two transports use this crate today:
//!
//! - **stdio** — `car-mcp-server` binary, one client per process.
//! Suitable for Claude Desktop / Cursor / Claude Code's
//! `--mcp-config` and any other client that follows the MCP spec's
//! stdio framing. See [`transport::stdio_loop`].
//! - **HTTP-streamable** — `car-server` daemon endpoint, many
//! concurrent clients sharing the same `Runtime` / policy chain /
//! eventlog. Implemented in `car-server-core` against the same
//! [`Server::handle`] entry point. (Phase 2 stage 4b — pending.)
//!
//! Both share the same `Server::handle(Request) -> Option<Response>`
//! pure function, so transports stay separable from protocol logic.
//!
//! ## Why a library crate
//!
//! Originally this lived in `car-mcp-server`'s `main.rs` as a
//! self-contained binary. v0.8 + the external-agent work made it
//! clear MCP needs to be a first-class daemon surface so every
//! external client (Claude Code, Codex, Gemini, custom GPTs) gets
//! CAR's tools through the same governance layer. Extracting the
//! dispatch logic into a library lets the daemon embed it without
//! shelling out to a subprocess. See
//! `docs/proposals/external-agent-detection.md` (Phase 2 stage 4b).
pub use ;
pub use ;
/// MCP protocol version this server speaks.
pub const PROTOCOL_VERSION: &str = "2024-11-05";
/// Server identifier reported in `initialize` responses.
pub const SERVER_NAME: &str = "car-mcp";
/// JSON-RPC error codes per the spec.