1pub mod error;
36pub mod protocol;
37pub mod types;
38
39#[cfg(feature = "auth")]
42pub mod auth;
43
44#[cfg(feature = "server")]
47pub mod server;
48
49#[cfg(any(feature = "stdio", feature = "sse"))]
52pub mod transport;
53
54pub use error::{ErrorCode, ErrorData, McpError, McpResult};
57
58pub use protocol::{
59 JsonRpcError, JsonRpcMessage, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse,
60 ProgressToken, RequestId, JSONRPC_VERSION, MCP_PROTOCOL_VERSION,
61};
62
63pub use types::{
64 content::{
65 AudioContent, BlobResourceContents, Content, EmbeddedResource, ImageContent,
66 ResourceContents, TextContent, TextResourceContents,
67 },
68 messages::{
69 CallToolRequest, GetPromptRequest, GetPromptResult, InitializeRequest, InitializeResult,
70 ListPromptsResult, ListResourcesResult, ListToolsResult, ReadResourceRequest,
71 ReadResourceResult,
72 },
73 prompt::{Prompt, PromptArgument, PromptMessage, PromptMessageRole},
74 resource::{Resource, ResourceTemplate},
75 sampling::{CreateMessageRequest, CreateMessageResult, ModelPreferences, SamplingMessage},
76 tool::{CallToolResult, Tool, ToolAnnotations},
77 ClientCapabilities, ClientInfo, Implementation, LoggingLevel, ServerCapabilities, ServerInfo,
78};
79
80#[cfg(feature = "server")]
81pub use server::{
82 builder::{McpServerBuilder, PromptDef, ResourceDef, ToolDef},
83 core::McpServer,
84 extract::{Extension, Json, State},
85 handler::{IntoToolResult, ToolHandler},
86 session::Session,
87};
88
89#[cfg(all(feature = "server", feature = "auth"))]
90pub use server::{Auth, AuthenticatedMarker};
91
92#[cfg(feature = "auth")]
93pub use auth::{
94 AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials, DynAuthProvider,
95 IntoDynProvider,
96};
97
98#[cfg(feature = "auth-bearer")]
99pub use auth::BearerTokenProvider;
100
101#[cfg(feature = "auth-apikey")]
102pub use auth::ApiKeyProvider;
103
104#[cfg(feature = "auth-basic")]
105pub use auth::BasicAuthProvider;
106
107#[cfg(feature = "auth")]
108pub use auth::CustomHeaderProvider;
109
110#[cfg(feature = "stdio")]
111pub use transport::stdio::{ServeStdioExt, StdioTransport};
112
113#[cfg(feature = "sse")]
114pub use transport::sse::{ServeSseExt, SseTransport};
115
116pub use mcp_kit_macros::{prompt, resource, tool};
118
119pub use schemars::{self, JsonSchema};
121pub use serde::{Deserialize, Serialize};
122pub use serde_json;
123
124#[cfg(feature = "stdio")]
125pub use tokio;
126
127pub mod prelude {
131 pub use crate::{serde_json, Deserialize, JsonSchema, Serialize};
132 pub use crate::{
133 CallToolResult, Content, GetPromptResult, ImageContent, McpError, McpResult, Prompt,
134 PromptArgument, PromptMessage, PromptMessageRole, ReadResourceResult, Resource,
135 ResourceContents, ResourceTemplate, TextContent, Tool, ToolAnnotations,
136 };
137 pub use mcp_kit_macros::tool;
138
139 #[cfg(feature = "server")]
140 pub use crate::{
141 Json, McpServer, McpServerBuilder, PromptDef, ResourceDef, Session, State, ToolDef,
142 };
143
144 #[cfg(all(feature = "server", feature = "auth"))]
145 pub use crate::Auth;
146
147 #[cfg(feature = "auth")]
148 pub use crate::{AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials};
149
150 #[cfg(feature = "auth-bearer")]
151 pub use crate::BearerTokenProvider;
152
153 #[cfg(feature = "auth-apikey")]
154 pub use crate::ApiKeyProvider;
155
156 #[cfg(feature = "auth-basic")]
157 pub use crate::BasicAuthProvider;
158
159 #[cfg(feature = "auth")]
160 pub use crate::CustomHeaderProvider;
161
162 #[cfg(feature = "stdio")]
163 pub use crate::ServeStdioExt;
164
165 #[cfg(feature = "sse")]
166 pub use crate::ServeSseExt;
167}
168
169#[doc(hidden)]
172pub mod __private {
173 pub use crate::error::{McpError, McpResult};
174 pub use crate::types::{
175 messages::{CallToolRequest, GetPromptRequest, ReadResourceRequest},
176 prompt::{GetPromptResult, Prompt, PromptArgument},
177 resource::{ReadResourceResult, Resource, ResourceTemplate},
178 tool::CallToolResult,
179 };
180 pub use schemars;
181 pub use serde_json;
182
183 #[cfg(feature = "server")]
184 pub use crate::server::handler::{BoxFuture, IntoToolResult};
185
186 #[cfg(feature = "server")]
187 pub use crate::server::builder::{PromptDef, ResourceDef};
188
189 #[cfg(all(feature = "server", feature = "auth"))]
190 pub use crate::server::extract::Auth;
191}