Skip to content

MCP 与 Skill 选型 ​

更新日期:2026-05
目标:理解 MCP 协议、Function Calling 和 Agent Skill 的区别与选型策略,搭建 AI 与外部系统的桥梁。


一、理解核心概念 ​

MCP(Model Context Protocol) ​

由 Anthropic 提出的开放协议,标准化 AI 模型与外部数据源的交互方式。

┌─────────────────┐
│   AI 客户端      │  ← Cursor、Claude Desktop、IDE 等
│  (MCP Client)   │
└────────┬────────┘
         │ MCP 协议(JSON-RPC over stdio/SSE)
┌────────▼────────┐
│   MCP Server    │  ← 数据库、API、文件系统适配器
└────────┬────────┘
         │
┌────────▼────────┐
│   外部系统       │  ← MySQL、PostgreSQL、GitHub 等
└─────────────────┘

Function Calling(函数调用) ​

模型原生支持的 API 调用能力,模型根据用户请求自动选择合适的函数并生成参数。

Agent Skill(技能/工具) ​

在 Agent 框架中预定义的、可复用的能力模块,通常封装了某个特定领域的操作逻辑。


二、三者的关系与选型 ​

维度MCPFunction CallingAgent Skill
定位通信协议(标准)模型 API 能力业务逻辑封装
标准化开放协议,跨平台各厂商实现不同框架自定义
配置复杂度中(需安装 Server)低(API 参数)中(需开发维护)
安全控制内置(权限配置)需自行实现需自行实现
适用场景数据库/文件/API 集成简单工具调用复杂业务编排

选型建议:

  • 系统集成 → MCP(标准化、安全)
  • 简单工具调用 → Function Calling(零配置)
  • 复杂业务逻辑 → Agent Skill(灵活定制)

三、MCP Server 选型 ​

官方/社区热门 Server ​

Server功能安装方式推荐场景
server-filesystem文件系统读写npx本地文档处理
server-postgresPostgreSQL 查询npx数据库分析
server-githubGitHub APInpx代码仓库管理
server-slack消息发送npx团队通知
server-mysqlMySQL 查询npxMySQL 数据库操作
server-sqliteSQLite 查询npx本地数据库

选型策略 ​

需求推荐 Server注意事项
读写项目文件server-filesystem限定目录范围,防止越权
查询业务数据库server-mysql / server-postgres使用只读账号,禁用写操作
管理代码server-github最小 Token 权限
集成内部系统自定义 MCP Server遵循 MCP 协议规范

安全最佳实践 ​

✅ 必须做到:
  - 为每个 MCP Server 创建专用账号
  - 遵循最小权限原则
  - 启用操作白名单(禁用 DELETE 等危险操作)
  - 定期审计 MCP Server 调用日志

❌ 避免:
  - 使用 root/管理员账号连接
  - 在生产环境直接暴露 MCP Server
  - 在配置文件中硬编码密码

四、Function Calling 选型 ​

各模型 Function Calling 能力对比 ​

模型能力评级特点
GPT-4o⭐⭐⭐⭐⭐最成熟,参数格式自动推导
Claude 4⭐⭐⭐⭐⭐结构化输出对齐好
Gemini 2.5⭐⭐⭐⭐Google 生态工具集成
DeepSeek⭐⭐⭐⭐性价比高,代码场景强
Qwen 2.5⭐⭐⭐⭐中文工具调用表现好
Llama 4⭐⭐⭐需额外对齐,建议加校验

实现建议 ​

python
# Function Calling 的推荐实践
functions = [
    {
        "name": "query_database",
        "description": "执行 SQL 查询(只读)",
        "parameters": {
            "type": "object",
            "properties": {
                "sql": {
                    "type": "string",
                    "description": "SQL 查询语句"
                }
            },
            "required": ["sql"]
        }
    }
]

# 安全校验层
def validate_function_call(func_name, args):
    if func_name == "query_database":
        sql = args["sql"].lower()
        # 禁止修改操作
        forbidden = ["insert", "update", "delete", "drop", "alter"]
        if any(kw in sql for kw in forbidden):
            raise PermissionError("只允许查询操作")
    return True

五、Agent Skill 选型 ​

Skill 设计原则 ​

原则说明
单一职责每个 Skill 只做一件事,做得好
输入输出规范明确定义参数和返回值格式
幂等性多次执行同一操作,结果一致
错误处理内置重试、超时、降级策略
可观测记录每次调用的输入、输出、耗时

常见 Skill 类型 ​

Skill 类型示例适用场景
查询类查数据库、查文档、查 API信息检索
操作类创建工单、发送通知、更新状态业务操作
分析类数据分析、代码审查、日志分析决策辅助
转换类格式转换、翻译、摘要内容处理

Skill 选型框架 ​

这个操作是否需要 AI 参与?
├─ 纯规则可搞定 → 不要做成 Skill,写普通函数
├─ 需要 AI 理解上下文 → 做成 Skill
└─ 需要 AI + 规则 → 做成 Skill + 校验层

这个操作是否有副作用?
├─ 有(写操作)→ 必须有人工确认或审批流
└─ 无(只读)→ 可以自动执行

六、综合选型案例 ​

场景 1:Java 后端开发提效 ​

需求:AI 助手能查询数据库、读写文件、管理 Git

方案:
├─ 数据库查询 → MCP Server (MySQL, 只读账号)
├─ 文件读写   → MCP Server (filesystem, 限项目目录)
├─ Git 操作   → Function Calling (封装常用命令)
└─ Agent Skill → 自定义「代码审查 Skill」

场景 2:企业内部知识库 ​

需求:员工可以用自然语言查询内部文档

方案:
├─ 文档检索 → RAG Pipeline + MCP (向量库)
├─ 权限控制 → Agent Skill (根据用户角色过滤)
├─ 日志审计 → MCP + Function Calling (记录查询)
└─ 通知推送 → MCP Server (Slack/钉钉)

场景 3:自动化运维 ​

需求:AI 能监控系统状态并执行运维操作

方案:
├─ 状态查询 → MCP (服务器监控 API)
├─ 告警通知 → MCP (消息推送)
├─ 操作执行 → Function Calling (需人工确认)
└─ 故障分析 → Agent Skill (多步骤诊断流程)

七、MCP 的延伸阅读 ​

如果你需要深入了解 MCP 协议本身,以下资源值得关注:

  • MCP 官方规范 — 协议标准与 SDK
  • MCP Server 市场 — 社区 Server 合集
  • 自定义 MCP Server 开发:使用 @modelcontextprotocol/sdk(Node.js)或 mcp(Python)

回到顶部:AI 选型概览 | 下一篇:AI 开发工具选型