news 2026/6/10 10:36:00

深入解析MCP与agent skill

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入解析MCP与agent skill

在 AI 智能体技术飞速发展的今天,我们正见证着一场从"只会聊天的 LLM"向"能干活的智能体"的范式转移。这一转型的核心挑战在于:LLM 如何安全、高效地与外部世界连接?

本文将深入剖析业界最受关注的解决方案——模型上下文协议(Model Context Protocol, MCP),并探讨它与**智能体技能(Agent Skills)**之间的协作关系。


一、MCP 是什么?AI 界的"USB-C"标准

问题的由来

在 MCP 出现之前,将 AI 连接到数据库、API 或企业系统通常需要:

  • 为每个数据源编写定制化的集成代码
  • 针对不同 AI 应用重复开发相同的连接器
  • 维护大量脆弱的"胶水代码"

MCP 的核心理念:建立一个开放标准,让 AI 应用与外部数据源之间的对接变得像插 USB-C 接口一样简单——一次开发,到处使用

架构设计:三层分工明确

MCP 采用经典的客户端-服务器架构,包含三个核心角色:

┌─────────────────────────────────────────┐ │ 宿主 (Host) │ │ 如: Claude Desktop、VS Code │ │ ┌───────────────────────────────┐ │ │ │ MCP 客户端 (Client) │ │ │ │ 负责协议通信 │ │ │ └───────────┬───────────────────┘ │ └───────────────┼─────────────────────────┘ │ JSON-RPC 2.0 ┌───────────▼───────────┐ │ MCP 服务器 (Server) │ │ ┌─────────────────┐ │ │ │ 工具 (Tools) │ │ │ │ 资源 (Resources)│ │ │ │ 提示词 (Prompts)│ │ │ └─────────────────┘ │ └───────────────────────┘

实际交互流程示例

  1. 用户在 VS Code 中询问:“查询用户表结构”
  2. LLM 识别需要调用 MCP 工具execute_sql
  3. MCP客户端向 MCP 服务器发送 JSON-RPC 请求
  4. MCP服务器执行 SQL 查询并返回 JSON 格式结果
  5. MCP客户端收到后返回到LLM上下文中
  6. LLM 基于返回数据生成自然语言回复

⚠️注意:MCP服务器只与MCP客户端进行交互。


二、三大核心原语:构建能力的基础模块

MCP 服务器通过三类原语(Primitives)向 AI 暴露能力:

1. 工具(Tools)- LLM 的"执行手"

  • 控制权:由 LLM 决定何时调用
  • 特性:可以对外部系统进行操作(写数据库、发邮件、执行代码)
  • 类比:REST API 的 POST 请求

代码示例(Python):

# 目前已经有了专门的类来实现MCP服务,如FASTMCP@mcp.tool()defexecute_sql(query:str)->str:"""在生产数据库上执行只读 SQL 查询 Args: query: 标准 SQL 语句(必须包含 LIMIT 子句) """# 安全检查if"LIMIT"notinquery.upper():raiseValueError("查询必须包含 LIMIT 以防止全表扫描")returndatabase.execute(query)

2. 资源(Resources)- 知识的"信息源"

  • 控制权:由应用程序管理访问权限
  • 特性只读数据,不产生副作用
  • 类比:REST API 的 GET 请求

典型用途

  • 本地文件内容(file:///path/to/doc.md
  • 实时日志流(logs://production/errors
  • 数据库表结构(schema://users

3. 提示词(Prompts)- 工作流的"模板引擎"

  • 控制权:由用户选择和触发
  • 特性:预设的指令框架,确保任务执行一致性

使用场景

# 提示词:代码审查助手 请按以下标准审查代码: 1. 安全性:检查 SQL 注入、XSS 等漏洞 2. 性能:识别 N+1 查询、内存泄漏 3. 可维护性:评估命名规范、注释完整性 [用户代码将插入此处]

三、传输协议深度解析

MCP 服务器支持多种传输机制以适应不同部署场景:

stdio(标准输入输出)

适用场景:用于本地部署MCP服务,然后通过stdio协议进行本地自调用。如Claude Desktop与本地自己部署的MCP服务的调用。

关键限制

# ❌ 错误示例 - 会破坏 JSON-RPC 通信print("正在查询数据库...")# ✅ 正确示例 - 使用标准错误输出调试importsysprint("DEBUG: 查询参数="+query,file=sys.stderr)

原因:stdio 模式下,标准输出(stdout)专用于传输 JSON-RPC 消息,print()等方法会将信息存储到stdin中从而破坏了传输的 JSON-RPC。任何非协议数据都会导致连接崩溃。

HTTP + SSE

组合优势

  • HTTP POST:客户端向远程MCP服务器发送指令,可以对MCP服务进行操作(如插入数据到数据库等)
  • SSE(服务器发送事件):MCP服务器完成操作后推送实时更新(如进度条)到MCP客户端。

四、性能优化:渐进式上下文加载

Token 消耗控制策略

假设场景:接入 100 个 MCP 服务,每个服务提供 10 个工具。

传统做法(不可行)

  • 将所有工具的完整文档一次性加载到上下文
  • 估算 Token 消耗:100 × 10 × 50 = 50,000 tokens

MCP 的分层加载机制

  1. 初始化阶段- 仅传输元数据
{"name":"execute_sql","description":"执行只读 SQL 查询","inputSchema":{"type":"object","properties":{"query":{"type":"string"}}}}
  1. 调用阶段- 按需加载详细数据
  • LLM 根据元数据判断是否需要调用工具
  • 仅当工具被触发时,实际数据才进入上下文

这里的设计思想类似于agent skill

Token 节省:初始阶段仅消耗约 5,000 tokens(减少 90%)


五、MCP 与 Agent Skills:策略与执行的完美配合

许多开发者混淆两者的定位。实际上,它们是互补关系:

对比矩阵

维度Agent SkillsMCP
本质知识与工作流(SOP)连接能力
表现形式Markdown 文档代码服务器
作用对象指导 LLM 的决策逻辑提供 LLM 的执行手段
类比企业操作手册API 接口

skill 仅仅会将skill中定义的信息加载到模型上下文中(当需要的时候),并不具备调用外部接口的能力。

协作示例:数据库审计智能体

Skill 文档database-audit-skill.md):

# 数据库审计技能 ## 核心原则 1. 所有查询必须包含 `LIMIT` 子句(最大 1000) 2. 禁止使用 `SELECT *`,必须明确列名 3. 敏感字段(如密码)需脱敏处理 ## 工作流程 1. 解析用户需求 → 生成 SQL 2. 调用 MCP 工具(audit_query)执行查询 3. 格式化结果并标注风险点

MCP 服务器(执行层):

@mcp.tool()defaudit_query(sql:str)->dict:"""执行审计查询并返回风险评分"""# Skill 的策略在这里被强制执行validate_sql_safety(sql)# 检查 LIMIT、SELECT * 等result=execute_with_monitoring(sql)return{"data":mask_sensitive_fields(result),"risk_score":calculate_risk(sql)}

协作逻辑

  • Skill定义了"什么是安全的查询"(策略层)
  • MCP提供了"如何执行查询"的能力(执行层)
  • LLM 先阅读 Skill 学习最佳实践,再通过 MCP 调用工具

六、实战部署:快速上手

场景 1:为 Claude Desktop 添加 GitHub 集成

步骤

  1. 安装官方 MCP 服务器:
npminstall-g @modelcontextprotocol/server-github
  1. 配置claude_desktop_config.json
{"mcpServers":{"github":{"command":"mcp-server-github","env":{"GITHUB_TOKEN":"your_token_here"}}}}
  1. 重启 Claude Desktop,测试查询:
"列出我的仓库中最近打开的 Issues"

场景 2:自定义 MCP 服务器(天气查询)

完整代码(TypeScript):

import{Server}from"@modelcontextprotocol/sdk/server/index.js";import{StdioServerTransport}from"@modelcontextprotocol/sdk/server/stdio.js";constserver=newServer({name:"weather-server",version:"1.0.0"},{capabilities:{tools:{}}});server.setRequestHandler("tools/list",async()=>({tools:[{name:"get_weather",description:"获取指定城市的天气",inputSchema:{type:"object",properties:{city:{type:"string"}},required:["city"]}}]}));server.setRequestHandler("tools/call",async(request)=>{if(request.params.name==="get_weather"){constweather=awaitfetchWeather(request.params.arguments.city);return{content:[{type:"text",text:JSON.stringify(weather)}]};}});consttransport=newStdioServerTransport();awaitserver.connect(transport);

七、生态现状与未来展望

MCP Registry:生态系统的催化剂

类似于 npm、PyPI,Anthropic 推出了 MCP Registry,提供官方验证的服务器:

热门集成

  • 生产力:Google Drive、Slack、Notion
  • 开发工具:GitHub、GitLab、Sentry
  • 数据库:PostgreSQL、MongoDB、Snowflake
  • 监控:Prometheus、Datadog

未来趋势

  1. 企业级功能增强

    • 细粒度权限控制(RBAC)
    • 审计日志与合规性支持
    • 多租户隔离
  2. 工具链完善

    • 可视化配置工具
    • 性能监控仪表板
    • 自动化测试框架
  3. 跨模型兼容性

    • OpenAI GPTs 支持 MCP
    • 开源模型(Llama、Mistral)原生集成

总结

MCP 的诞生标志着 AI 生态系统迈向标准化与模块化时代。它不仅打破了模型的知识截止日期限制,更让企业能够以安全、可控的方式授权 AI 访问私有数据。

核心洞察

  • MCP提供"手"(执行能力)
  • Agent Skills提供"脑"(决策逻辑)
  • 两者结合才能构建真正强大的智能体

未来,构建企业级 AI 应用可能只需三步:

  1. 从 MCP Registry 挑选标准服务器
  2. 编写定制化的 Agent Skills
  3. 通过配置文件完成集成

下一步行动
如果你想深入实践,推荐从以下方向入手:

  • 官方文档
  • GitHub 示例仓库
  • 社区 Discord - 与全球开发者交流经验
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:22:42

Obsidian Primary 主题:轻量设计与高效定制指南

Obsidian Primary 主题:轻量设计与高效定制指南 【免费下载链接】obsidianmd-theme-primary Comfy, playful but productive theme for Obsidian. "Primary instantly puts you in a relaxed state that opens the door to creativity and exploration. Wonder…

作者头像 李华
网站建设 2026/6/10 10:22:51

零代码工具驱动的AI应用开发:从创意概念到落地实践

零代码工具驱动的AI应用开发:从创意概念到落地实践 【免费下载链接】teachablemachine-community Example code snippets and machine learning code for Teachable Machine 项目地址: https://gitcode.com/gh_mirrors/te/teachablemachine-community 在人工…

作者头像 李华
网站建设 2026/6/9 15:03:59

300%效率提升:NLP大模型低资源适配的LoRA技术革命

300%效率提升:NLP大模型低资源适配的LoRA技术革命 【免费下载链接】Open-Sora-Plan 这个项目致力于复现Sora (Open AI 的文生视频模型), 我希望开源社区也可以为这个项目作出贡献。This project aim to reproduce Sora (Open AI T2V model), we wish the open sourc…

作者头像 李华
网站建设 2026/6/8 11:42:55

LaTeXML格式转换完全指南:从入门到精通

LaTeXML格式转换完全指南:从入门到精通 【免费下载链接】LaTeXML LaTeXML: a TeX and LaTeX to XML/HTML/ePub/MathML translator. 项目地址: https://gitcode.com/gh_mirrors/la/LaTeXML 如何将LaTeX文档无缝转换为多种格式?LaTeXML作为一款强大…

作者头像 李华
网站建设 2026/6/9 20:07:48

AI文档分析突破实战:构建法律与学术智能问答系统全指南

AI文档分析突破实战:构建法律与学术智能问答系统全指南 【免费下载链接】sec-insights A real world full-stack application using LlamaIndex 项目地址: https://gitcode.com/gh_mirrors/se/sec-insights 在信息爆炸的时代,法律从业者和研究人员…

作者头像 李华