This project demonstrates the integration of the Model Context Protocol (MCP) with AutoGen (AG2), showcasing a powerful pattern for building modular, tool-enabled AI agents.
The example implements three key components:
- MCP Server: A process that exposes resources and tools following the MCP specification
- MCPAssistantAgent: An AutoGen AssistantAgent extension that implements the MCP client interface
- Example Script: Demonstrates an MCP-enabled agent using LLM capabilities with MCP resources/tools
- Install
uv
package manager:
# macOS
brew install uv
# Other platforms
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/jtanningbed/mcp-ag2-example
cd mcp-ag2-example
# Install dependencies
uv sync
# Run the example
uv run example.py
This integration pattern offers several advantages over traditional tool/function calling implementations:
- The MCP client interface itself (
read_resource
,call_tool
, etc.) is exposed to the LLM agent through AG2's tool registration - Rather than registering individual tools directly with AG2, we register only the core MCP interface methods
- All specific tools (e.g.,
write_file
) are proxied through thecall_tool
interface to the MCP server - This means tools defined on the MCP server don't need any format conversion for different LLMs - they remain in Anthropic schema format
- Agents use
list_tools
to discover available server tools - While the MCP server defines tools using Anthropic's schema format, the LLM never sees these directly
- The LLM only needs to understand how to use
call_tool
with a name and arguments - No need to convert tool schemas between different LLM formats since they're abstracted behind the MCP interface
- MCP server handles:
- Tool implementation details
- Tool schema definitions (in Anthropic format)
- Resource management
- Agent only handles:
- Understanding the core MCP interface methods
- Using
call_tool
to proxy specific tool requests to the server
- LLM integration layer only handles:
- Registering MCP interface methods as tools (e.g.,
call_tool
in OpenAI format) - Routing tool calls through the MCP client
- Registering MCP interface methods as tools (e.g.,
When compared to traditional AutoGen tool implementations:
-
Simplified Tool Integration
- No need to define tool schemas in multiple formats
- Tools are defined once on the MCP server in Anthropic format
- AG2 only needs the
call_tool
interface registered
-
Enhanced Modularity
- MCP servers can be used by any MCP-compatible client
- Tools and resources are completely decoupled from agent implementation
- New tools can be added to the server without any agent changes
graph LR
A[LLM] -->|Uses| B[AG2 Tool Interface]
B -->|Registered| C[MCP Interface Methods]
C -->|Proxy| D[MCP Client]
D -->|Protocol| E[MCP Server]
E -->|Implements| F[Tools & Resources]