最近聊 Agent、本地私有数据对接大模型,MCP(Model Context Protocol,模型上下文协议)的热度越来越高,很多人会把它和普通 Function Call、RAG、后端API混在一起。如果你手里有本地数据库、大量内部文档、政策资源,想安全地交给大模型做检索、解读、数据分析,MCP 恰恰是一个非常合适的方案。

很多人第一句话会问:MCP 到底是什么?

简单一句话:MCP 是一套开源、中立的通信标准,用来标准化 AI 客户端和外部数据源、工具之间的连接,业内常把它比作 AI 生态里的 USB‑C 接口。就像 USB‑C 统一了外设和电脑的连接,不用每个设备单独写一套驱动;MCP 统一了“外部能力怎么暴露给大模型前端”这件事。

它不是大模型,不是向量库,也不是一个现成的检索程序。它只是一套约定好的通信规范,底层基于 JSON‑RPC 2.0,由 Anthropic 在2024年底发布,现在已经走向中立开放,目标就是打破各家AI插件的孤岛问题。

它到底解决了什么痛点

在 MCP 出现之前,我们对接私有数据给大模型,方案非常碎片化。

如果你用 Cursor,就要适配 Cursor 的扩展;用 Claude Desktop,就要写 Claude 的插件;自研前端,又要自己封装一套 function call 逻辑。同样一套政策检索能力,换一个AI客户端就要重新适配一遍,代码无法复用。

同时,大模型本身是“孤立”的。模型的知识停留在训练截止时间,它看不见你本地 MySQL、内网文档库、离线政策原文。常规做法要么手动复制粘贴文本进对话,容易超限、繁琐;要么把检索逻辑硬编码在 Agent 里面,耦合很重。

另外还有一个容易混淆的点:Function Call 是大模型侧的能力,定义的是“模型怎么告诉外面我要调用函数”;而 MCP 是外部服务侧的标准,定义“外部数据、工具怎么对外暴露能力”。

架构上分为 Host、MCP Client、MCP Server 三方:Host 就是我们常用的AI客户端,比如 Cursor、Claude Desktop、自研对话页面;MCP Server 是我们自己写的程序,用来封装数据库访问、文件读取、业务逻辑;两边通过MCP协议交互,模型不用关心底层是OpenAI、Anthropic还是国产大模型。

MCP 的三个核心能力:Resource、Tool、Prompt

这三者是开发MCP服务最核心的原语,放到我们的政策数据库场景里,很容易理解。

Resource,只读资源,偏向“名词”,用来读取固定、只读的上下文。比如我们的政策库,可以设计 URI policy://{policy_id},模型拿到ID之后,读取单篇政策全文,放进对话上下文。它只做读取,不能修改数据,适合已知目标文件、已知条目ID的精读场景。

Tool,可调用工具,偏向“动词”,是模型主动发起的动作,也是政策库场景里最常用的。我们可以写一个 search_policy 的检索工具,模型根据用户问题,自主传入关键词、发文部门、时间范围,去数据库做筛选检索,返回摘要、标题、ID列表。如果模型觉得某几条政策需要细读,再调用 Resource 拉取原文。
这个流程就是典型的先粗筛、后精读,避免一次性把成千上万条政策全部塞进上下文,token 可控,不容易爆窗口。我们还可以额外做统计类工具,比如按部门、年份统计政策发文数量,直接返回聚合结果,不需要把原文送入模型。

Prompt,可复用提示模板,把代码评审、政策合规检查、条款对比这类固定工作流封装成模板,客户端直接拉取使用,不用每次手动复制提示词。

两种运行模式,很多人在这里踩坑

MCP Server 是一段独立代码,但它不一定是我们印象里监听端口的HTTP API服务,两种传输模式要分清。

第一种是 stdio,本地首选方案,也是政策这类敏感、本地数据场景优先推荐的。它不监听端口,不走网络。Host 在需要的时候,自动拉起这个Python脚本作为子进程,通过 stdin/stdout 管道收发 JSON-RPC 消息,日志走 stderr。数据库查询逻辑直接写在这个脚本内部,进程内部连接本地数据库。我们不需要手动后台常驻启动,会话结束进程自动退出,天然隔离,涉密数据不会向外传输。调试的时候可以手动运行脚本,配合官方 Inspector 查看报文、排查问题。

第二种是 Streamable HTTP,也就是网络服务模式。它会监听端口,是常驻的Web服务,支持多客户端、token鉴权,适合内网多台机器、多个团队共用同一套政策检索服务。但它不是普通的REST接口,是基于MCP规范的长会话RPC,必须使用MCP Client对接,不能直接用axios随便POST请求。

简单选型:单机本地、涉密政策库、只给自己当前AI客户端使用 → stdio;多机器共享、团队内网服务 → Streamable HTTP。

结合政策数据库场景,完整的业务链路

你的场景非常典型:本地数据库存放大量政策资源,希望交给大模型做检索、解读、对比、数据分析。标准链路是这样:
用户提出问题 → 大模型调用 search_policy 工具检索数据库,返回政策摘要列表 → 模型判断哪些条目需要原文 → 调用 Resource 读取对应政策全文 → 将筛选后的原文作为上下文,交给模型完成后续分析、合规判断、报告撰写。

这套方案对比传统RAG有一个明显优势:检索逻辑、SQL防注入、权限控制、结果截断、限流全部封装在独立MCP服务里。只要客户端支持MCP,直接接入,一套能力到处复用。

但有一点必须清醒:MCP 本身不自带安全防护。数据库查询一定要做参数化SQL,禁止模型自由编写任意SQL;要做白名单、强制LIMIT、只开放视图,避免全表扫描和数据泄露;区分只读资源和可执行工具,做好权限边界。

它不能做什么,避免预期偏差

MCP 不会替代大模型,不会替代向量检索,也不能自动解决注入、权限漏洞。它只是一个标准化的中间层通道。
它解决的是“连接方式”的标准化,检索、向量化、权限校验、业务逻辑,依然需要我们自己写在MCP Server里面。

最后小结

如果你经常需要把本地私有数据、内网数据库、离线文档交给大模型做分析,MCP 是一个值得尝试的方案。
它给了你一种标准、安全、可复用的方式:把数据库查询、资源读取封装成独立服务,让任意支持MCP的AI客户端按需调取上下文,而不是把所有数据一次性丢进对话窗口。
对于政策库、企业台账、内部业务数据这类私有化场景,stdio模式的MCP服务,是成本很低、可控性很强的落地路线。


如果你打算上手,优先从 stdio 模式的 FastMCP 开始,先实现一个检索工具+单政策读取资源,用 Inspector 调试通,再接入 Cursor 或者自研客户端。

Logo

更多推荐