Skip to main content

synwire_mcp_adapters/
lib.rs

1//! # synwire-mcp-adapters
2//!
3//! High-level MCP adapters for Synwire.
4//!
5//! This crate provides:
6//!
7//! - [`MultiServerMcpClient`] — connects to N named MCP servers simultaneously
8//!   and aggregates their tools under a unified interface.
9//! - [`Connection`] — transport configuration enum (Stdio, SSE, `StreamableHttp`,
10//!   WebSocket).
11//! - [`WebSocketMcpTransport`] — WebSocket transport implementing
12//!   [`McpTransport`].
13//! - [`McpClientSession`] — RAII session guard with drop-time cleanup.
14//! - [`PaginationCursor`] — cursor-based pagination with 1000-page cap.
15//! - [`McpCallbacks`] — logging, progress, and elicitation callback bundle.
16//! - Bidirectional MCP ↔ Synwire tool conversion ([`convert`]).
17//! - [`ToolCallInterceptor`] — onion-ordered middleware for tool calls.
18//! - [`validate_tool_arguments`] — client-side JSON Schema validation.
19//! - [`McpToolProvider`] — [`ToolProvider`] backed by [`MultiServerMcpClient`].
20//!
21//! [`McpTransport`]: synwire_core::mcp::traits::McpTransport
22//! [`ToolProvider`]: synwire_core::tools::ToolProvider
23
24#![forbid(unsafe_code)]
25
26pub mod callbacks;
27pub mod client;
28pub mod convert;
29pub mod error;
30pub mod interceptor;
31pub mod pagination;
32pub mod provider;
33pub mod session;
34pub mod transport;
35pub mod validation;
36
37pub use callbacks::{
38    DiscardLogging, DiscardProgress, McpCallbacks, McpLogLevel, McpLoggingMessage,
39    McpProgressNotification, OnMcpLogging, OnMcpProgress, TracingLogging,
40};
41pub use client::{
42    AggregatedToolDescriptor, Connection, MultiServerMcpClient, MultiServerMcpClientConfig,
43};
44pub use error::McpAdapterError;
45pub use interceptor::{
46    LoggingInterceptor, McpToolCallRequest, McpToolCallResult, ToolCallInterceptor,
47    run_interceptor_chain,
48};
49pub use pagination::PaginationCursor;
50pub use provider::McpToolProvider;
51pub use session::McpClientSession;
52pub use transport::WebSocketMcpTransport;
53pub use validation::validate_tool_arguments;