rig-mcp-server
The project is a Rust-based implementation of a Model Context Protocol (MCP) server utilizing Server-Sent Events for communication. It features a custom tool for adding numbers and integrates with RIG for LLM agent operations.
๐ Rust MCP Server + Inspector Example: SSE Transport with an Add Tool
credit : https://dev.to/joshmo_dev/using-model-context-protocol-with-rig-m7o
This project demonstrates how to set up an MCP (Model Context Protocol) server and client using Server-Sent Events (SSE) for communication. It includes a simple tool that adds two numbers and integrates with the RIG agent for LLM prompting.
๐ Getting Started
Clone this repo and run with:
cargo run
In a separate terminal start the MCP Inspector with:
npx @modelcontextprotocol/inspector sse http://127.0.0.1:3001/sse
You'll see output like:
Starting MCP inspector...
Proxy server listening on port 3000
New SSE connection
Query parameters: { transportType: 'sse', url: 'http://localhost:3001/sse' }
SSE transport: url=http://localhost:3001/sse, headers=
Connected to SSE transport
Connected MCP client to backing server transport
Created web app transport
Set up MCP proxy
๐ MCP Inspector is up and running at http://localhost:5173 ๐
You can now view the web interface at http://localhost:5173
๐ ๏ธ Features
- โ
Sets up a custom MCP server using
ServerSseTransport
- โ Connects a MCP client to the server
- โ
Registers a custom tool:
AddTool
, which adds two numbers - โ Lists registered tools via MCP
- โ Integrates with RIG and prompts an LLM agent using the tool
๐ง Code Overview
#[tool(
name = "Add",
description = "Adds two numbers together.",
params(a = "The first number to add", b = "The second number to add")
)]
async fn add_tool(a: f64, b: f64) -> Result<ToolResponseContent> {
Ok(tool_text_content!((a + b).to_string()))
}
This defines the Add
tool that is registered in the MCP server.
The main function sets up:
- Tracing
- The MCP server and transport (SSE)
- A MCP client that initializes and lists available tools
- A RIG agent with OpenAI backend, which uses the MCP tool
The agent then runs a prompt:
let response = agent.prompt("Add 10 + 10").await;
๐งช Sample Output
When run successfully, you'll see logs like:
Initialized: Ok(...)
Tools: Ok([...])
Building RIG agent
Prompting RIG agent
Agent response: Some("20")
๐งฐ Tech Stack
- ๐ฆ Rust with tokio
- ๐ก SSE transport from
mcp_core
- ๐ง MCP server/client architecture
- ๐ค RIG agent with OpenAI model
- ๐ MCP Inspector web interface
๐ฆ Dependencies
Make sure you have these in your Cargo.toml
:
[dependencies]
tokio = { version = "1", features = ["full"] }
anyhow = "1"
serde_json = "1"
mcp_core = "..."
mcp_core_macros = "..."
rig = "..."
Replace
...
with the appropriate versions based on your environment.
๐ Inspector GUI
Visit http://localhost:5173 to view and interact with the MCP Inspector UI.
โ Test Log Sample
Query parameters: { transportType: 'sse', url: 'http://localhost:3001/sse' }
Connected to SSE transport
Connected MCP client to backing server transport
Set up MCP proxy
Received message for sessionId cdd4a8be-57e2-44e3-9b81-3df300e86f22
๐ฌ Questions or Feedback?
Feel free to open an issue or start a discussion!