缪斯:MCP 协议重磅发布:智能体开发迎来全新变革

缪斯:MCP 协议重磅发布:智能体开发迎来全新变革

缪斯:MCP 协议重磅发布:智能体开发迎来全新变革 缪斯:MCP 协议重磅发布:智能体开发迎来全新变革 Modified April 7, 2025 Code block Python Copy 这里,uv会自动识别当前项目主目录,然后自动创建虚拟环境。 现在,我们通过add方法在虚拟环境中安装相关的库。 注意:如果网络问题,安装依赖失败,可以更改镜像源,或者使用科学上网工具。 Code block Python Copy 安装 MCP依赖包 uv add mcp 新增client所需依赖 后面,为了支持调用大模型,读取env环境变量中的API KEY等信息,需要先安装如下依赖: Code block Python Copy uv add mcp openai python dotenv 接入硅基流动的免费大模型 创建env文件 env文件用来存放大模型API Key等配置信息: Code block Python Copy BASE URL=https://api.siliconflow.cn/v1 MODEL=Pro/deepseek ai/DeepSeek V3 API KEY="你的API KEY" 编写MCP客户端 具体也可以参考官方示例:https://modelcontextprotocol.io/quickstart/client 客户端代码如下: Code block Python Copy import asyncio import os from openai import OpenAI from dotenv import load dotenv from contextlib import AsyncExitStack 加载 .env 文件 load dotenv() class MCPClient: def init (self): """初始化 MCP 客户端""" self.exit stack = AsyncExitStack() self.openai api key = os.getenv("API KEY") 读取 OpenAI API Key self.base url = os.getenv("BASE URL") 读取 BASE URL self.model = os.getenv("MODEL") 读取模型 if not self.openai api key: raise ValueError("未找到 API KEY. 请在 .env 文件中配置 API KEY") self.client = OpenAI(api key=self.openai api key, base url=self.base url) async def process query(self, query: str) str: """调用 OpenAI API 处理用户问题""" messages = [ {"role": "system", "content": "你是一个智能助手,帮助用户回答问题。"}, {"role": "user", "content": query} ] try: 调用大模型API response = await asyncio.get event loop().run in executor( None, lambda: self.client.chat.completions.create(model=self.model, messages=messages) ) return response.choices[0].message.content except Exception as e: return f"调用模型API时出错: {str(e)}" async def chat loop(self): """运行交互式聊天循环""" print("MCP 客户端已启动!输入 'exit' 退出") while True: try: query = input("问: ").strip() if query.lower() == 'exit': break response = await self.process query(query) print(f"AI回复: {response}") except Exception as e: print(f"发生错误: {str(e)}") async def clean(self): """清理资源""" await self.exit stack.aclose() async def main(): client = MCPClient() try: await client.chat loop() finally: await client.clean() if name == " main ": asyncio.run(main()) 运行client,测试大模型是否连接成功 Code block Plain Text Copy uv run client.py MCP服务端 创建服务端文件 server.py: Code block Python Copy from mcp.server.fastmcp import FastMCP 初始化FastMCP服务器 mcp = FastMCP("filesystem") @mcp.tool() async def create file(file name: str, content: str) str: """ 创建文件 :param file name: 文件名 :param content: 文件内容 :return: 创建成功消息 """ try: with open(file name, "w", encoding="utf 8") as file: file.write(content) return f"文件'{file name}'创建成功" except Exception as e: return f"创建文件失败: {str(e)}" @mcp.tool() async def read file(file name: str) str: """ 读取文件内容 :param file name: 文件名 :return: 文件内容或错误消息 """ try: with open(file name, "r", encoding="utf 8") as file: return file.read() except FileNotFoundError: return f"文件'{file name}'未找到" except Exception as e: return f"读取文件失败: {str(e)}" @mcp.tool() async def write file(file name: str, content: str) str: """ 写入文件内容 :param file name: 文件名 :param content: 文件内容 :return: 写入成功消息 """ try: with open(file name, "w", encoding="utf 8") as file: file.write(content) return f"文件'{file name}'写入成功" except Exception as e: return f"写入文件失败: {str(e)}" if name == " main ": 以标准 I/O 方式运行 MCP 服务器 mcp.run(transport="stdio") 服务端代码详解 服务端代码的逻辑主要是: 初始化服务 启动一个名为 filesystem 的MCP服务 Code block Plain Text Copy mcp = FastMCP("filesystem") 创建tool方法 通过@mcp.tool()装饰器注册三个 MCP 服务器工具:read file 、write file,create file,能够被客户端调用。 注意:方法注释一定要写上,内容包含:tool的功能,入参,出参,他是服务端tool的说明书,是大模型能否成功调用该方法的关键。 服务端入口代码 以标准 I/O 方式运行 MCP 服务器 Code block Plain Text Copy mcp.run(transport="stdio") 通过 mcp.run(transport='stdio') 启动 MCP 服务器,采用标准 I/O 通信方式,等待客户 端调用,适合客户端和服务端在同一台电脑上通信。 stdio 模式是一种本地进程间通信(IPC,Inter Process Communication)的方式,它需要服务端程序作为子进程运行,并通过标准输入输出 ( stdin / stdout )进行数据交换。 因此,当我们指定 transport='stdio' 运行 MCP 服务器时,需要先启动服务端程序server.py ,然后再启动客户端程序 client.py 。 这样客户端才能和服务端通信。 启动服务 我们可以在启动一个命令行运行服务端程序: Code block Python Copy 这里,uv会自动识别当前项目主目录,然后自动创建虚拟环境。 现在,我们通过add方法在虚拟环境中安装相关的库。 注意:如果网络问题,安装依赖失败,可以更改镜像源,或者使用科学上网工具。 新增client所需依赖 后面,为了支持调用大模型,读取env环境变量中的API KEY等信息,需要先安装如下依赖: 接入硅基流动的免费大模型 创建env文件 env文件用来存放大模型API Key等配置信息: 编写MCP客户端 具体也可以参考官方示例:https://modelcontextprotocol.io/quickstart/client 客户端代码如下: 运行client,测试大模型是否连接成功 MCP服务端 创建服务端文件 server.py: 服务端代码详解 服务端代码的逻辑主要是: 初始化服务 启动一个名为 filesystem 的MCP服务 创建tool方法 通过@mcp.tool()装饰器注册三个 MCP 服务器工具:read file 、write file,create file,能够被客户端调用。 注意:方法注释一定要写上,内容包含:tool的功能,入参,出参,他是服务端tool的说明书,是大模型能否成功调用该方法的关键。 服务端入口代码 以标准 I/O 方式运行 MCP 服务器 通过 mcp.run(transport='stdio') 启动 MCP 服务器,采用标准 I/O 通信方式,等待客户 端调用,适合客户端和服务端在同一台电脑上通信。 stdio 模式是一种本地进程间通信(IPC,Inter Process Communication)的方式,它需要服务端程序作为子进程运行,并通过标准输入输出 ( stdin / stdout )进行数据交换。 因此,当我们指定 transport='stdio' 运行 MCP 服务器时,需要先启动服务端程序server.py ,然后再启动客户端程序 client.py 。 这样客户端才能和服务端通信。 启动服务 我们可以在启动一个命令行运行服务端程序: 入口方法也要做调整 开头的导入内容也要对应做修改 客户端最终完整代码 更多MCP服务器合集导航地址 号称最大的MCP集合导航站:https://mcp.so/ MCP集合:https://github.com/ahujasid/blender mcp 官方MCP合集:https://github.com/modelcontextprotocol/servers Github热门MCP导航:https://github.com/punkpeye/awesome mcp servers 结语 以上,我们通过一个极其简单的案例,让MCP客户端与服务端进行通信,并成功调用服务端的对应工具,帮我们完成了一件事情。 这意味着,AI可以通过MCP服务完成几乎任何事情,比如:操作电脑本地文件夹,帮我们浏览网页并获取内容存,然后存入本地等等很多场景,想象空间很大,而这一切都是由AI驱动完成的! MCP的功能远不止此,它还支持SSE传输模式,实现服务器与客户端异地运行;提供Resources类资源接口和Prompt类提示词模板;通过标准化协议促进开发者协作,已有数千服务器可供调用。 快快实战起来吧,何以破局,唯有行动! MCP是一个典型的CS架构,对于有编程基础的同学来说,很容易理解,因为开发中常见的MySql就是典型的CS架构,程序员日常开发过程中,会经常接触到CS架构的产品。 本文不做太多关于MCP是什么的解释,尽最可能减少无关的噪音,只需要知道,MCP(Model Context Protocol)是一个标准化协议,通过客户端 服务端架构,让AI模型能够安全地调用工具、访问外部数据源,并实时获取信息。 接下来我们通过极简单的案例,带大家手搓一个MCP客户端和服务端代码,来快速了解MCP是什么?:让AI根据你的输入自动规划并调用MCP服务端,给本地电脑创建一个文件,并写入一句话。 如果这个案例你跑通了,你就会对MCP有一个初步的且正确的认知了。后面,你再去看网上其他关于MCP的大段文字科普,或者眼花缭乱的客户端配置MCP服务器的教程,再或者通过Dify等工作流与MCP结合,就会有种拨云见日,一览众山小的感觉。 🎉 昨天晚上,Claude 团队正式发布了 MCP 协议(模型上下文协议,Model Context Protocol),这项协议被称为智能体开发领域的“万能插头”。它不仅支持外部多种类型的数据源和功能模块的无缝接入,还完全开源。这意味着,未来企业和开发者可以基于 MCP 协议,自由构建像 Coze、Dify 或 MetaGPT 这样的智能体框架型中间件平台。本文将带您了解这项协议的核心亮点及其对行业的深远影响。 昨天晚上,Claude 团队正式发布了 MCP 协议(模型上下文协议,Model Context Protocol),这项协议被称为智能体开发领域的“万能插头”。它不仅支持外部多种类型的数据源和功能模块的无缝接入,还完全开源。这意味着,未来企业和开发者可以基于 MCP 协议,自由构建像 Coze、Dify 或 MetaGPT 这样的智能体框架型中间件平台。本文将带您了解这项协议的核心亮点及其对行业的深远影响。 什么是 MCP 协议? 🎉 MCP 协议的设计初衷是打通智能体构建的“最后一公里”。传统智能体开发往往依赖于封闭平台,如 Coze 或 GPTs。这些平台虽然提供便捷的开发支持,但开发者的 工作流、配置文件和知识产权 依赖于平台方,容易导致隐私泄露或产权纠纷。 MCP 协议的设计初衷是打通智能体构建的“最后一公里”。传统智能体开发往往依赖于封闭平台,如 Coze 或 GPTs。这些平台虽然提供便捷的开发支持,但开发者的 工作流、配置文件和知识产权 依赖于平台方,容易导致隐私泄露或产权纠纷。 🎉 而 MCP 协议 的完全开源模式,彻底解决了这些问题: 1. 自主可控:工作流和数据处理可以完全在本地运行,无需托管在第三方平台。 2. 隐私与安全:不再暴露核心知识产权,开发者可以掌握全局。 3. 高扩展性:通过开放的接口规范,任何工具、数据源或模型都可轻松接入。 而 MCP 协议 的完全开源模式,彻底解决了这些问题: 1. 自主可控:工作流和数据处理可以完全在本地运行,无需托管在第三方平台。 2. 隐私与安全:不再暴露核心知识产权,开发者可以掌握全局。 3. 高扩展性:通过开放的接口规范,任何工具、数据源或模型都可轻松接入。 为什么 MCP 协议是行业的“破局者”? 🎉 区别于传统 GPTs 平台 GPTs(如 Coze)更多是走封闭生态路线,开发者的知识产权和工作流往往受限于平台。以往,即使有人复制了你的智能体配置文件,你也难以维权。而 MCP 协议则完全开源,授权明晰,开发者拥有绝对的控制权。这种模式更符合现代开发者对 隐私、安全和自主性 的需求。 区别于传统 GPTs 平台 GPTs(如 Coze)更多是走封闭生态路线,开发者的知识产权和工作流往往受限于平台。以往,即使有人复制了你的智能体配置文件,你也难以维权。而 MCP 协议则完全开源,授权明晰,开发者拥有绝对的控制权。这种模式更符合现代开发者对 隐私、安全和自主性 的需求。 🎉 重新定义 Agent 中间件市场 MCP 协议的发布,可能使现有中间件平台的市场空间被极大压缩。随着模型公司直接提供底层协议支持,开发者可以直接基于 MCP 构建场景化应用,而无需依赖中间件平台。这对专注于智能体中间件开发的公司无疑是个重大挑战。 重新定义 Agent 中间件市场 MCP 协议的发布,可能使现有中间件平台的市场空间被极大压缩。随着模型公司直接提供底层协议支持,开发者可以直接基于 MCP 构建场景化应用,而无需依赖中间件平台。这对专注于智能体中间件开发的公司无疑是个重大挑战。 🎉 推动行业分工优化 MCP 协议将模型端和应用端的分工更加明确: • 模型端:专注于训练和优化模型。 • 应用端:基于 MCP 协议,灵活扩展工具和场景化应用。 这种优化有助于提升开发效率,降低重复开发成本。 推动行业分工优化 MCP 协议将模型端和应用端的分工更加明确: • 模型端:专注于训练和优化模型。 • 应用端:基于 MCP 协议,灵活扩展工具和场景化应用。 这种优化有助于提升开发效率,降低重复开发成本。 如何体验 MCP 协议? 🎉 桌面体验:直接下载官方桌面版本,快速测试协议功能。这是最便捷的方式,适合新手体验。 桌面体验:直接下载官方桌面版本,快速测试协议功能。这是最便捷的方式,适合新手体验。 🎉 自定义 MCP 服务 开发者可以基于 MCP 官方说明,完全自定义自己的服务。这部分是基于 Python 实现的,并且提供了丰富的开发工具和模块,包括: • Tool:支持外部工具扩展。 • Promise:实现任务调度。 • Sample:提供丰富的使用示例。 自定义 MCP 服务 开发者可以基于 MCP 官方说明,完全自定义自己的服务。这部分是基于 Python 实现的,并且提供了丰富的开发工具和模块,包括: • Tool:支持外部工具扩展。 • Promise:实现任务调度。 • Sample:提供丰富的使用示例。 对智能体行业的未来影响 MCP 协议的发布对智能体领域有着深远影响,甚至可以称之为“行业重构”: 🎉 1. 降低开发门槛:任何企业都能基于 MCP 自主开发智能体,无需依赖第三方封闭平台。 2. 推动开源生态繁荣:随着 MCP 的开源协议被广泛采用,全球开发者社区将迎来新一轮创新浪潮。 3. 中间件平台生存空间缩减:由于 MCP 打破了中间件平台的垄断,传统中间件公司的竞争压力将大幅增加。 1. 降低开发门槛:任何企业都能基于 MCP 自主开发智能体,无需依赖第三方封闭平台。 2. 推动开源生态繁荣:随着 MCP 的开源协议被广泛采用,全球开发者社区将迎来新一轮创新浪潮。 3. 中间件平台生存空间缩减:由于 MCP 打破了中间件平台的垄断,传统中间件公司的竞争压力将大幅增加。 🎉 MCP 协议的出现,将智能体开发从封闭走向开放,为开发者提供了更自由、更安全的生态环境。未来,随着更多模型公司加入 MCP 协议生态,智能体行业的格局或将彻底改写。如果你是一名开发者,建议尽早熟悉和应用 MCP 协议,把握这一历史性机遇。 MCP 协议的出现,将智能体开发从封闭走向开放,为开发者提供了更自由、更安全的生态环境。未来,随着更多模型公司加入 MCP 协议生态,智能体行业的格局或将彻底改写。如果你是一名开发者,建议尽早熟悉和应用 MCP 协议,把握这一历史性机遇。 官方项目地址 🎉 • Claude 中文文档:(https://docs.anthropic.com/zh CN/docs/welcome) • Claude 官网:(https://claude.ai/) • MCP 协议 GitHub 项目:(https://github.com/modelcontextprotocol/servers) • Claude 中文文档:(https://docs.anthropic.com/zh CN/docs/welcome) • Claude 官网:(https://claude.ai/) • MCP 协议 GitHub 项目:(https://github.com/modelcontextprotocol/servers) 环境安装 下载并安装python 官网:https://www.python.org/ 这里就不深入讲解如何安装了,不懂的同学网上找找教程。 安装uv 1. uv介绍 MCP开发要求借助uv进行虚拟环境创建和依赖管理。uv 是一个Python 依赖管理工具,采用 Rust 编写, 功能类似于pip,venv,但它更快、更高效,并且可以更好地管理 Python 虚拟环境和依赖项。也就是说他兼有了创建虚拟环境和包管理工具的功能,可以平替pip,venv。 它完全兼容 pip :支持 requirements.txt 和 pyproject.toml 依赖管理。 跨平台:支持 Windows、macOS 和 Linux。 2. uv安装 ctrl+r,打开命令行,输入一下命令安装uv uv常见使用命令可以自行问AI或百度,此处不再赘述。 案例场景概述 我们先从最简单的案例入手,创建client端,server端,然后联调通,对mcp建立起一个初步完整的认知即可,尽最大可能避免引入复杂的东西。 所以,我们的案例就是:通过手动创建的client运行起来后,来调用server端的逻辑,server端的逻辑就是:创建一个名为aaa.txt文件,写入 今天天气真好! ,即可。 MCP客户端 初始化client项目 进入自己的代码目录下,创建一个文件夹: 可以看到一个完整的初始化项目目录:包含项目入口文件,依赖管理文件等。 创建MCP客户端虚拟环境 这里我们用cursor打开项目,进行后面的操作。 修改客户端使其能与服务端通信 客户端核心逻辑 前面,我们写了客户端代码,但是只是说接通了在线或本地大模型,客户端若需要与服务端通信,就需要修改客户端代码了,客户端的核心逻辑就要调整为: 1、启动并初始化 MCP 客户端 2、连接MCP服务端 2、列出 MCP 服务器上的工具 3、运行交互式聊天循环,处理用户对话 • • 将用户输入发送给 OpenAI 模型 • • 如果模型想调用 MCP 工具(Function Calling),就执行 call tool • • 将结果重新发给模型,并返回最终回答 修改原有客户端代码 在原有基础上修改代码,只需要增加或修改一下代码即可: 增加连接服务端的方法 增加列出服务端工具列表的方法 修改用户对话逻辑

在 小宇宙note 阅读完整内容