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