MCP模型上下文协议实战:AI Agent接入外部工具与数据源的配置方案

AI Agent要真正落地,绕不开外部工具和私有数据源的接入。模型上下文协议(Model Context Protocol,MCP)把工具、数据源、提示词统一封装成标准接口,开发人工智能应用时不再需要为每个外部系统单独写适配层。协议由Anthropic提出后,OpenAI、Google等主流模型厂商相继跟进,目前已经是AI工具链里事实上的接入标准。本文从协议机制讲起,给出一套可直接运行的MCP服务端与客户端接入配置。

MCP协议的核心机制与AI工具链接入流程

MCP采用客户端-服务端架构。模型宿主(如桌面客户端、Agent框架)作为MCP Client,通过标准传输层连接到一个或多个MCP Server,Server负责暴露三类能力:

  • Tools:可被模型调用的函数,对应外部操作,如查天气、查库存、执行SQL。
  • Resources:只读的数据源,如文件、数据库记录、配置信息。
  • Prompts:可复用的提示词模板,供用户在交互中快速启动特定流程。

一次典型调用链路是:Agent收到用户请求,把问题交给大模型,模型在生成过程中判断需要调用某个工具,客户端把这个调用请求发给MCP Server,Server执行后把结构化结果回传给模型,模型再生成最终回答。整个链路里模型不直接接触外部系统,权限、限流、审计都集中在MCP Server一层,工程上更容易管理。

MCP Server开发实战:从零实现一个天气查询工具

服务端官方SDK支持Python和TypeScript,先用Python实现一个带工具的服务端。示例依赖mcp包:

pip install "mcp[cli]" httpx
from mcp.server.fastmcp import FastMCP
import httpx

mcp = FastMCP("weather-server")

@mcp.tool()
def get_weather(city: str) -> str:
    # 按城市名查询当前天气,返回温度与天气状况
    url = f"https://wttr.in/{city}?format=j1"
    resp = httpx.get(url, timeout=10)
    data = resp.json()["current_condition"][0]
    return f"{city}: {data['temp_C']}℃, {data['weatherDesc'][0]['value']}"

if __name__ == "__main__":
    mcp.run(transport="stdio")

transport使用stdio时,服务端通过标准输入输出与客户端通信,无需开放端口,适合本地Agent进程内挂载。生产环境想支持多客户端并发访问,改用streamable-http传输,服务端以HTTP服务形式对外提供。

MCP客户端接入:在Agent应用中注册并调用工具

客户端侧用SDK建立会话并调用工具,以Python为例:

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
import anyio

async def main():
    server_params = StdioServerParameters(
        command="python",
        args=["weather_server.py"]
    )
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print("可用工具:", [t.name for t in tools.tools])
            result = await session.call_tool("get_weather", {"city": "Beijing"})
            print(result.content)

anyio.run(main)

接入后,Agent框架(如LangGraph、LlamaIndex)会把MCP Server的工具列表合并进模型可调用工具集。工具返回结果进入模型上下文,模型据此生成最终答复,整个过程不需要修改模型本身。

生产环境接入的权限与稳定性问题

MCP接入生产环境有三个问题要提前处理。一是权限最小化:给每个Server配置独立的API密钥与白名单,禁止一个工具越权访问无关系统。二是超时与重试:外部工具调用不可控,客户端必须给每次工具调用设超时,失败后让模型自行决定重试或降级,不能把异常直接抛给用户。三是日志与审计:工具调用涉及真实业务动作,调用参数、执行结果、耗时要全量记日志,方便追责和复盘。

工具定义要尽量克制,一个工具只做一件事,描述写清楚入参含义和返回结构,模型才能稳定地正确调用。工具数量控制在几十个以内,超过后模型容易出现选择困难,需要引入工具分组或先让模型通过检索选择工具子集。

小结

MCP把工具接入从每次重新适配变成一次标准化对接,服务端开发一次,任意兼容MCP的Agent客户端都能直接复用。落地时权限、超时、日志这三件事做好,MCP就能稳定支撑生产环境里的AI工具链。国内大模型平台也已陆续支持MCP服务商接入,企业私有工具走同样的协议接入即可。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/mcp-mo-xing-shang-xia-wen-xie-yi-shi-zhan-aiagent-jie-ru/

(0)
小编小编
上一篇 13小时前
下一篇 12小时前

相关推荐