Dynamic LangGraph MCP Agent
README.md
# ๐ Dynamic LangGraph MCP Agent
A production-ready agent system that automatically discovers and uses tools from MCP (Model Context Protocol) servers using LangGraph's ReAct architecture.
## โจ Features
- **๐ค LangGraph ReAct Agent** - Built-in reasoning and multi-step planning
- **๐ Automatic Tool Discovery** - No hardcoding, just add MCP servers and go
- **๐ง LLM-Powered Routing** - Gemini Flash intelligently selects the right tools
- **๐ Multi-Server Support** - Connect to unlimited MCP servers
- **๐ Multi-Step Reasoning** - Agent can chain multiple tools to solve complex tasks
- **โจ Zero Configuration** - Add tools and they work instantly
## ๐ Project Structure
```
mcp-agent/
โโโ agents.py # Main application (FastAPI + LangGraph)
โโโ mcp_server.py # MCP server with agricultural tools
โโโ config.json # MCP server configuration
โโโ .env # Environment variables (API keys)
โโโ requirements.txt # Python dependencies
โโโ README.md # This file
โโโ ARCHITECTURE.md # System architecture documentation
โโโ DATAFLOW.md # Complete data flow explanation
```
## ๐ Quick Start
### 1. Install Dependencies
```bash
pip install -r requirements.txt
```
### 2. Set Up Environment Variables
Create a `.env` file:
```env
GOOGLE_API_KEY=your_google_api_key_here
```
Get your API key from: https://aistudio.google.com/app/apikey
### 3. Configure MCP Servers
Edit `config.json` with your MCP server paths:
```json
{
"mcpServers": {
"agricultural-server": {
"command": "python",
"args": ["mcp_server.py"],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}
```
**Important:** Use full paths on Windows:
```json
{
"command": "D:\\Python\\python.exe",
"args": ["D:\\projects\\mcp-agent\\mcp_server.py"]
}
```
### 4. Start the Server
```bash
python agents.py
```
### 5. Test the Agent
Visit http://localhost:8000/docs
Or use cURL:
```bash
curl -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{"message": "What is the weather in Tokyo?"}'
```
## ๐ Available Tools
| Tool | Description | Arguments |
|------|-------------|-----------|
| `get_current_weather` | Real-time weather data | city (string) |
| `get_pesticide_seed_info` | Agricultural information | query (string) |
| `get_placeholder_posts` | Sample blog posts | limit (integer) |
## ๐งช Example Queries
```bash
# Weather query โ Uses get_current_weather
"What's the weather in Paris?"
# Agriculture query โ Uses get_pesticide_seed_info
"Tell me about organic farming techniques"
# Content query โ Uses get_placeholder_posts
"Show me 5 interesting articles"
# Multi-step reasoning โ Uses multiple tools
"What's the weather in Mumbai and what crops grow best there?"
```
## ๐ง API Endpoints
### `POST /chat`
Main endpoint for chatting with the agent
**Request:**
```json
{
"message": "Your query here"
}
```
**Response:**
```json
{
"response": "Agent's answer",
"intermediate_steps": ["Tool used: get_current_weather"],
"error": null
}
```
### `GET /` - Server info
### `GET /tools` - List all tools
### `GET /health` - Health check
## ๐ Adding New Tools
Edit `mcp_server.py`:
```python
@mcp_server.list_tools()
async def list_tools() -> list[Tool]:
return [
# ... existing tools ...
Tool(
name="my_new_tool",
description="What this tool does",
inputSchema={
"type": "object",
"properties": {
"param": {"type": "string"}
},
"required": ["param"]
}
)
]
```
Restart the agent - tools are auto-discovered!
## ๐ Troubleshooting
**"GOOGLE_API_KEY not found"**
- Create `.env` file with your API key
**"No MCP servers found"**
- Check `config.json` exists and has correct paths
**"Agent not initialized"**
- Verify MCP server starts independently: `python mcp_server.py`
## ๐ Resources
- **LangGraph**: https://langchain-ai.github.io/langgraph/
- **MCP Protocol**: https://modelcontextprotocol.io
- **Gemini API**: https://ai.google.dev/
See [ARCHITECTURE.md](architecture.md) for system design.
See [DATAFLOW.md](DATAFLOW.md) for data flow details.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues