【知识点++】LLM为何能精确构建MCP服务入参?
【知识点++】LLM为何能精确构建MCP服务入参?
“知识点++”主题专注于记录日常学习中有意思的知识点,并用一篇文章阐述清楚,选题可能是某个概念、工具、原理、应用等。
省流总结:
LLM之所以能“知道”应调用哪个MCP服务及其参数,并不是源自模型本身具备实时解析接口的能力,而是依赖于智能体框架在运行时自动收集、整理所有可用服务的描述和参数定义(schema)。
这些结构化信息通过特定的Prompt或函数调用协议作为上下文注入LLM。LLM基于用户输入和这些服务信息推理出是否需要发起服务调用,并以标准化格式(如JSON)输出调用指令和参数。
框架再解析LLM输出并完成实际调用,并将结果返回给大模型进行后续处理。

前言
你是否好奇,大语言模型(LLM)智能体为何能准确地选取并调用合适的MCP服务?并且能精确构造调用所需参数?

本文将梳理LLM与MCP服务集成时的入参构建与调用机制,旨在解答这一核心问题。
背景知识
LLM的能力与局限
LM本质上并不能“主动理解”或“直接调用”MCP服务。它的能力来源于大规模的训练语料(文本、代码、API文档等),通过概率建模推断服务参数及调用方式。具体而言:
- 当被询问某服务的参数时,LLM会结合自身的训练知识和上下文提示,生成合理的参数列表;
- LLM本身无法动态查询或读取实际API定义,只能基于预先提供的描述、示例或schema做出推断。
理解服务入参的常见方法
无论是人还是LLM,理解一个服务的入参通常有以下几种方式:
- 查阅官方文档:最可靠的方法,文档会列出每个接口的入参、类型、含义、是否必填等;
- 代码注释/接口定义:查看API的接口说明、OpenAPI/Swagger文件、代码注释等;
- 示例代码或用例:通过官方或社区提供的示例调用,了解入参的实际用法;
- 问答和说明文字:比如通过与工程师交流或在LLM中提问获取信息。
智能体框架的作用
LLM 相当于“认知与决策中枢”,负责理解、推理和决策。智能体框架则是“感知与执行系统”,负责感知、执行、组织、保护和管理整个调用行为。可类比大脑和躯干。

在MCP服务调用链路中,智能体框架主要承担如下职责:
- 管理和传递工具元数据:自动收集、维护可用服务(MCP接口)的结构化元数据信息(schema),供LLM查询和调用;
- 调度与执行服务调用:根据LLM生成的调用指令,负责实际API调用、结果处理及异常管理。
调用流程解析
FastMCP 是一个Python实现的MCP协议框架,用于快速构建MCP服务端和客户端。其核心价值在于自动化工具注册、参数schema生成和调用协议封装,使AI开发者能高效开放和集成各类工具、资源和交互能力。
下面以FastMCP举例,分解MCP服务调用流程:
关键环节
1. 参数信息提取
@mcp.tool()
是FastMCP提供的装饰器,用于将普通Python函数注册为MCP工具。装饰器在注册阶段自动解析函数签名、类型注解、docstring等,生成标准化的参数schema并纳入工具元数据库。
@mcp.tool(name="add_numbers", description="计算两个数的和") def add_numbers(a: int, b: int) -> int: return a + b
提取的元信息包括:
- 工具名(
name
):"add_numbers" - 描述(
description
):"计算两个数的和" - 参数(
parameters
):a(int类型),b(int类型) - 返回值类型(
returns
):int
2. 数结构的上下文注入与协议支持
- Schema 自动生成与提示词注入
MCP框架会为每个工具自动生成符合OpenAPI, JSON Schema等规范的参数定义。在与LLM交互时,这些schema以结构化文本或协议数据作为上下文注入Prompt,使LLM“感知”工具能力边界。示例上下文片段:
你可以调用如下工具:
工具名:add_numbers
描述:计算两个数的和
参数:
- a:整数
- b:整数
返回:整数
- 函数调用协议集成
当前主流LLM(如GPT-4、Claude、GLM)已原生支持函数调用协议。框架将参数schema以规范格式发送给模型,模型据此直接以标准JSON或类似结构输出调用参数。框架再将其映射到实际函数参数,完成调用。

3. 参数类型与描述的准确性保障
- 使用Python 类型注解和docstring,自动生成高可靠的schema;
- 对于复杂类型(如 List、Dict、自定义对象),建议采用Typing模块标准注解(如List[int]、Dict[str, Any])确保schema更精确。
流程示意图

实际流程举例

结语
LLLM对于MCP服务入参的“理解”来源于训练知识与运行时上下文推理。它无法像程序一样动态读取接口定义,需依赖框架注入的schema和文档信息。若要保证调用的准确性,需规范维护服务schema,并通过框架自动注入上下文,从而让LLM获取到最新、最准确的工具和参数定义。
关注“肖恩聊技术”公众号,原创技术文章第一时间推送~
