Files
MetaCrate/vendor/mentra/tests/mcp_sse_smoke.rs
Chili Palmer 360203d647
Some checks failed
CI / rust-skia (Rust only) (push) Has been cancelled
CI / required (push) Has been cancelled
Add operator Mentra memory browser
2026-08-23 19:18:41 +02:00

55 lines
2.0 KiB
Rust

//! Optional manual smoke test against a real MCP HTTP+SSE server.
//!
//! This is ignored by default and never runs in ordinary CI: it needs a live
//! endpoint, which no automated run should depend on. The transport itself is
//! covered by the deterministic fixture tests in `mentra::mcp::sse`.
//!
//! Point it at any server speaking the 2024-11-05 HTTP+SSE transport:
//!
//! ```text
//! MENTRA_MCP_SSE_URL=https://mcp.example.com/sse \
//! MENTRA_MCP_SSE_TOKEN=<token> \
//! cargo test -p mentra --test mcp_sse_smoke -- --ignored --nocapture
//! ```
//!
//! `MENTRA_MCP_SSE_TOKEN` is optional. The test performs only `initialize` and
//! `tools/list`; it never calls a tool, so it cannot cause a side effect on the
//! server it is pointed at.
use mentra::{McpSseClient, McpSseServerConfig};
/// Environment variable naming the SSE endpoint to probe.
const URL_VAR: &str = "MENTRA_MCP_SSE_URL";
/// Environment variable carrying an optional bearer token.
const TOKEN_VAR: &str = "MENTRA_MCP_SSE_TOKEN";
#[tokio::test]
#[ignore = "requires a live MCP server; set MENTRA_MCP_SSE_URL"]
async fn initializes_and_lists_tools_against_a_live_server() {
let url = std::env::var(URL_VAR)
.unwrap_or_else(|_| panic!("set {URL_VAR} to the server's SSE endpoint"));
let mut config = McpSseServerConfig::new("smoke", &url);
if let Ok(token) = std::env::var(TOKEN_VAR) {
config = config.with_bearer_token(token);
}
let client = McpSseClient::connect(&config)
.await
.expect("the handshake should complete");
let info = client
.server_info()
.expect("initialize should report server info");
println!("connected to {} {}", info.name, info.version);
println!("{} tools advertised:", client.tools().len());
for tool in client.tools() {
println!(" {}", tool.name);
}
// No tool is called: a smoke test must not cause side effects on whatever
// server it happens to be pointed at.
client.shutdown().await;
}