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.
Clone this repo and run with:
cargo runIn a separate terminal start the MCP Inspector with:
npx @modelcontextprotocol/inspector sse http://127.0.0.1:3001/sseYou'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
- ✅ 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
#[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;When run successfully, you'll see logs like:
Initialized: Ok(...) Tools: Ok([...]) Building RIG agent Prompting RIG agent Agent response: Some("20") - 🦀 Rust with tokio
- 📡 SSE transport from
mcp_core - 🔧 MCP server/client architecture
- 🤖 RIG agent with OpenAI model
- 🌐 MCP Inspector web interface
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.
Visit http://localhost:5173 to view and interact with the MCP Inspector UI.
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 Feel free to open an issue or start a discussion!
