diff --git a/Cargo.lock b/Cargo.lock index f05ab66eb..2063208bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -622,10 +622,10 @@ dependencies = [ "brk_computer", "brk_core", "brk_indexer", - "brk_rmcp", "brk_vec", "color-eyre", "derive_deref", + "rmcp", "schemars 1.0.4", "serde", "serde_json", @@ -649,8 +649,8 @@ version = "0.0.80" dependencies = [ "axum", "brk_interface", - "brk_rmcp", "log", + "rmcp", ] [[package]] @@ -668,49 +668,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "brk_rmcp" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde96460b07f97f8522cef62fa5e9d5271a5183b13e6d75379ab43c1fb0b106" -dependencies = [ - "base64 0.22.1", - "brk_rmcp-macros", - "bytes", - "chrono", - "futures", - "http", - "http-body", - "http-body-util", - "paste", - "pin-project-lite", - "rand 0.9.1", - "schemars 1.0.4", - "serde", - "serde_json", - "sse-stream", - "thiserror 2.0.12", - "tokio", - "tokio-stream", - "tokio-util", - "tower-service", - "tracing", - "uuid", -] - -[[package]] -name = "brk_rmcp-macros" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a3cb1aadff2f3aaaed76d17e71d6b828cafbd3fe9fbaba07d31b8ed10e63c2" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.104", -] - [[package]] name = "brk_rolldown" version = "0.1.1" @@ -1479,8 +1436,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a79c4acb1fd5fa3d9304be4c76e031c54d2e92d172a393e24b19a14fe8532fe9" +dependencies = [ + "darling_core 0.21.0", + "darling_macro 0.21.0", ] [[package]] @@ -1497,13 +1464,38 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "darling_core" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74875de90daf30eb59609910b84d4d368103aaec4c924824c6799b28f77d6a1d" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79f8e61677d5df9167cd85265f8e5f64b215cdea3fb55eebc3e622e44c7a146" +dependencies = [ + "darling_core 0.21.0", "quote", "syn 2.0.104", ] @@ -3584,6 +3576,49 @@ dependencies = [ "libc", ] +[[package]] +name = "rmcp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b008b927a85d514699ff304be84c5084598596e6cad4a6f5bc67207715fafe5f" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "futures", + "http", + "http-body", + "http-body-util", + "paste", + "pin-project-lite", + "rand 0.9.1", + "rmcp-macros", + "schemars 1.0.4", + "serde", + "serde_json", + "sse-stream", + "thiserror 2.0.12", + "tokio", + "tokio-stream", + "tokio-util", + "tower-service", + "tracing", + "uuid", +] + +[[package]] +name = "rmcp-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7465280d5f73f2c5c99017a04af407b2262455a149f255ad22f2b0b29087695c" +dependencies = [ + "darling 0.21.0", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.104", +] + [[package]] name = "rolldown-ariadne" version = "0.5.2" @@ -3696,6 +3731,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" dependencies = [ + "chrono", "dyn-clone", "ref-cast", "schemars_derive", @@ -3884,7 +3920,7 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.104", diff --git a/Cargo.toml b/Cargo.toml index 4013b4726..ebd7f5bdd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,8 +38,6 @@ brk_interface = { version = "0.0.80", path = "crates/brk_interface" } brk_logger = { version = "0.0.80", path = "crates/brk_logger" } brk_mcp = { version = "0.0.80", path = "crates/brk_mcp" } brk_parser = { version = "0.0.80", path = "crates/brk_parser" } -brk_rmcp = { version = "0.2.1", features = ["transport-streamable-http-server", "transport-worker"]} -# brk_rmcp = { path = "../rust-sdk/crates/rmcp", features = ["transport-streamable-http-server", "transport-worker"]} brk_server = { version = "0.0.80", path = "crates/brk_server" } brk_store = { version = "0.0.80", path = "crates/brk_store" } brk_vec = { version = "0.0.80", path = "crates/brk_vec" } @@ -53,6 +51,7 @@ jiff = "0.2.15" log = { version = "0.4.27" } minreq = { version = "2.14.0", features = ["https", "serde_json"] } rayon = "1.10.0" +rmcp = { version = "0.3.0", features = ["transport-worker", "transport-streamable-http-server" ] } schemars = "1.0.4" serde = { version = "1.0.219" } serde_bytes = "0.11.17" diff --git a/crates/brk_interface/Cargo.toml b/crates/brk_interface/Cargo.toml index b3dc440c9..db3479110 100644 --- a/crates/brk_interface/Cargo.toml +++ b/crates/brk_interface/Cargo.toml @@ -14,7 +14,7 @@ brk_indexer = { workspace = true } brk_vec = { workspace = true } color-eyre = { workspace = true } derive_deref = { workspace = true } -brk_rmcp = { workspace = true } +rmcp = { workspace = true } schemars = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/brk_interface/src/format.rs b/crates/brk_interface/src/format.rs index 8095f61c6..6f75cb719 100644 --- a/crates/brk_interface/src/format.rs +++ b/crates/brk_interface/src/format.rs @@ -1,5 +1,5 @@ -use brk_rmcp::schemars::JsonSchema; use color_eyre::eyre::eyre; +use rmcp::schemars::JsonSchema; use serde::Deserialize; #[allow(clippy::upper_case_acronyms)] diff --git a/crates/brk_interface/src/params.rs b/crates/brk_interface/src/params.rs index 1f32751d3..d4291786e 100644 --- a/crates/brk_interface/src/params.rs +++ b/crates/brk_interface/src/params.rs @@ -1,6 +1,6 @@ use std::ops::Deref; -use brk_rmcp::schemars::{self, JsonSchema}; +use rmcp::schemars::{self, JsonSchema}; use serde::Deserialize; use crate::{ diff --git a/crates/brk_logger/src/lib.rs b/crates/brk_logger/src/lib.rs index c11b29ad8..153c47e87 100644 --- a/crates/brk_logger/src/lib.rs +++ b/crates/brk_logger/src/lib.rs @@ -26,7 +26,7 @@ pub fn init(path: Option<&Path>) { }); Builder::from_env(Env::default().default_filter_or( - "info,bitcoin=off,bitcoincore-rpc=off,fjall=off,lsm_tree=off,rolldown=off,brk_rolldown=off,rmcp=off,brk_rmcp=off,tracing=off", + "info,bitcoin=off,bitcoincore-rpc=off,fjall=off,lsm_tree=off,rolldown=off,brk_rolldown=off,rmcp=off,rmcp=off,tracing=off", )) .format(move |buf, record| { let date_time = Timestamp::now() diff --git a/crates/brk_mcp/Cargo.toml b/crates/brk_mcp/Cargo.toml index ec71f78ff..bce4ad5f6 100644 --- a/crates/brk_mcp/Cargo.toml +++ b/crates/brk_mcp/Cargo.toml @@ -11,4 +11,4 @@ repository.workspace = true axum = { workspace = true } brk_interface = { workspace = true } log = { workspace = true } -brk_rmcp = { workspace = true } +rmcp = { workspace = true } diff --git a/crates/brk_mcp/src/lib.rs b/crates/brk_mcp/src/lib.rs index eadd03a0d..fa77063c9 100644 --- a/crates/brk_mcp/src/lib.rs +++ b/crates/brk_mcp/src/lib.rs @@ -4,14 +4,14 @@ // #![doc = "```"] use brk_interface::{IdParam, Interface, PaginatedIndexParam, PaginationParam, Params}; -use brk_rmcp::{ - Error as McpError, RoleServer, ServerHandler, +use log::info; +use rmcp::{ + ErrorData as McpError, RoleServer, ServerHandler, handler::server::{router::tool::ToolRouter, tool::Parameters}, model::*, service::RequestContext, tool, tool_handler, tool_router, }; -use log::info; pub mod route; diff --git a/crates/brk_mcp/src/route.rs b/crates/brk_mcp/src/route.rs index 27f6bf2a5..de51dfd75 100644 --- a/crates/brk_mcp/src/route.rs +++ b/crates/brk_mcp/src/route.rs @@ -1,6 +1,6 @@ use axum::Router; use brk_interface::Interface; -use brk_rmcp::transport::{ +use rmcp::transport::{ StreamableHttpServerConfig, streamable_http_server::{StreamableHttpService, session::local::LocalSessionManager}, }; @@ -22,15 +22,13 @@ where return self; } - let config = StreamableHttpServerConfig { - // stateful_mode: false, // breaks Claude - ..Default::default() - }; - let service = StreamableHttpService::new( move || Ok(MCP::new(interface)), LocalSessionManager::default().into(), - config, + StreamableHttpServerConfig { + // stateful_mode: false, // breaks Claude + ..Default::default() + }, ); info!("Setting MCP...");