M
MCP Funccall Agent
by @QD1999
MCP server by QD1999
Created 6/11/2026
Updated about 2 hours ago
README
Repository documentation and setup instructions
AI Agent 系统(通义千问原生 Function Calling + LangGraph + MCP 本地工具)
项目简介
基于 通义千问大模型(原生 Function Calling)+ LangGraph 框架 + MCP 模型上下文协议 搭建的 AI 智能机器人。
架构说明
┌──────────┐ 原生 Function Calling ┌──────────────┐ MCP 协议 ┌────────────┐
│ 通义千问 │ ◄─────────────────────► │ Agent (应用) │ ◄────────────► │ MCP Server │
│ (LLM) │ tools=定义, tool_calls │ LangGraph │ 工具发现/调用 │ (本地工具) │
└──────────┘ └──────────────┘ └────────────┘
- Function Calling:通义千问原生
tools参数传入工具定义,LLM 返回结构化tool_calls(不再用 prompt 拼 JSON) - MCP:标准化工具接入协议,负责工具的注册、描述、调用
- LangGraph:编排 LLM 思考和工具执行的循环流程
核心功能
- 本地工具:价格折扣计算、城市天气查询
- LangGraph 流程:LLM 思考 → 条件路由 → MCP 工具调用 → 结果返回(循环直到 LLM 不再需要工具)
- 会话记忆:Checkpoint 状态持久化,支持多轮上下文
- 大模型底座:阿里通义千问 qwen-turbo(原生 Function Calling)
快速开始
1. 安装依赖
pip install -r requirements.txt
2. 配置 API Key
# macOS / Linux
export DASHSCOPE_API_KEY="你的通义千问API Key"
# Windows (CMD)
set DASHSCOPE_API_KEY=你的通义千问API Key
# Windows (PowerShell)
$env:DASHSCOPE_API_KEY="你的通义千问API Key"
或者直接修改 agent.py 中的 API_KEY 变量。
3. 运行
python agent.py
(MCP 服务端由客户端自动启动,无需手动运行)
项目结构
mcp/
├── agent.py # 主 Agent(LangGraph 流程编排 + Function Calling)
├── mcp_client.py # MCP 客户端(启动服务端子进程 + 工具格式转换)
├── mcp_server.py # MCP 服务端(本地工具注册)
├── requirements.txt # Python 依赖
├── README.md # 项目说明
└── .gitignore
Function Calling vs Prompt JSON(对比)
| 对比维度 | 原生 Function Calling(当前) | Prompt JSON(旧方式) |
|---------|---------------------------|---------------------|
| 工具传入 | Generation.call(tools=[...]) | 拼到 system prompt 里 |
| LLM 返回 | 结构化 tool_calls(含 id/name/arguments) | 自由文本中的 JSON |
| 可靠性 | 高(模型专门训练) | 低(可能格式错误、编造工具) |
| 多工具调用 | 原生支持 | 需自行处理 |
| 与 MCP 协作 | MCP 工具 → 转换 → API 格式 | MCP 工具 → 拼文本 → prompt |
Quick Setup
Installation guide for this server
Install Package (if required)
uvx mcp_funccall_agent
Cursor configuration (mcp.json)
{
"mcpServers": {
"qd1999-mcp-funccall-agent": {
"command": "uvx",
"args": [
"mcp_funccall_agent"
]
}
}
}