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, CompleteRequest, CompleteResult, CompletionArgument, CompletionReference,
70 GetPromptRequest, GetPromptResult, InitializeRequest, InitializeResult, ListPromptsResult,
71 ListResourcesResult, ListToolsResult, ReadResourceRequest, 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::{CompletionHandler, IntoToolResult, ToolHandler},
86 notification::{NotificationReceiver, NotificationSender, SendError, SharedNotificationSender},
87 progress::{ProgressTokenExt, ProgressTracker},
88 session::Session,
89};
90
91#[cfg(all(feature = "server", feature = "auth"))]
92pub use server::{Auth, AuthenticatedMarker};
93
94#[cfg(feature = "auth")]
95pub use auth::{
96 AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials, DynAuthProvider,
97 IntoDynProvider,
98};
99
100#[cfg(feature = "auth-bearer")]
101pub use auth::BearerTokenProvider;
102
103#[cfg(feature = "auth-apikey")]
104pub use auth::ApiKeyProvider;
105
106#[cfg(feature = "auth-basic")]
107pub use auth::BasicAuthProvider;
108
109#[cfg(feature = "auth")]
110pub use auth::CustomHeaderProvider;
111
112#[cfg(feature = "stdio")]
113pub use transport::stdio::{ServeStdioExt, StdioTransport};
114
115#[cfg(feature = "sse")]
116pub use transport::sse::{ServeSseExt, SseTransport};
117
118pub use mcp_kit_macros::{prompt, resource, tool};
120
121pub use schemars::{self, JsonSchema};
123pub use serde::{Deserialize, Serialize};
124pub use serde_json;
125
126#[cfg(feature = "stdio")]
127pub use tokio;
128
129pub mod prelude {
133 pub use crate::{serde_json, Deserialize, JsonSchema, Serialize};
134 pub use crate::{
135 CallToolResult, CompleteRequest, CompleteResult, Content, GetPromptResult, ImageContent,
136 McpError, McpResult, Prompt, PromptArgument, PromptMessage, PromptMessageRole,
137 ReadResourceResult, Resource, ResourceContents, ResourceTemplate, TextContent, Tool,
138 ToolAnnotations,
139 };
140 pub use mcp_kit_macros::tool;
141
142 #[cfg(feature = "server")]
143 pub use crate::{
144 Json, McpServer, McpServerBuilder, NotificationSender, ProgressTracker, PromptDef,
145 ResourceDef, Session, SharedNotificationSender, State, ToolDef,
146 };
147
148 #[cfg(all(feature = "server", feature = "auth"))]
149 pub use crate::Auth;
150
151 #[cfg(feature = "auth")]
152 pub use crate::{AuthProvider, AuthenticatedIdentity, CompositeAuthProvider, Credentials};
153
154 #[cfg(feature = "auth-bearer")]
155 pub use crate::BearerTokenProvider;
156
157 #[cfg(feature = "auth-apikey")]
158 pub use crate::ApiKeyProvider;
159
160 #[cfg(feature = "auth-basic")]
161 pub use crate::BasicAuthProvider;
162
163 #[cfg(feature = "auth")]
164 pub use crate::CustomHeaderProvider;
165
166 #[cfg(feature = "stdio")]
167 pub use crate::ServeStdioExt;
168
169 #[cfg(feature = "sse")]
170 pub use crate::ServeSseExt;
171}
172
173#[doc(hidden)]
176pub mod __private {
177 pub use crate::error::{McpError, McpResult};
178 pub use crate::types::{
179 messages::{CallToolRequest, GetPromptRequest, ReadResourceRequest},
180 prompt::{GetPromptResult, Prompt, PromptArgument},
181 resource::{ReadResourceResult, Resource, ResourceTemplate},
182 tool::CallToolResult,
183 };
184 pub use schemars;
185 pub use serde_json;
186
187 #[cfg(feature = "server")]
188 pub use crate::server::handler::{BoxFuture, IntoToolResult};
189
190 #[cfg(feature = "server")]
191 pub use crate::server::builder::{PromptDef, ResourceDef};
192
193 #[cfg(all(feature = "server", feature = "auth"))]
194 pub use crate::server::extract::Auth;
195}