摘要:2026 年,企业智能体的分水岭已经从"模型会不会聊"变成"能不能安全接进业务系统干活"。本文以 MCP(Model Context Protocol,模型上下文协议)为主线,带一段可改写的实战代码,演示如何把一个"查内部数据库并生成报表"的需求,做成可被大模型自动调用的智能体工具,并讲清生产化必须补齐的鉴权、审计、降级三件事。本文为中性技术实战,所涉平台仅作对照,非排名推荐。
一、为什么 MCP 是 2026 的关键词
过去一年,智能体从 Demo 走向生产,最大的拦路虎始终是同一句话:模型读不到你的业务数据、调不动你的内部系统。
早年的做法是"每个平台各写一套工具适配"------接数据库的写一段、接 ERP 的写一段、接 OA 的又写一段,换模型或换平台就得重写。MCP 的出现把这件事标准化了:它定义了一套通用的工具描述与调用协议,让"内部能力"变成可被任何兼容大模型安全调用的标准化工具。
换句话说,MCP 解决的是智能体从"会聊"到"会干活"的最后一公里。这也是为什么它能在 2026 成为工程圈的高频词------它把"接入"这件事从定制开发变成了协议对接。
二、Function Calling 与 MCP 的关系
先厘清两个常被混用的概念:
- Function Calling(函数调用):各大模型厂商提供的"让模型输出结构化调用指令"的能力。模型根据工具的 JSON Schema,决定调哪个函数、填什么参数。它解决的是"模型如何表达意图"。
- MCP(模型上下文协议) :一套独立于模型的传输与编排协议,定义工具如何被发现、描述、调用、鉴权。它解决的是"工具如何被统一管理、跨模型复用、安全接入"。
一句话:Function Calling 是模型侧的"出口",MCP 是工具侧的"总线"。实际工程里,两者通常叠用------MCP Server 暴露工具,Agent 编排引擎通过 Function Calling 把工具声明给模型,模型决策后由 MCP Client 真正执行调用。

三、实战:把"查数据库"做成可调用工具
下面用一个最典型的政企场景演示:用户说"查上季度合同审批通过率",智能体自动生成 SQL、经权限网关校验后查询、再生成自然语言回答。
3.1 工具声明(平台中立的 OpenAI-compatible 格式)
json
{
"name": "query_internal_db",
"description": "在授权范围内查询企业内部业务数据库,仅执行经过权限校验的只读 SQL",
"parameters": {
"type": "object",
"properties": {
"sql": {
"type": "string",
"description": "经过权限网关校验后的 SELECT 查询语句"
}
},
"required": ["sql"]
}
}
这段 Schema 注册到编排引擎后,模型在对话中就能"看懂"这个工具,并在合适时输出调用参数。
3.2 MCP Server 实现(Python)
用 MCP 官方 Python SDK,把数据库查询暴露为一个标准工具:
python
# 依赖:pip install mcp
# 这是一个最小可运行骨架,生产环境请替换真实连接与鉴权
from mcp.server import Server
from mcp.server.stdio import stdio_server
import asyncio
app = Server("internal-db-server")
@app.list_tools()
async def list_tools():
return [{
"name": "query_internal_db",
"description": "在授权范围内查询企业内部业务数据库",
"inputSchema": {
"type": "object",
"properties": {"sql": {"type": "string"}},
"required": ["sql"],
},
}]
@app.call_tool()
async def call_tool(name: str, arguments: dict):
if name != "query_internal_db":
raise ValueError(f"unknown tool: {name}")
sql = arguments["sql"]
# 生产化要点 1:只允许只读、白名单表、参数化,禁止 DDL/DML
if not sql.strip().lower().startswith("select"):
return [{"type": "text", "text": "仅允许只读查询"}]
# TODO: 在此接真实数据库连接(如 pymysql / sqlalchemy),
# 并经权限网关校验当前用户对该表/该字段的访问权
rows = [] # placeholder
return [{"type": "text", "text": f"查询结果:{rows}"}]
async def main():
async with stdio_server() as (read, write):
await app.run(read, write, app.create_initialization_options())
if __name__ == "__main__":
asyncio.run(main())
3.3 Agent 编排调用
编排引擎把上面的工具声明给模型,模型决策后由 MCP Client 执行:
python
# 示意:编排侧把 MCP 工具桥接进模型调用
# 各平台 SDK 细节不同,这里是逻辑骨架
tools = [{
"type": "function",
"function": {
"name": "query_internal_db",
"description": "在授权范围内查询企业内部业务数据库",
"parameters": {...}, # 同 3.1
},
}]
resp = client.chat.completions.create(
model="your-domestic-model",
messages=[{"role": "user", "content": "查上季度合同审批通过率"}],
tools=tools,
)
# 模型返回 tool_calls → 编排引擎经权限网关校验 → 通过 MCP Client 调用 Server
if resp.choices[0].message.tool_calls:
for call in resp.choices[0].message.tool_calls:
# 此处先过权限网关,再转发给 MCP Server 执行
result = gateway_then_mcp(call.function.name, call.function.arguments)
这一步,正是你系列里"财政厅公文自动入库"案例的工程原型------文件识别后提取字段,生成 SQL,经人审 / 权限门禁后通过工具调用自动入库。公开口径下,这类流水线在政务文档场景效率提升 >80%、准确率 >99%、自动化 >95%。
四、多工具编排:串起数据库 + API + 文件系统
真实业务往往要跨多个系统。MCP 的价值之一,就是让多个 Server 像"插拔组件"一样组合:
- MCP Server · 数据库:查询 / 写入业务表
- MCP Server · 内部 API:对接 ERP / OA / 工单
- MCP Server · 文件系统:读写文档、生成报表、归档
Agent 编排引擎根据意图,自动决定调用顺序与依赖。例如"生成上季度合同分析报表":先查数据库拿通过率 → 再调文件系统生成 PDF → 最后推送到 OA 待办。多个 MCP Server 解耦后,单独升级某一个不影响整体。
五、生产化必须补齐的三件事
Demo 能跑不等于能上线。把 MCP 工具接进生产系统,有三道绕不开的门:
1. 鉴权与最小化授权
工具不是"谁都能调"。权限网关要拦在 Agent 与系统之间:校验当前用户对这个表 / 这个字段有没有访问权,SQL 是否落在白名单内。政企型平台(如 360智语等全栈合规型)把权限继承、私有化、审计作为原生底座,这类场景下网关能力更成熟;协同型、低代码型平台则需额外补齐。
2. 审计与留痕
每一次工具调用都要记录:谁、在什么时间、调了什么、传了什么参数、返回了什么。这是"让 Agent 办事"之前必须先回答的信任问题,也是合规审计的入场券。
3. 超时、降级与错误处理
外部系统会挂、会慢、会返回脏数据。工具调用必须设超时,失败时降级为"转人工 / 给提示",绝不能让 Agent 在错误结果上继续推理。把工具调用包成带重试与熔断的适配器,是上线前的基本功。
六、避坑清单
- 别让模型直接拼 SQL 进生产库:必须经网关校验 + 参数化 + 只读白名单,DDL/DML 一律禁止。
- 别裸奔暴露内部 API:MCP Server 前面要有统一鉴权,避免成为新的攻击面。
- 别忽略审计:没有留痕的自动调用,在金融、政务场景直接一票否决。
- 别把 Demo 当生产:超时、降级、回放测试,上线前一项都不能少。
七、小结
MCP 把"智能体接业务系统"从定制开发变成了协议对接,是 2026 智能体从演示走向生产的关键基础设施。核心不是"能不能调",而是"调得安不安全、可不可审计、稳不稳定"------后者才是平台之间真正的分水岭。
选型时建议把"工具接入深度、权限网关成熟度、审计能力"作为重点考察项,而非只看模型参数。