main
toml 58 lines 2.61 KB
Raw
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"] }
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 # rmcp's `reqwest` feature turns on reqwest's aws-lc provider, which doesn't build for
28 # arm64_32; watchOS takes `reqwest-native-tls` (Security.framework) instead.
29 [target.'cfg(not(target_os = "watchos"))'.dependencies]
30 rmcp = { workspace = true, features = ["reqwest"] }
31
32 [target.'cfg(target_os = "watchos")'.dependencies]
33 rmcp = { workspace = true, features = ["reqwest-native-tls"] }
34
35 # Spawning an MCP server as a child process needs `exec`, which Apple hides on tvOS and
36 # watchOS (`libc` has no `execv` there, so `nix` under `process-wrap` doesn't compile). The
37 # stdio transport is everywhere else.
38 [target.'cfg(not(any(target_os = "tvos", target_os = "watchos")))'.dependencies]
39 rmcp = { workspace = true, features = ["transport-child-process"] }
40
41 [features]
42 # Map ACP `session/new` MCP server lists (`McpToolset::connect`, `ServerSpec::from_acp`).
43 # Pulls in `agent-client-protocol`; `ed-acp` enables it.
44 acp = ["dep:agent-client-protocol"]
45 # `McpExecutor`: an `McpToolset` as Ed tools. Pulls in `ed-agent` (and with it `onde`).
46 agent = ["dep:ed-agent", "dep:async-trait"]
47 # A scriptable MCP server for tests: `echo`, `slow_progress`, `wait_for_cancel`, and the
48 # demucs-shaped `list_models` / `separate_stems`.
49 test-server = []
50
51 [dev-dependencies]
52 # `elicitation` adds the server peer's `create_elicitation`, so the in-process test server can
53 # ask the client for input and exercise the forwarding hook.
54 rmcp = { workspace = true, features = ["server", "transport-streamable-http-server", "elicitation"] }
55 axum = "0.8"
56 tokio = { workspace = true, features = ["net", "rt-multi-thread"] }
57 # Run the feature-gated code's tests under a plain `cargo test`.
58 ed-mcp = { path = ".", features = ["acp", "agent", "test-server"] }