想象一下,一个能力强大的 AI 助手,它知识渊博、能言善辩,但却被关在一个没有互联网、没有软件、无法访问任何外部数据和工具的房间里。这就是大多数大语言模型(LLM)的现状——它们的能力被限制在训练时所学到的知识中,无法与实时变化的世界互动。

MCP (Model Context Protocol) 就是为了彻底打破这堵墙而生的。它是由 Anthropic (Claude 的创造者) 提出并主导开发的一种开放协议,旨在为 AI 模型提供一种安全、标准化、可扩展的方式来使用外部工具、数据和服务。

你可以把它理解为:

  • AI 的“万能遥控器”:让 AI 可以操控各种各样的“设备”(数据库、API、计算器、文件系统等)。

  • AI 的“应用商店”:开发者可以为其开发无限多的“应用”(称为工具或资源),AI 可以按需安装和使用。

  • AI 的“手和脚”:它为只会“思考”的 AI 模型赋予了“行动”的能力,使其能真正与环境交互。

MCP 的关键特性与优势在于:

  • 开放与跨平台:它是一个开放标准,不受任何单一公司控制,促进了整个AI生态的互联互通。

  • 安全性:协议内置了权限控制。服务器可以声明工具所需的权限,客户端(或用户)可以决定是否授权,有效防止滥用。

  • 灵活性:开发者可以用任何编程语言(Python, JavaScript, Go, Rust等)编写 MCP 服务器,只要遵循协议即可。

  • 模块化:工具和资源是模块化的,可以按需安装、组合和更新,就像手机的App一样方便。

  • 强大的生态潜力:一个繁荣的工具生态即将出现,专业的工具(如Jira操作、服务器监控、科学计算)可以让通用AI变身成为领域专家。

MCP的典型应用场景为:

  1. 代码与运维:让AI直接运行测试、查询日志、部署服务、调试服务器。

  2. 数据分析:连接数据库(MySQL, BigQuery)、数据分析平台(Tableau),让AI直接执行查询并分析结果。

  3. 办公自动化:读写电子表格、发送邮件、管理日历、生成PPT。

  4. 实时信息获取:搜索网页、查询股价、获取新闻和天气。

  5. 智能家居与IoT:控制智能设备,调节灯光温度。

相关网址:

为什么需要 MCP?它解决了什么核心问题?

在没有 MCP 之前,让 AI 使用外部功能面临诸多挑战:

  1. 碎片化与不兼容:每个 AI 厂商(如 OpenAI, Anthropic, Google)都有自己的一套插件或工具系统,开发者需要为每个平台重复开发功能相似的工具。

  2. 安全风险:缺乏统一的安全标准和权限控制模型,可能导致 AI 被恶意工具利用或执行危险操作。

  3. 开发效率低下:工具开发过程复杂,难以调试和维护。

MCP 的核心价值在于 standardization (标准化)。它定义了一套通用的“语言”,使得:

  • 工具开发者:只需编写一次 MCP 服务器,任何支持 MCP 协议的 AI 客户端(如 Claude、Dify 等)都可以立即使用这些工具。

  • AI 厂商和应用开发者:无需重复造轮子,可以直接利用整个生态系统中已有的强大工具。

  • 用户:获得一个能力更强、更安全、更可靠的 AI 助手。

MCP 的核心组件与工作原理

MCP 协议主要围绕三个核心概念构建,涉及两个角色之间的通信:

  1. MCP 客户端 (Client)

    • 角色:通常是 AI 应用或平台(如 Claude 聊天界面、Dify 工作流)。

    • 职责:向用户提供交互界面,接收用户请求,决定需要调用哪些工具,并将工具返回的结果整合后呈现给用户。

  2. MCP 服务器 (Server)

    • 角色提供具体功能和数据的独立程序

    • 职责:向客户端“广告”自己提供了哪些工具和资源,并等待客户端的调用请求。当收到请求时,执行具体的操作(如查询数据库、执行命令、读取文件)并将结果返回给客户端。

  3. 工具 (Tools) 和资源 (Resources)

    • 这是服务器暴露给客户端的核心内容

      • Tools (工具):代表可执行的操作。客户端可以调用它们并传递参数。例如:search_web, run_calculator, execute_sql_query

      • Resources (资源):代表可读取的数据流。它们为客户端提供了一种方式来订阅或读取动态或静态内容。例如:database_tables, real_time_logs, file_system

工作流程可以简化为:

  1. 用户向 客户端 提出请求:“帮我查一下今天的天气。”

  2. 客户端 分析请求,发现需要调用一个天气查询工具。

  3. 客户端 查看已连接的 MCP 服务器,发现一个提供了 get_weather 工具的服务器。

  4. 客户端 调用该工具,并传入参数 location="北京"

  5. MCP 服务器 执行工具:通过某个天气 API 获取北京的数据。

  6. MCP 服务器 将天气数据返回给 客户端

  7. 客户端 将数据整合成友好的格式回复给用户:“北京今天晴,25摄氏度。”

安装

使用如下命令安装:

pip install mcp

第一个MCP服务器

from mcp.server.fastmcp import FastMCP

# 创建一个 MCP 服务器
mcp = FastMCP("demo")

# 添加一个加法工具
@mcp.tool()
def add(a: int, b: int) -> int:
    """将两个数字相加"""
    return a + b

# 添加一个动态问候资源
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """获取个性化问候语"""
    return f"你好, {name}!"

# 添加一个提示模板
@mcp.prompt()
def greet_user(name: str, style: str = "友好") -> str:
    """生成问候提示"""
    styles = {
        "友好": "请写一个热情友好的问候语",
        "正式": "请写一个正式专业的问候语",
        "随意": "请写一个轻松随意的问候语",
    }

    return f"{styles.get(style, styles['友好'])} 给名为 {name} 的人。"

# 启动服务器
if __name__ == "__main__":
    mcp.run()

保存以上文件为main.py

为了启动这个服务器,只需要执行该模块即可:

python main.py

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
python 人工智能 后端 第三方库 个人分享 人工智能 框架
喜欢就支持一下吧