RS UTCP

v1.0.0Developer Toolsstable

Official Rust implementation of the UTCP

agentsaiai-agent-toolsdeveloper-toolsmcp
Share:
54
Stars
0
Downloads
0
Weekly
0/5

What is RS UTCP?

RS UTCP is a Model Context Protocol (MCP) server that allows AI assistants like Claude, Cursor, and VS Code to official rust implementation of the utcp

Official Rust implementation of the UTCP

This server falls under the Developer Tools category on MCPgee, the world's largest MCP server directory with 33,000+ servers.

Features

  • Official Rust implementation of the UTCP

Use Cases

Rust implementation of UTCP protocol
Agent tool communication standard
LicenseMPL-2.0
Languagerust
Versionv1.0.0
UpdatedMay 12, 2026
Statushealthy
Maintenanceactive

Works with

ClaudeOpenAIwindowsmacoslinux

Installation

Manual Installation

npx rs-utcp

Configuration

Configuration Details

Config File

claude_desktop_config.json

Performance

Response Metrics

Response Time< 200ms
ThroughputMedium

Resource Usage

Memory UsageLow
CPU UsageLow

How to Set Up and Use RS UTCP

rs-utcp is the official Rust client library for the Universal Tool Calling Protocol (UTCP), an open standard that allows AI agents to discover and invoke tools hosted over 12 different communication protocols including HTTP, MCP, WebSocket, gRPC, CLI, GraphQL, TCP, SSE, and more. Built with async/await via Tokio, it provides config-driven tool provider registration from JSON manifests, tag-based semantic tool search, OpenAPI spec import, and multi-authentication support. Rust developers building AI agent frameworks or multi-protocol tool orchestration layers use it as the foundation for uniform tool calling across heterogeneous backends.

Prerequisites

  • Rust toolchain (stable, 2021 edition or later) with Cargo
  • Tokio async runtime (added as a dependency)
  • A providers.json manifest describing the tool providers your agent needs
  • Network access to the tool endpoints listed in the manifest
  • API keys or auth credentials for any secured tool providers
1

Add rs-utcp to your Cargo.toml

Add the rs-utcp crate and Tokio runtime to your project's dependencies. Tokio with the 'full' feature set is required for the async client.

cargo add rs-utcp
cargo add tokio --features full
2

Create a providers.json manifest

Define your tool providers in a JSON file. Each entry in 'tools' specifies the tool name, description, input/output schemas, and a call template that references the communication protocol and endpoint.

{
  "manual_version": "1.0.0",
  "utcp_version": "0.3.0",
  "allowed_communication_protocols": ["http", "mcp"],
  "info": {
    "title": "My Agent Tools",
    "version": "1.0.0",
    "description": "Tool providers for my AI agent"
  },
  "tools": []
}
3

Initialise the UTCP client in Rust

Create a UtcpClientConfig pointing to your providers.json, wire up an InMemoryToolRepository and TagSearchStrategy, then instantiate UtcpClient. The client discovers and registers all tools on startup.

use rs_utcp::{
    config::UtcpClientConfig,
    repository::in_memory::InMemoryToolRepository,
    tag::tag_search::TagSearchStrategy,
    UtcpClient, UtcpClientInterface,
};
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let config = UtcpClientConfig::new()
        .with_manual_path("providers.json".into());
    let repo = Arc::new(InMemoryToolRepository::new());
    let search = Arc::new(TagSearchStrategy::new(repo.clone(), 1.0));
    let client = UtcpClient::create(config, repo, search).await?;
    Ok(())
}
4

Search for and call tools

Use search_tools to find tools by tag and call_tool to invoke them. Results are returned as serde_json::Value.

let tools = client.search_tools("weather", 10).await?;
let mut args = std::collections::HashMap::new();
args.insert("city".to_string(), serde_json::json!("London"));
let result = client.call_tool("get_forecast", args).await?;
println!("{}", serde_json::to_string_pretty(&result)?);
5

Build and run your agent

Compile with 'cargo build --release' and run your binary. The UTCP client will load providers.json and be ready to route tool calls at runtime.

cargo build --release
./target/release/my_agent

RS UTCP Examples

Client configuration

Example providers.json manifest registering one HTTP tool and one MCP stdio tool for a UTCP client.

{
  "manual_version": "1.0.0",
  "utcp_version": "0.3.0",
  "allowed_communication_protocols": ["http", "mcp"],
  "info": {
    "title": "Example Tools",
    "version": "1.0.0",
    "description": "Sample providers manifest"
  },
  "tools": [
    {
      "name": "get_forecast",
      "description": "Get weather for a city",
      "inputs": {
        "type": "object",
        "properties": {
          "city": { "type": "string" }
        },
        "required": ["city"]
      },
      "outputs": { "type": "object" },
      "tool_call_template": {
        "call_template_type": "http",
        "name": "weather_api",
        "url": "https://api.weather.example.com/tools",
        "http_method": "GET",
        "headers": { "Accept": "application/json" }
      },
      "tags": ["weather"]
    }
  ]
}

Prompts to try

Conceptual interactions showing how an AI agent using rs-utcp would orchestrate tool calls.

- "Search for all tools tagged 'filesystem' and list their names and descriptions."
- "Call the get_forecast tool for city=Tokyo and return the result."
- "Import the Petstore OpenAPI spec and generate tools from all GET endpoints."
- "List all registered tool providers and their communication protocols."
- "Call the read_file tool with path=/etc/hosts using the MCP stdio provider."

Troubleshooting RS UTCP

cargo add rs-utcp fails with 'no matching package'

Ensure your Rust toolchain is up to date (rustup update stable) and that crates.io is reachable. Check the current version at crates.io/crates/rs-utcp and pin it explicitly if needed.

Client panics at startup with 'providers.json not found'

The path passed to with_manual_path is resolved relative to the working directory of the binary at runtime, not the project root. Use an absolute path or ensure you run the binary from the correct directory.

Tool call returns an auth error from the remote provider

UTCP supports API keys, Basic Auth, and OAuth2 in the call_template. Add an 'auth' block to the tool's call_template in providers.json with the appropriate credential type and values.

Frequently Asked Questions about RS UTCP

What is RS UTCP?

RS UTCP is a Model Context Protocol (MCP) server that official rust implementation of the utcp It connects AI assistants to external tools and data sources through a standardized interface.

How do I install RS UTCP?

Follow the installation instructions on the RS UTCP GitHub repository. Clone the repo, install dependencies, and add the server config to your AI client.

Which AI clients work with RS UTCP?

RS UTCP works with all major MCP-compatible AI clients including Claude Desktop, Claude Code, Cursor, VS Code (GitHub Copilot), Windsurf, and Cline.

Is RS UTCP free to use?

Yes, RS UTCP is open source and available under the MPL-2.0 license. You can use it freely in both personal and commercial projects.

Browse More Developer Tools MCP Servers

Explore all developer tools servers available in the MCPgee directory. Each server includes setup guides for Claude, Cursor, and VS Code.

Quick Config Preview

{ "mcpServers": { "rs-utcp": { "command": "npx", "args": ["-y", "rs-utcp"] } } }

Add this to your claude_desktop_config.json or .cursor/mcp.json

Read the full setup guide →

Ready to use RS UTCP?

Browse our complete directory of 33,000+ MCP servers, read setup guides for your editor, and start building with the Model Context Protocol.

33,000+ ServersFree & Open SourceStep-by-Step Guides