企业代理后端系统

一个模拟真实企业代理基础设施的专业后端系统,支持自然语言输入并执行业务操作。

  • by Hugomg12
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Hugomg12/MCPServer

使用说明

🤖 AgentLab——MCP后端+AI代理

一个模拟真实企业代理基础设施的专业后端系统。自然语言输入,商业行为输出。

User: "Create an order for 5 units of SKU-001"
  └─► Agent API → LLM decides tools → MCP Backend → PostgreSQL
        └─► "Order created and stock reserved successfully."

里面有什么

  • MCP后端 --通过模型上下文协议公开业务工具(产品、库存、订单)
  • 代理API --接收自然语言,使用LLM自动调用正确的工具
  • n8n --协调工作流程(订单处理、付款回调)
  • PostgreSQL --具有事务和行级锁定的持久存储
  • 承载者身份 -所有MCP工具调用都需要有效的API密钥

🚀 入门

先决条件

  • Docker桌面正在运行
  • A. .env 根目录中的文件(复制自 .env.example 并填写数值)
cp .env.example .env
# Edit .env with your values

开始一切

docker compose up -d --build
服务 URL
n8n http://localhost:5678
MCP后端 http://localhost:8000/mcp
代理API http://localhost:9000

第一次设置--创建数据库模式

# Windows (PowerShell)
Get-Content db/schema.sql | docker exec -i agentlab_postgres psql -U n8n -d n8n

# Mac / Linux
docker exec -i agentlab_postgres psql -U n8n -d n8n < db/schema.sql

停止一切

docker compose down

⚠️ 从不使用 docker compose down -v --它删除包括数据库在内的所有数据。


🧪 测试代理

POST http://localhost:9000/chat
Content-Type: application/json

{ "message": "Create a product SKU-001 with 50 units of stock" }
{ "message": "How much stock does SKU-001 have?" }
{ "message": "Create an order for 3 units of SKU-001 and reserve the stock" }

检查 trace 在响应中的字段中查看代理进行的每个工具调用。


📁 项目结构

MCPServer/
├── services/
│   ├── mcp-backend/        # MCP server (FastMCP + asyncpg)
│   │   └── src/
│   │       ├── app/        # Config, DB pool, MCP app
│   │       └── tools/      # Business tools (products, stock, orders)
│   └── agent-api/          # AI agent (FastAPI + Groq/Llama)
│       └── src/
├── workflows/              # n8n workflow exports (JSON)
├── db/
│   └── schema.sql          # Database schema
├── docker-compose.yml
└── .env.example

🔧 环境变量

复制 .env.example 到 .env 并填写:

变量 描述
POSTGRES_DB 数据库名称
POSTGRES_USER 数据库用户
POSTGRES_PASSWORD 数据库密码
MCP_API_KEY MCP身份验证的承载令牌
GROQ_API_KEY Groq API密钥(在console.Groq.com上免费)
N8N_ENCRYPTION_KEY n8n加密的随机字符串