【AI】MCP模型上下文协议
基于端侧模型环境我来详细介绍MCPModel Context Protocol模型上下文协议。MCP 是什么维度说明本质开放协议标准用于AI模型与外部数据源/工具的双向连接发起者AnthropicClaude的母公司2024年11月开源核心目标让AI模型像USB-C接口一样标准化接入各类数据与工具当前状态已成为行业事实标准OpenAI、Google、微软等均已支持为什么端侧模型特别需要MCP端侧模型手机/PC本地运行的LLM面临的核心矛盾能力 ←→ 资源 ↑ ↓ 需要工具 但无法像云端模型那样 访问数据 自由调用API隐私/成本/延迟MCP解决这个断层标准化接口无需为每个工具写定制集成本地优先MCP Server可运行在本地数据不出设备安全隔离工具调用通过协议层管控而非模型直接执行MCP 架构端侧视角┌─────────────────────────────────────┐ │ 端侧模型Local LLM │ │ 如手机NPU运行的Qwen/Phi-4 │ └──────────────┬──────────────────────┘ │ ┌──────▼──────┐ │ MCP Client │ ← 内嵌在模型推理框架中 │ Host │ 如Ollama、LM Studio └──────┬──────┘ │ ┌──────────┼──────────┐ │ │ │ ▼ ▼ ▼ ┌───────┐ ┌───────┐ ┌───────┐ │MCP │ │MCP │ │MCP │ │Server │ │Server │ │Server │ │- 本地文件│ │- 浏览器 │ │- 系统API │ │- 数据库 │ │- 日历 │ │- 智能家居 │ └───────┘ └───────┘ └───────┘核心组件详解1. MCP Host宿主承载模型的应用负责协调连接桌面端Claude Desktop、Cursor、Windsurf端侧框架Ollamav0.6.0支持MCP、llama.cpp实验性移动端iOS/Android的本地AI助手如Enchanted、PocketPal2. MCP Client客户端内嵌于Host中维护与Server的1:1连接管理工具发现、调用执行、上下文同步3. MCP Server服务端关键洞察Server是独立进程可部署在位置场景示例本地机器端侧模型访问本地资源文件系统、SQLite、浏览器控制远程服务器需要云端算力/数据企业知识库、专有API沙盒环境安全隔离代码执行、文件操作审计4. 传输层Transport类型适用场景端侧适用性Stdio本地子进程通信✅ 最常用零网络依赖SSE远程Server流式通信⚠️ 需网络但低延迟WebSocket双向实时交互✅ 移动端PWA场景端侧MCP的典型应用场景场景1本地知识库问答用户提问我上周保存的关于MCP的笔记在哪里 处理流程 1. 模型通过MCP Client调用本地FileSystem Server 2. Server检索 ~/Documents/ 和 ~/Notes/ 目录 3. 返回匹配文件列表 内容摘要 4. 模型生成回答引用本地文件路径场景2隐私优先的日程管理用户下周三我有空吗帮我约个会 处理流程 1. MCP Client连接本地Calendar Server读取iOS/Outlook日历 2. 模型分析空闲时段**不将日历数据上传云端** 3. 生成会议建议用户确认后通过同一Server写入场景3端侧代码助手开发者在VS Code Ollama本地模型中工作 给这个函数加单元测试并运行验证 1. 模型通过MCP调用FileSystem Server读取代码 2. 生成测试代码通过同一Server写入文件 3. 调用本地Terminal Server执行 npm test 4. 读取测试结果反馈给用户MCP vs 传统方案端侧对比方案集成方式端侧适用性问题Function Calling模型原生能力✅每个模型格式不同工具需重复适配插件系统应用级扩展⚠️开发成本高生态碎片化MCP标准化协议✅✅一次适配多模型通用端侧关键优势MCP Server可用任何语言编写与模型Host解耦Python数据分析ServerRust高性能文件索引ServerSwift iOS系统API桥接Server技术实现细节端侧开发视角Server开发Python示例# server.py - 本地文件检索Serverfrommcp.serverimportServerfrommcp.typesimportTool,TextContentimportos serverServer(local-filesystem)server.list_tools()asyncdeflist_tools():return[Tool(namesearch_notes,description搜索本地笔记文件,inputSchema{type:object,properties:{query:{type:string},path:{type:string,default:~/Notes}}})]server.call_tool()asyncdefcall_tool(name,arguments):ifnamesearch_notes:resultslocal_search(arguments[query],arguments[path])return[TextContent(typetext,textresults)]与端侧模型连接Ollama配置// ollama_mcp_config.json{mcpServers:{filesystem:{command:python,args:[server.py],transport:stdio},browser:{command:npx,args:[-y,modelcontextprotocol/server-puppeteer],transport:stdio}}}当前生态与工具类别代表项目端侧适用性官方Server文件系统、SQLite、Git、Puppeteer✅ 全部本地运行社区Server智能家居Home Assistant、本地LLM管理✅ 隐私优先框架SDKPython SDK、TypeScript SDK、Kotlin SDK✅ 支持移动端开发可视化工具MCP Inspector调试Server、Claude Desktop Config✅ 本地调试端侧MCP的挑战与未来挑战现状演进方向移动能耗Server进程增加耗电轻量级Rust实现、按需唤醒安全边界本地Server权限过大细粒度权限模型、用户确认层发现机制需手动配置Server自动发现、应用商店式Server市场多模态当前以文本为主图像、音频、传感器数据标准化一句话总结MCP是端侧AI的USB-C——它让本地运行的模型能够安全、标准、灵活地接入你的文件、应用和物理世界而无需牺牲隐私或等待云端。