🧠 Agent with MCP Tools and Ollama (Codespaces Ready)
This project demonstrates how to use smolagents, mcp, and Ollama in GitHub Codespaces, and how to integrate with GitHub's remote MCP server (public preview).
Lab 1: Use Local MCP Inspector in Codespaces
✅ Setup
- Open this repo in GitHub Codespaces
- Ensure
.devcontainerbuilds the container withOllamaand Python dependencies - In terminal:
pip install mcp
mcp dev calculator.py
- MCP Inspector UI at:
http://localhost:6274 - SSE endpoint at:
http://localhost:6277/sse
✅ Test Agent via CLI
python test_calculator_agent.py
✅ Or Use Chat UI
python chat_calculator_agent.py
Lab 2: Use GitHub’s New Remote MCP Server (Public Preview)
🆕 As of June 12, 2025, you can register and use remote tools on GitHub’s cloud MCP platform.
🛠 Steps
- Install latest
mcpCLI:
pip install --upgrade mcp
- Register your tool with GitHub’s MCP cloud server:
mcp register --tool calculator.py --remote
- Start agent with remote tools:
mcp_client = MCPClient({
"url": "https://mcp.github.dev/sse",
"token": "<your GitHub token>"
})
- Run the CLI agent or Gradio app as usual
🔁 Lab 3: Add a Second Tool (Reverse String)
This lab shows how to add another tool to the MCP Inspector workflow.
✅ Setup
Create reverse_string.py:
from mcp import tool
@tool
def reverse_string(text: str) -> str:
return text[::-1]
Then launch it:
mcp dev reverse_string.py
Update your test agent or Gradio interface to prompt:
"Reverse the string 'hello world'"
🧠 The LLM will choose the appropriate tool via schema-based reasoning.
🎁 Bonus: Multi-Tool MCP Server
Instead of running individual tools, you can host multiple tools in a single server using FastMCP.
✅ Setup
Create a file multi_tool_server.py:
from fastapi import FastAPI
from fastmcp import FastMCP
from mcp import tool
@tool
def calculator(expression: str) -> str:
try:
result = eval(expression, {"__builtins__": {}})
return str(result)
except Exception as e:
return f"Error: {str(e)}"
@tool
def reverse_string(text: str) -> str:
return text[::-1]
app = FastMCP().app
Run it with:
python multi_tool_server.py
Then connect your agent to:
MCPClient({"url": "http://127.0.0.1:7860/sse"})
Now you can access both tools from one endpoint!
