| 1 | [package] |
| 2 | name = "ed-mcp" |
| 3 | description = "MCP for Onde agents: server configuration, tool namespacing, timeouts, progress and cancellation over rmcp, the official Rust SDK." |
| 4 | keywords = ["mcp", "llm", "agent", "onde"] |
| 5 | categories = ["asynchronous"] |
| 6 | version.workspace = true |
| 7 | edition = "2024" |
| 8 | rust-version.workspace = true |
| 9 | license.workspace = true |
| 10 | authors.workspace = true |
| 11 | repository.workspace = true |
| 12 | homepage.workspace = true |
| 13 | |
| 14 | [dependencies] |
| 15 | agent-client-protocol = { workspace = true, optional = true } |
| 16 | ed-agent = { workspace = true, optional = true } |
| 17 | async-trait = { workspace = true, optional = true } |
| 18 | http = "1" |
| 19 | rmcp = { workspace = true, features = ["client", "transport-streamable-http-client-reqwest", "reqwest"] } |
| 20 | tokio = { workspace = true, features = ["sync", "time", "process", "macros", "io-std", "io-util", "rt"] } |
| 21 | tokio-util.workspace = true |
| 22 | futures.workspace = true |
| 23 | serde_json.workspace = true |
| 24 | anyhow.workspace = true |
| 25 | tracing.workspace = true |
| 26 | |
| 27 | # Spawning an MCP server as a child process needs `exec`, which Apple hides on tvOS (`libc` |
| 28 | # has no `execv` there, so `nix` under `process-wrap` doesn't compile). The stdio transport |
| 29 | # is everywhere else. |
| 30 | [target.'cfg(not(target_os = "tvos"))'.dependencies] |
| 31 | rmcp = { workspace = true, features = ["transport-child-process"] } |
| 32 | |
| 33 | [features] |
| 34 | # Map ACP `session/new` MCP server lists (`McpToolset::connect`, `ServerSpec::from_acp`). |
| 35 | # Pulls in `agent-client-protocol`; `ed-acp` enables it. |
| 36 | acp = ["dep:agent-client-protocol"] |
| 37 | # `McpExecutor`: an `McpToolset` as Ed tools. Pulls in `ed-agent` (and with it `onde`). |
| 38 | agent = ["dep:ed-agent", "dep:async-trait"] |
| 39 | # A scriptable MCP server for tests: `echo`, `slow_progress`, `wait_for_cancel`, and the |
| 40 | # demucs-shaped `list_models` / `separate_stems`. |
| 41 | test-server = [] |
| 42 | |
| 43 | [dev-dependencies] |
| 44 | # `elicitation` adds the server peer's `create_elicitation`, so the in-process test server can |
| 45 | # ask the client for input and exercise the forwarding hook. |
| 46 | rmcp = { workspace = true, features = ["server", "transport-streamable-http-server", "elicitation"] } |
| 47 | axum = "0.8" |
| 48 | tokio = { workspace = true, features = ["net", "rt-multi-thread"] } |
| 49 | # Run the feature-gated code's tests under a plain `cargo test`. |
| 50 | ed-mcp = { path = ".", features = ["acp", "agent", "test-server"] } |