Rust framework for building Model Context Protocol servers and clients. Published to crates.io.
Overview
Rust framework for Model Context Protocol Rust framework for building Model Context Protocol servers and clients. Part of the PulseEngine toolchain. Provides the MCP implementation used across PulseEngine's AI-assisted development infrastructure. The #[mcp_server] and #[mcp_tools] macros generate the protocol implementation. Tool schemas are derived from your Rust types via JsonSchema. - hello-world — Minimal server - hello-world-with-auth — With authentication - resources-demo — Resource templates with #[mcp_resource] - ui-enabled-server — MCP Apps extension (SEP-1865) Implements MCP 2025-11-25: tools, resources, prompts, completions, sampling, roots, logging, progress, cancellation, tasks, and elicitation. Part of PulseEngine — a WebAssembly toolchain for safety-critical systems, with formally verified components
README
Rust framework for building Model Context Protocol servers and clients.
[!NOTE] Part of the PulseEngine toolchain. Provides the MCP implementation used across PulseEngine’s AI-assisted development infrastructure.
Example
use pulseengine_mcp_macros::{mcp_server, mcp_tools};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct GreetParams {
pub name: Option,
}
#[mcp_server(name = "My Server")]
#[derive(Default, Clone)]
pub struct MyServer;
#[mcp_tools]
impl MyServer {
/// Greet someone by name
pub async fn greet(&self, params: GreetParams) -> anyhow::Result {
let name = params.name.unwrap_or_else(|| "World".to_string());
Ok(format!("Hello, {name}!"))
}
}
#[tokio::main]
async fn main() -> Result> {
MyServer::configure_stdio_logging();
MyServer::with_defaults().serve_stdio().await?.run().await
}
The #[mcp_server] and #[mcp_tools] macros generate the protocol implementation. Tool schemas are derived from your Rust types via JsonSchema.
Crates
| Crate | Description |
|---|---|
| mcp-protocol | MCP types, JSON-RPC, schema validation |
| mcp-server | Server infrastructure with McpBackend trait |
| mcp-client | Client for connecting to MCP servers |
| mcp-transport | stdio, HTTP, WebSocket transports |
| mcp-auth | Authentication, API keys, OAuth 2.1 |
| mcp-security | Input validation, rate limiting |
| mcp-logging | Structured logging with credential sanitization |
| mcp-macros | #[mcp_server], #[mcp_tools], #[mcp_resource] |
Examples
- hello-world — Minimal server
- hello-world-with-auth — With authentication
- resources-demo — Resource templates with
#[mcp_resource] - ui-enabled-server — MCP Apps extension (SEP-1865)
MCP Spec
Implements MCP 2025-11-25: tools, resources, prompts, completions, sampling, roots, logging, progress, cancellation, tasks, and elicitation.
License
MIT OR Apache-2.0
Install
This server does not publish a one-line install command.
Open the repository installation guide New to MCP? Start with the mcpskill.org guide →