当前位置: 首页 > news >正文

[智能体-59]:@mcp.tool () 语法完整详解

基于FastMCP标准工具注册装饰器

1. 作用

@mcp.tool()将普通 Python 函数注册为 MCP 协议可远程调用工具。

注册后,客户端通过 MCP 报文就能MCP Server自动调用该函数,无需程序员手动路由。

@mcp.tool () 命名映射规则

1. 无参写法:默认以函数名作为对外工具名

python

运行

@mcp.tool() def add(a: float, b: float) -> float: return a + b

对外工具标识:add

2. 传 name 参数:自定义工具名,与原函数名解耦

python

运行

@mcp.tool(name="math_sum") def add(a: float, b: float) -> float: return a + b

对外工具标识:math_sum,内部仍执行add函数逻辑

3. 补充参数互不干扰

description、deprecated 仅做备注标记,不改变工具检索名称

python

运行

@mcp.tool(name="subtract_calc", description="数值减法") def sub(a: float, b: float) -> float: return a - b

对外调用名:subtract_calc


2. 基础语法结构

python

运行

from mcp.server.fastmcp import FastMCP # 1. 创建服务实例 mcp = FastMCP("服务名") # 2. 工具注册装饰器 @mcp.tool(可选参数) def 函数名(形参: 类型注解) -> 返回类型: """工具描述文档""" # 业务逻辑 return 数据

3. 装饰器可选参数

3.1 name 自定义工具名

python

运行

@mcp.tool(name="calc_add") def add(a: float, b: float) -> float: return a + b

客户端调用时用calc_add匹配函数。

3.2 description 强制描述

python

运行

@mcp.tool(description="两个浮点数求和计算")

3.3 deprecated 标记废弃

python

运行

@mcp.tool(deprecated=True)

4. 函数参数规范(强制要求)

  1. 必须写类型注解int/float/str/bool/dict/list
  2. 支持默认参数
  3. 不支持动态不定参*args/**kwargs

示例合法参数

python

运行

@mcp.tool() def user_info(name: str, age: int = 18) -> dict: return {"name": name, "age": age}

5. 返回值规范

支持返回类型:

  • 基础类型:int, float, str, bool
  • 复合类型:dict, list框架自动序列化为 MCP JSON 协议报文

python

运行

# 合法 return 100 return {"code":0, "data":"ok"} return [1,2,3]

6. 文档字符串作用(必填建议)

函数内三引号注释,会自动同步给客户端大模型用于 AI 自动理解工具用途、自动填参。

python

运行

@mcp.tool() def add(a: float, b: float) -> float: """ 实现两个数字相加 :param a: 加数1 :param b: 加数2 :return: 相加结果 """ return a + b

7. 底层运行机制

  1. 代码加载时,装饰器自动扫描函数签名、参数、注释
  2. 存入 MCP 内部工具注册表
  3. 客户端发起call_tool请求
  4. 框架按函数名匹配、校验参数、自动执行
  5. 结果封装成标准 MCP 响应返回

8. 完整可运行样板

python

运行

from mcp.server.fastmcp import FastMCP mcp = FastMCP("ToolDemo") @mcp.tool(name="math_add", description="浮点加法运算") def add(a: float, b: float) -> dict: """两数相加""" return {"sum": a + b} if __name__ == "__main__": mcp.run(transport="stdio")

9. 常见报错踩点

  1. 无类型注解→ 注册失败
  2. 环境没装 mcp→ 找不到mcp.server.fastmcp
  3. 参数写法不规范→ 客户端调用校验失败
  4. 函数内部异常→ MCP 返回调用错误报文
http://www.jsqmd.com/news/881165/

相关文章:

  • 如何将普通汽车升级为智能驾驶伙伴:openpilot开源项目深度解析
  • Pushd新手入门:iOS/Android/Windows推送协议一键集成完整指南
  • 用Python解放你的记忆:Genanki自动化Anki卡片生成终极指南
  • 神经网络架构自动设计指南:用DARTS告别手动调参烦恼
  • 别再只盯着Transformer了!手把手带你用Python可视化对比RNN、Transformer和Mamba架构
  • ipfs.pics常见问题解答:从存储机制到隐私保护全解析
  • 终极指南:如何快速搭建免费的B站动态推送QQ机器人
  • 用Python玩转DEAP情感数据集:从数据加载到EEG信号可视化(保姆级教程)
  • Docbox测试驱动开发实践:确保API文档质量的最佳方法
  • LightGBM分类回归保姆级教程:从鸢尾花数据集到房价预测(附Python代码)
  • 如何从零开始构建AI社会模拟:AgentSociety终极指南
  • 打破终端边界:WaveTerm如何用插件化设计重塑开发者工作流
  • 如何用FactoryBluePrints蓝图库解决《戴森球计划》工厂布局三大难题
  • 北欧路线老年旅行团哪家体验感好?北欧路线老年旅行团推荐 - 品牌2025
  • 如何高效使用Python SoundCloud下载器:打造个人音乐库的完整指南
  • 用100行PyTorch代码实现扩散模型:从理论到实战的完整指南
  • FactoryBluePrints:戴森球计划终极蓝图仓库使用指南
  • 如何在macOS上快速创建PDF文件:终极虚拟打印机解决方案
  • AutoWall终极指南:为Windows桌面注入生命力的免费动态壁纸引擎
  • 征集暑期亲子研学北京的靠谱机构,要求经验多,专业程度高 - 品牌2025
  • [智能体-61]:从硬编码智能体到标准化协议:MCP如何重构AI工具调用生态
  • 终极图像描述评估指南:5大核心指标深度解析与应用实践
  • June安全防护手册:保护你的论坛免受常见Web攻击的10个技巧
  • 伊辛机硬件架构与组合优化问题求解
  • JEECG-Boot企业级接口防重与并发控制:双引擎保障系统稳定性的实战指南
  • MoveIt2机器人运动规划终极指南:从入门到精通的完整教程
  • CSharpVerbalExpressions核心API详解:StartOfLine、Then、Maybe等方法的终极教程
  • MobX进阶教程:如何自定义observables和扩展MobX功能
  • ARM SVE指令集:UQINCH/UQINCW向量饱和递增详解
  • 终极PS3游戏管家:webMAN-MOD让你的游戏机重获新生