news 2026/3/15 15:12:30

【MCP Tool Calling Agent 开发实战】从零构建高效 AI 代理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MCP Tool Calling Agent 开发实战】从零构建高效 AI 代理

文章目录

  • 目录
    • 引言
    • MCP 概述:为什么选择 MCP 构建 Tool Calling Agent?
    • 环境安装与项目设置
      • Prerequisites
    • 构建 MCP Server 和 Tool
      • 实战:集成数据库查询工具
      • 文件系统资源集成
    • 集成 LLM 与 Agent 开发
      • 代码执行优化:Anthropic风格
    • 实战示例:构建 GitHub + Database Agent
    • 最佳实践与注意事项

目录

引言

若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力!有问题请私信或联系邮箱:funian.gm@gmail.com

在2026年的AI开发领域,Model Context Protocol(MCP)已成为构建工具调用代理(Tool Calling Agent)的核心协议。
作为一个开放标准,MCP 标准化了LLM与外部工具的交互方式,让AI代理能够安全、高效地访问数据源、API和服务,而无需每次加载海量上下文。根据Anthropic和Composio的最新报告,MCP 已帮助开发者将代理的token消耗降低98%以上,同时提升了代理的自主性和可扩展性。

本文基于2026年最新的MCP SDK和框架(如FastMCP、OpenAI Agents SDK),从实战角度带你一步步构建一个支持工具调用的AI代理。我们将覆盖从环境搭建到真实场景应用的全过程,包括代码执行优化、文件系统集成和数据库查询。无论你是初学者还是资深工程师,这篇指南都能让你快速上手。

MCP 概述:为什么选择 MCP 构建 Tool Calling Agent?

MCP(Model Context Protocol)是一个客户端-服务器架构的协议,专为LLM提供上下文和工具访问。它通过JSON-RPC接口标准化工具执行,支持工具发现、认证和错误处理。相比传统工具调用,MCP的优势在于:

  • 高效性:代理只需按需加载工具定义,避免上下文爆炸。
  • 安全性:内置沙箱和路径验证,防止越权访问。
  • 可扩展性:支持文件系统、数据库、API等资源,支持动态资源(如file://logs/{date})。
  • 兼容性:集成OpenAI、Anthropic、Google ADK等主流LLM和框架。

在Agent开发中,MCP扮演“神经系统”角色:LLM(大脑)决策,MCP执行工具调用(肌肉)。典型架构包括:

  • MCP Server:暴露工具和资源(如Composio托管的GitHub工具)。
  • MCP Client:连接服务器,代理LLM调用。
  • Agent:结合LLM,处理任务如“创建GitHub Issue”。

2026年,MCP已演进到v2.1,支持进度报告和多模态工具。

环境安装与项目设置

Prerequisites

  • Python 3.10+
  • OpenAI/Anthropic API Key
  • pip安装:pip install fastmcp openai-agents python-dotenv

创建项目目录:

mcp-agent-demo/ ├── agent.py ├── server.py ├── run.py ├── .env └── requirements.txt

.env中配置:

OPENAI_API_KEY=sk-xxx MCP_TOOL_URL=https://mcp.composio.dev/github/sse?customerId=your_id

生成requirements.txt:

pip freeze>requirements.txt

构建 MCP Server 和 Tool

首先,创建一个简单的MCP Server,使用FastMCP框架。这是一个10行代码的起点:

fromfastmcpimportFastMCP mcp=FastMCP("Simple Calculator Server")@mcp.tool()defadd_numbers(a:int,b:int)->int:"""Add two numbers together"""returna+bif__name__=="__main__":mcp.run()

运行后,Server监听本地端口,暴露add_numbers工具。LLM可以通过MCP Client调用它。

实战:集成数据库查询工具

扩展到真实场景:构建一个安全的SQL查询工具。只允许SELECT查询,防止注入。

fromfastmcpimportFastMCP,ToolErrorfrompydanticimportBaseModelimportsqlite3# 假设使用SQLitemcp=FastMCP("Database Query Server")classQueryResult(BaseModel):rows:list[dict]count:int@mcp.tool()defquery_db(sql:str,limit:int=100)->QueryResult:"""Execute safe SQL query"""ifany(kwinsql.upper()forkwin["DROP","DELETE","UPDATE"]):raiseToolError("Only SELECT queries allowed")conn=sqlite3.connect('example.db')cursor=conn.cursor()cursor.execute(sql)rows=cursor.fetchall()conn.close()returnQueryResult(rows=rows[:limit],count=len(rows))if__name__=="__main__":mcp.run()

这个工具使用Pydantic验证输出,确保结构化返回。运行Server后,代理可查询如“SELECT * FROM users”。

文件系统资源集成

MCP支持资源路径,如动态日志读取:

importosfrompathlibimportPathfromfastmcpimportFastMCP,ToolError mcp=FastMCP("File System Server")BASE_DIR=Path("/safe/workspace")defvalidate_path(path:str)->Path:full_path=(BASE_DIR/path).resolve()ifnotstr(full_path).startswith(str(BASE_DIR)):raiseToolError("Access denied")returnfull_path@mcp.resource("file://{path}")defget_file(path:str)->str:file_path=validate_path(path)ifnotfile_path.exists():raiseToolError("File not found")returnfile_path.read_text()if__name__=="__main__":mcp.run()

代理可请求file://logs/2026-01-10获取日志,内置验证防止目录穿越。

集成 LLM 与 Agent 开发

使用OpenAI Agents SDK构建Agent,连接MCP Server。

agent.py中:

importosfromdotenvimportload_dotenvfromagentsimportAgentfromagents.mcpimportMCPServerSse load_dotenv()TOOL_URL=os.getenv("MCP_TOOL_URL")defbuild_agent():mcp_server=MCPServerSse({"url":TOOL_URL})agent=Agent(name="GitHub Manager",instructions="Manage GitHub repos: create issues, update PRs using MCP tools.",mcp_servers=[mcp_server],model="gpt-4o"# 或 claude-4.5)returnagent,mcp_server

run.py中异步运行:

importasynciofromagentimportbuild_agentfromagentsimportRunner TASK="Create an issue in repo 'user/repo' with title 'Bug Fix' and body 'Details here'."asyncdefmain():agent,mcp_server=build_agent()try:awaitmcp_server.connect()result=awaitRunner.run(agent,TASK)print("Result:",result.final_output)finally:awaitmcp_server.cleanup()if__name__=="__main__":asyncio.run(main())

首次运行会提示OAuth认证。Agent会自动推理、调用工具(如GitHub API),并返回结果。

代码执行优化:Anthropic风格

根据Anthropic的工程实践,使用MCP进行代码执行以减少token:

# 在Agent中添加代码执行工具@mcp.tool()asyncdefexecute_code(code:str)->str:"""Run Python code in sandbox"""# 使用restrictedpython或类似沙箱执行fromrestrictedpythonimportcompile_restricted_exec globs={"__builtins__":{}}compile_restricted_exec(code,globs)returnstr(globs.get('result','No result'))

这允许Agent编写循环/过滤代码,如处理大CSV文件而无需全传上下文。

实战示例:构建 GitHub + Database Agent

结合以上,构建一个端到端Agent:查询数据库,生成报告,创建GitHub Issue。

  1. 查询DB获取数据。
  2. 处理/过滤数据。
  3. 通过MCP GitHub工具创建Issue。

完整代码片段:

# 在Agent instructions中添加逻辑instructions=""" 1. Query DB for sales data. 2. Filter pending orders. 3. Create GitHub issue with summary. """# 运行结果示例result=awaitRunner.run(agent,"Generate sales report and log to GitHub.")

在生产中,使用进度报告:

fromfastmcpimportProgress@mcp.tool()asyncdefprocess_data(data:list,progress:Progress)->dict:total=len(data)processed=0foritemindata:# 处理processed+=1ifprocessed%10==0:awaitprogress.update(processed=processed,total=total)return{"done":True}

最佳实践与注意事项

  • 安全:始终验证输入,使用ToolError处理异常。限制率(如10 calls/min)。
  • 测试:用MCPTestClient写单元测试。
importpytestfromfastmcp.testingimportMCPTestClient@pytest.mark.asyncioasyncdeftest_query():asyncwithMCPTestClient(mcp)asclient:result=awaitclient.call_tool("query_db",{"sql":"SELECT 1"})assertresult.count>0
  • 性能:使用异步工具,避免阻塞。2026年推荐MoE模型如Claude 4.5以提升推理。
  • 常见坑:认证失败?检查OAuth。上下文溢出?用代码执行过滤数据。
  • 框架对比
框架优势适用场景
FastMCP轻量、快速开发自定义工具
OpenAI SDK集成LLM无缝生产代理
Google ADK云原生支持企业级部署
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 23:35:55

UG NX 光顺曲线串合并G1相切线

在 UG NX 中,将多条曲线光顺地合并成一条满足 G1 连续性(切线连续)的曲线,是进行高质量曲面建模的基础。核心概念:G1 连续性 G1 连续性意味着在两条曲线的连接点处,不仅位置重合,且切线方向相同…

作者头像 李华
网站建设 2026/3/11 20:25:36

论文相似度过高?五个实用技巧帮你高效优化文本内容

科学研究证实,全球变暖与极端气候事件频发具有显著关联性,量化分析显示环境温度升高会直接导致异常天气现象发生概率大幅提升。 首先,咱们聊聊人工降重的基本功 根据最新调研数据,近年来人工智能技术呈现出迅猛的发展态势&#…

作者头像 李华
网站建设 2026/3/12 14:36:18

学术研究加速器:9款AI写作工具从初稿到终稿实测

在学术论文撰写过程中,开题报告与正文的高效完成是研究者常见的难题。传统人工撰写模式虽然灵活性较高,但存在效率瓶颈,而现代人工智能技术能够实现内容的快速生成、重复率控制以及文本逻辑优化。实验数据显示,对9种主流智能写作平…

作者头像 李华
网站建设 2026/3/6 0:29:34

强烈安利!10款AI论文平台测评,本科生毕业论文必备

强烈安利!10款AI论文平台测评,本科生毕业论文必备 2026年AI论文平台测评:为何值得一看? 随着人工智能技术的不断进步,AI论文平台逐渐成为本科生撰写毕业论文的重要辅助工具。然而,面对市场上琳琅满目的选择…

作者头像 李华
网站建设 2026/3/13 23:49:59

9大AI写作工具横向对比:覆盖学术论文全周期的高效解决方案

学术论文写作中,开题报告与正文撰写往往面临效率挑战。相比传统人工写作的灵活性优势,AI技术显著提升了文本生成速度、重复率管理和逻辑结构优化能力。研究表明,通过对9类主流智能写作平台的评估,合理使用AI工具可提升学术创作效率…

作者头像 李华
网站建设 2026/3/13 8:05:04

深度测评10个AI论文写作软件,助本科生轻松搞定论文!

深度测评10个AI论文写作软件,助本科生轻松搞定论文! 1.「千笔」—— 一站式学术支持“专家”,从初稿到降重一步到位(推荐指数:★★★★★) 在众多AI论文写作工具中,「千笔」无疑是一款备受推崇的…

作者头像 李华