Rust Mcp Utils
FreeNot checkedExtensions to the rust-mcp-sdk crate to build MCP servers in Rust easily
About
Extensions to the rust-mcp-sdk crate to build MCP servers in Rust easily
README
Rust MCP Utils
This project extends the rust-mcp-sdk with additional conveniences for building MCP servers in Rust with a defined set of tools. It provides two crates:
mcp-utils- Higher-level traits and abstractions that simplify tool definition and server setup beyond the base SDKmcp-cli-builder- Command-line interface generation for MCP servers built withmcp-utils
Both crates are built on top of rust-mcp-sdk and provide ergonomic wrappers around its core functionality.
Derive one of the tool traits from mcp-utils to get:
- quick server setup: list your tools in
setup_tools!and automatically get a server that can list your tools and handle tool calls - switch between
asyncor not: no need to adjust anything beside the tool trait you implement - flexible output: return
Resultobjects, plain strings, or anything that implementsSerialize
Installation
Add the crates to your dependencies:
cargo add mcp-utils mcp-cli-builder
Defining Tools
The mcp-utils crate provides several tool trait options you can implement:
TextTool– Returns plain text responses (synchronous)StructuredTool– Returns structured JSON data (synchronous)AsyncTextTool– Returns plain text responses (asynchronous)AsyncStructuredTool– Returns structured JSON data (asynchronous)
Create tools by implementing one of these traits with the #[mcp_tool] attribute:
use mcp_utils::tool_prelude::*;
#[mcp_tool(
name = "example_tool",
description = "An example tool for demonstration",
title = "Example Tool",
idempotent_hint = true,
read_only_hint = true,
destructive_hint = false,
open_world_hint = false,
)]
#[derive(Debug, JsonSchema, Serialize, Deserialize)]
pub struct ExampleTool {
/// A message to process
pub message: String,
}
impl TextTool for ExampleTool {
type Output = String;
fn call(&self) -> Self::Output {
format!("Processed: {}", self.message)
}
}
The attribute macro mcp_tool is re-exported from the rust-mcp-sdk crate. You can find the available options to use in its documentation.
Aggregating Tools
Use the setup_tools! macro to create a tool collection. Map each tool to its kind like in the following example:
use mcp_utils::server_prelude::*;
setup_tools!(pub MyTools, [
text(SimpleGreeter), // for TextTool
structured(TestTool), // for StructuredTool
async_text(FileReader), // for AsyncTextTool
async_structured(DataProcessor), // for AsyncStructuredTool
]);
This will generate a set of tools named MyTools that you can pass to the CLI builder to initialize the MCP server.
Command Line Builder
Generate a command-line interface that handles the MCP server startup. This will build a command line parser using clap with:
- options to start the server in stdio mode or with server-sent events (with
--hostand--port) - a clear
helpcommand which includes the available tools. - an option to change the default request timeout (in humantime format)
use mcp_utils::server_prelude::*;
// Aggregate your tools together
setup_tools!(pub MyTools, [
text(ExampleTool),
// ...
]);
fn main() -> Result<(), String> {
let server = ServerBuilder::new()
.with_name(env!("CARGO_PKG_NAME")) // uses the name from Cargo.toml
.with_version(env!("CARGO_PKG_VERSION")) // uses the version from Cargo.toml
.with_title("My MCP Server")
.with_instructions("A demonstration MCP server");
mcp_cli_builder::run::<MyTools>(server)
}
License
This project is available under the MIT license. See LICENSE.txt for details.
Installing Rust Mcp Utils
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/seaofvoices/rust-mcp-utilsFAQ
Is Rust Mcp Utils MCP free?
Yes, Rust Mcp Utils MCP is free — one-click install via Unyly at no cost.
Does Rust Mcp Utils need an API key?
No, Rust Mcp Utils runs without API keys or environment variables.
Is Rust Mcp Utils hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Rust Mcp Utils in Claude Desktop, Claude Code or Cursor?
Open Rust Mcp Utils on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Rust Mcp Utils with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
