Skill Hub
教程 2026年5月10日 阅读时间 22 分钟

MCP 3.0协议详解:构建AI与工具的桥梁

深入了解Model Context Protocol 3.0,学习如何构建智能工具,让AI能够安全、可靠地与外部世界交互。

MCP简介

Model Context Protocol(MCP)是由Anthropic开发的开源协议,它定义了AI助手与外部工具和数据源交互的标准方式。MCP 3.0是该协议的最新版本,带来了重大改进,包括更完善的安全模型、更丰富的资源管理能力和更灵活的工具定义方式。

# MCP的核心目标
1. 标准化AI与工具的交互方式
2. 提供安全、可控的工具调用机制
3. 支持上下文信息的高效传递
4. 跨平台、跨语言的兼容性
5. 可扩展的插件架构

核心概念

MCP采用客户端-服务器架构,基于JSON-RPC协议进行通信。核心概念包括资源(Resources)、工具(Tools)和提示模板(Prompts)三大部分,它们共同构成了AI与应用之间交互的基础设施。

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": {
      "name": "MyClient",
      "version": "1.0.0"
    }
  }
}

Server开发

资源是MCP的核心概念之一,它代表了AI可以访问的数据或信息源。开发MCP服务器时,首先需要定义服务器可以提供哪些资源和服务。

{
  "resources": [
    {
      "uri": "file:///home/user/documents/report.md",
      "name": "Project Report",
      "description": "Q4 2026 project report",
      "mimeType": "text/markdown"
    },
    {
      "uri": "git://repo/main",
      "name": "Git Repository",
      "description": "Main project repository",
      "mimeType": "application/json"
    }
  ]
}

Client开发

工具是AI可以调用的功能或操作,MCP提供了标准化的工具定义方式。在客户端开发中,需要正确处理服务器提供的工具列表,并根据AI的需求发起工具调用请求。

{
  "tools": [
    {
      "name": "search_files",
      "description": "Search files in the workspace",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query"
          },
          "pattern": {
            "type": "string",
            "description": "File pattern to match"
          }
        },
        "required": ["query"]
      }
    }
  ]
}

安全实践

提示模板允许定义可重用的提示,支持参数化配置。这是MCP协议中用于管理AI与用户交互的重要组成部分。在安全性方面,需要特别注意输入验证和权限检查。

{
  "prompts": [
    {
      "name": "code_reviewer",
      "description": "Review code for best practices",
      "arguments": [
        {
          "name": "code",
          "description": "Code to review",
          "required": true
        }
      ]
    }
  ]
}

权限控制

MCP 3.0引入了强大的安全机制,确保AI工具调用的安全性。权限控制是其中最关键的一环。

  • 显式的权限控制:每个工具调用都需要明确的授权
  • 用户确认机制:敏感操作需要用户二次确认
  • 操作审计日志:所有工具调用都会被完整记录
  • 资源访问限制:细粒度的文件和网络访问控制
  • 沙箱执行环境:代码执行在隔离环境中进行

部署指南

现在让我们创建一个完整的MCP服务器,展示如何实现自定义工具并进行部署。

#!/usr/bin/env python3
from mcp.server import Server
from mcp.types import Tool
import asyncio

server = Server("my-mcp-server")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="calculate",
            description="Perform mathematical calculations",
            inputSchema={
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "Math expression to evaluate"
                    }
                },
                "required": ["expression"]
            }
        )
    ]

@server.call_tool()
async def call_tool(name, arguments):
    if name == "calculate":
        import ast
        expr = arguments["expression"]
        try:
            result = ast.literal_eval(expr)
            return {"content": [{"type": "text", "text": str(result)}]}
        except Exception as e:
            return {"content": [{"type": "text", "text": f"Error: {str(e)}"}]}
    return {"content": [{"type": "text", "text": "Unknown tool"}]}

if __name__ == "__main__":
    asyncio.run(server.run())

觉得这个教程有帮助?

如果你学到了新知识,欢迎分享给更多人,或者投稿分享你开发的MCP服务器!

立即投稿