使用自定义MCP服务器实现AI代理的实际演示。
该项目展示了如何使用模型上下文协议(MCP)构建智能AI代理。通过一个实际的费用追踪应用程序,您可以看到AI代理如何通过自然对话与工具、数据库和API进行交互以执行复杂任务。
graph TB
subgraph "后端"
API[API服务器<br/>FastAPI + SQLite<br/>端口:8002]
MCP[MCP服务器<br/>FastAPI-MCP<br/>端口:9002]
end
subgraph "AI层"
Agent[AI代理<br/>Agno框架<br/>端口:7777]
LLM[LLM]
end
subgraph "客户端层"
UI[Web UI<br/>Next.js + React<br/>端口:3000]
Telegram[Telegram机器人<br/>Python Telegram Bot]
AnyClient[任何MCP客户端]
end
subgraph "最终用户"
User1[用户]
User2[用户]
User3[用户]
end
API -->|暴露REST API| MCP
MCP -->|MCP协议| Agent
MCP -.->|MCP协议| AnyClient
Agent -->|API调用| LLM
Agent -->|提供服务| UI
Agent -->|提供服务| Telegram
UI -->|交互| User1
Telegram -->|交互| User2
AnyClient -.->|交互| User3
style API fill:#0066CC,color:#fff
style MCP fill:#00AA66,color:#fff
style Agent fill:#FF6600,color:#fff
style LLM fill:#8B5CF6,color:#fff
style UI fill:#06B6D4,color:#fff
style Telegram fill:#06B6D4,color:#fff
📖 有关详细架构文档、请求流程和部署选项,请参阅 ARCHITECTURE.md
MCPAgent/
├── .env.example # 环境变量模板
├── .env # 您的配置(从.env.example创建)
├── agent/ # 使用Agno框架的AI代理
│ ├── agent.py # 带有系统提示的主要代理
│ └── agno.db # 代理的SQLite数据库
├── server/ # 带有MCP服务器的FastAPI后端
│ ├── main.py # API路由和端点
│ ├── store.py # SQLite数据存储
│ ├── models.py # Pydantic数据模型
│ ├── config.py # 配置设置
│ ├── mcp_server.py # MCP协议服务器
│ ├── start.py # 服务器初始化及启动
│ └── expenses.db # 交易数据库
└── client/
├── agent-ui/ # Next.js Web界面
└── telegram-bot/ # Telegram机器人客户端
# 安装Python依赖
pip install -r server/requirements.txt
pip install agno openai python-dotenv
# 复制示例并添加您的API密钥
cp .env.example .env
# 编辑.env并添加您的OPENAI_API_KEY
cd server
# 检查依赖并初始化数据库
python start.py
# 启动MCP服务器(在一个终端中)
python start.py --mcp
# 启动API服务器(在另一个终端中)
python start.py --api
cd agent
python agent.py
与AI代理聊天:
server/main.py) - 标准REST API,具有CRUD操作server/mcp_server.py) - 包装API并将其作为MCP工具公开agent/agent.py) - 连接到MCP服务器并自动发现工具用户输入 → AI代理 → MCP服务器 → FastAPI → SQLite
↓
工具选择与执行
↓
自然语言响应
GET /transactions - 列出所有交易POST /transactions - 创建新交易PUT /transactions/{id} - 更新交易DELETE /transactions/{id} - 删除交易GET /transactions/search?q= - 搜索交易GET /summary - 财务总结GET /summary/categories - 分类分解GET /health - 健康检查完整API文档:http://localhost:8002/docs
start.py脚本管理服务器初始化和启动:
# 检查依赖并初始化数据库
python start.py
# 只启动MCP服务器
python start.py --mcp
# 只启动API服务器
python start.py --api
# 自定义端口
python start.py --api --port 8000
python start.py --mcp --port 10000
start.py做了什么:
AI代理可以:
.env)OPENAI_API_KEY=your_key_here # AI代理所需
HOST=localhost # 服务器主机
PORT=8002 # API服务器端口
MCP_HOST=localhost # MCP服务器主机
MCP_PORT=9002 # MCP服务器端口
server/config.py)agent/agent.py)缺少依赖项?
pip install -r server/requirements.txt
pip install agno openai python-dotenv
数据库未初始化?
cd server && python start.py
端口已被占用?
python start.py --api --port 8003
python start.py --mcp --port 9003
代理无法连接到MCP?
python start.py --mcpagent/agent.py中的MCP URL(默认:http://localhost:9002/mcp)此项目包括关于实际AI代理实现的展示:
打开幻灯片以了解更多关于AI代理和MCP协议的信息。
此项目是基于并受到以下开源项目的启发而构建的:
特别感谢这些项目及其维护者,使AI代理开发变得易于访问且有趣!🙏
MIT
使用AI代理和MCP构建,充满爱心❤️