component_shape_mcp/
lib.rs1mod arguments;
9mod definitions;
10mod error;
11mod input_schema;
12mod metadata;
13mod names;
14mod results;
15mod schema;
16mod server;
17mod stdio_smoke;
18mod validation;
19
20use std::{
21 borrow::Cow,
22 collections::{BTreeMap, BTreeSet, HashMap, HashSet},
23 fmt,
24 future::Future,
25 hash::Hash,
26 marker::PhantomData,
27 ops::Index,
28 path::{Path, PathBuf},
29 pin::Pin,
30 sync::Arc,
31};
32
33pub use arguments::*;
34pub use component_shape::{
35 ComponentShapeFor, ComponentShapeMetadata, McpInput, McpInputShape, McpPrimitiveKind,
36 McpRangeBoundKind,
37};
38#[cfg(feature = "derive")]
39pub use component_shape_mcp_macros::{McpJsonSchema, McpToolInput};
40pub use definitions::*;
41pub(crate) use definitions::{validate_required_metadata_text, validate_tool_annotation_hints};
42pub use error::*;
43pub(crate) use error::{
44 normalize_value_against_schema, reject_unknown_arguments, validate_value_against_closed_schema,
45};
46pub(crate) use input_schema::value_schema_allows_null;
47pub use input_schema::*;
48pub use metadata::*;
49pub use names::*;
50pub use results::*;
51pub use rmcp;
52pub use rmcp::model::{
53 CallToolResult as ToolCallResult, ContentBlock, GetPromptResult as McpPromptResult,
54 Icon as McpIcon, IconTheme as McpIconTheme, Prompt as PromptDefinition,
55 PromptArgument as McpPromptArgument, PromptMessage as McpPromptMessage,
56 ReadResourceResult as McpResourceResult, Resource as ResourceDefinition,
57 ResourceContents as McpResourceContents, ResourceTemplate as ResourceTemplateDefinition,
58 Role as McpRole, Tool as ToolDefinition, ToolAnnotations as McpToolAnnotations,
59};
60use rmcp::{
61 ErrorData, RoleServer, ServerHandler, ServiceExt as _,
62 model::{
63 CacheScope, CallToolRequestParams, CallToolResponse, GetPromptRequestParams,
64 GetPromptResponse, GetPromptResult, Implementation, JsonObject, ListPromptsResult,
65 ListResourceTemplatesResult, ListResourcesResult, ListToolsResult, MetaObject,
66 PaginatedRequestParams, Prompt, PromptMessage, ProtocolVersion, ReadResourceRequestParams,
67 ReadResourceResponse, ReadResourceResult, Resource, ResourceContents, ResourceTemplate,
68 Role, ServerCapabilities, ServerConfig, Tool,
69 },
70 service::{MaybeSendFuture, RequestContext},
71 transport::stdio,
72};
73pub use schema::*;
74pub use serde;
75use serde::{Deserialize, Serialize, de::DeserializeOwned};
76pub use serde_json;
77use serde_json::{Map, Number, Value, json};
78pub use server::*;
79pub use stdio_smoke::*;
80use strum::IntoStaticStr;
81pub use validation::*;
82
83pub const MCP_PROTOCOL_VERSION: &str = "2026-07-28";
84
85pub type ServeStdioResult = Result<(), Box<dyn std::error::Error + Send + Sync + 'static>>;
86pub type McpToolArguments = Map<String, Value>;
87pub type McpSchemaProperties = BTreeMap<String, McpSchema>;
88pub type McpSchemaFn = fn() -> McpSchema;
89type ToolFuture = Pin<Box<dyn Future<Output = ToolCallResult> + Send + 'static>>;
90type ResourceFuture =
91 Pin<Box<dyn Future<Output = Result<ReadResourceResult, ErrorData>> + Send + 'static>>;
92type PromptFuture =
93 Pin<Box<dyn Future<Output = Result<GetPromptResult, ErrorData>> + Send + 'static>>;
94
95#[cfg(test)]
96mod tests;