1pub mod error;
36pub mod protocol;
37pub mod types;
38
39#[cfg(feature = "auth")]
42pub mod auth;
43
44#[cfg(feature = "plugin")]
47pub mod plugin;
48
49#[cfg(feature = "server")]
52pub mod server;
53
54#[cfg(any(feature = "stdio", feature = "sse", feature = "websocket"))]
57pub mod transport;
58
59pub use error::{ErrorCode, ErrorData, McpError, McpResult};
62
63pub use protocol::{
64 JsonRpcError, JsonRpcMessage, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse,
65 ProgressToken, RequestId, JSONRPC_VERSION, MCP_PROTOCOL_VERSION,
66};
67
68pub use types::{
69 content::{
70 AudioContent, BlobResourceContents, Content, EmbeddedResource, ImageContent,
71 ResourceContents, TextContent, TextResourceContents,
72 },
73 elicitation::{ElicitAction, ElicitRequest, ElicitResult, ElicitSchema},
74 messages::{
75 CallToolRequest, CompleteRequest, CompleteResult, CompletionArgument, CompletionReference,
76 GetPromptRequest, GetPromptResult, InitializeRequest, InitializeResult, ListPromptsResult,
77 ListResourcesResult, ListToolsResult, ReadResourceRequest, ReadResourceResult,
78 },
79 prompt::{Prompt, PromptArgument, PromptMessage, PromptMessageRole},
80 resource::{Resource, ResourceTemplate},
81 sampling::{CreateMessageRequest, CreateMessageResult, ModelPreferences, SamplingMessage},
82 tool::{CallToolResult, Tool, ToolAnnotations},
83 ClientCapabilities, ClientInfo, Implementation, LoggingLevel, ServerCapabilities, ServerInfo,
84};
85
86#[cfg(feature = "server")]
87pub use server::{
88 builder::{McpServerBuilder, PromptDef, ResourceDef, ToolDef},
89 core::McpServer,
90 elicitation::{
91 ChannelElicitationClient, ElicitationClient, ElicitationClientExt, ElicitationError,
92 ElicitationRequestBuilder,
93 },
94 extract::{Extension, Json, State},
95 handler::{CompletionHandler, IntoToolResult, ToolHandler},
96 notification::{NotificationReceiver, NotificationSender, SendError, SharedNotificationSender},
97 progress::{ProgressTokenExt, ProgressTracker},
98 session::Session,
99};
100
101#[cfg(all(feature = "server", feature = "auth"))]
102pub use server::{Auth, AuthenticatedMarker};
103
104#[cfg(feature = "auth")]
105pub use auth::{
106 AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials, DynAuthProvider,
107 IntoDynProvider,
108};
109
110#[cfg(feature = "auth-bearer")]
111pub use auth::BearerTokenProvider;
112
113#[cfg(feature = "auth-apikey")]
114pub use auth::ApiKeyProvider;
115
116#[cfg(feature = "auth-basic")]
117pub use auth::BasicAuthProvider;
118
119#[cfg(feature = "auth")]
120pub use auth::CustomHeaderProvider;
121
122#[cfg(feature = "stdio")]
123pub use transport::stdio::{ServeStdioExt, StdioTransport};
124
125#[cfg(feature = "sse")]
126pub use transport::sse::{ServeSseExt, SseTransport};
127
128#[cfg(feature = "sse")]
129pub use transport::streamable::{ServeStreamableExt, StreamableTransport};
130
131#[cfg(feature = "websocket")]
132pub use transport::websocket::{ServeWebSocketExt, WebSocketTransport};
133
134pub use mcp_kit_macros::{prompt, resource, tool};
136
137pub use schemars::{self, JsonSchema};
139pub use serde::{Deserialize, Serialize};
140pub use serde_json;
141
142#[cfg(feature = "stdio")]
143pub use tokio;
144
145pub mod prelude {
149 pub use crate::{serde_json, Deserialize, JsonSchema, Serialize};
150 pub use crate::{
151 CallToolResult, CompleteRequest, CompleteResult, Content, GetPromptResult, ImageContent,
152 McpError, McpResult, Prompt, PromptArgument, PromptMessage, PromptMessageRole,
153 ReadResourceResult, Resource, ResourceContents, ResourceTemplate, TextContent, Tool,
154 ToolAnnotations,
155 };
156 pub use mcp_kit_macros::tool;
157
158 #[cfg(feature = "server")]
159 pub use crate::{
160 Json, McpServer, McpServerBuilder, NotificationSender, ProgressTracker, PromptDef,
161 ResourceDef, Session, SharedNotificationSender, State, ToolDef,
162 };
163
164 #[cfg(all(feature = "server", feature = "auth"))]
165 pub use crate::Auth;
166
167 #[cfg(feature = "auth")]
168 pub use crate::{AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials};
169
170 #[cfg(feature = "auth-bearer")]
171 pub use crate::BearerTokenProvider;
172
173 #[cfg(feature = "auth-apikey")]
174 pub use crate::ApiKeyProvider;
175
176 #[cfg(feature = "auth-basic")]
177 pub use crate::BasicAuthProvider;
178
179 #[cfg(feature = "auth")]
180 pub use crate::CustomHeaderProvider;
181
182 #[cfg(feature = "stdio")]
183 pub use crate::ServeStdioExt;
184
185 #[cfg(feature = "sse")]
186 pub use crate::ServeSseExt;
187
188 #[cfg(feature = "sse")]
189 pub use crate::ServeStreamableExt;
190
191 #[cfg(feature = "websocket")]
192 pub use crate::ServeWebSocketExt;
193}
194
195#[doc(hidden)]
198pub mod __private {
199 pub use crate::error::{McpError, McpResult};
200 pub use crate::types::{
201 messages::{CallToolRequest, GetPromptRequest, ReadResourceRequest},
202 prompt::{GetPromptResult, Prompt, PromptArgument},
203 resource::{ReadResourceResult, Resource, ResourceTemplate},
204 tool::CallToolResult,
205 };
206 pub use schemars;
207 pub use serde_json;
208
209 #[cfg(feature = "server")]
210 pub use crate::server::handler::{BoxFuture, IntoToolResult};
211
212 #[cfg(feature = "server")]
213 pub use crate::server::builder::{PromptDef, ResourceDef};
214
215 #[cfg(all(feature = "server", feature = "auth"))]
216 pub use crate::server::extract::Auth;
217}