当前位置: 首页 > news >正文

模型上下文协议 (MCP):AI 与外部世界的标准化连接框架

模型上下文协议 (Model Context Protocol,简称 MCP) 是由 「Anthropic 公司(Claude AI 的创造者)于 2023 年底推出的一项开放协议」。其核心目标是「为 AI 模型与外部数据源、工具和服务之间的连接建立统一、安全、高效的标准」,解决当前 AI 生态中集成碎片化、开发重复和安全隐患等挑战。

一、MCP 核心概念:AI 的“万能适配器”

简单而言,你可以将 MCP 理解为一个 「“万能适配器”」 或 「“AI 的连接总线”」。它使得任何兼容的 AI 模型都能够以一种安全、标准化且无需重复开发的方式,灵活接入并利用丰富的外部资源(如数据库、API、文件系统、专业工具等)。

1. 核心特性与价值

标准化接口:

  • 统一资源定义:以一致的描述方式声明外部数据(资源)。
  • 统一工具调用:通过标准化的方式来定义和调用功能(工具)。
  • 价值:极大降低了开发者集成新工具或数据的成本,实现了“一次开发,多处使用”。

安全性:

  • 精细权限控制:服务端明确定义模型访问资源范围和可执行的操作。
  • 沙箱环境:工具执行通常在受控环境中进行,隔离潜在风险。
  • 价值:为企业和开发者提供了可控、可信的 AI 扩展能力,保障系统和数据安全。

模块化:

  • 功能通过独立的 “服务器 (Server)” 模块提供,每个服务器专注于特定领域(如文件操作、数据库查询、天气查询等)。
  • 价值:生态易于扩展和维护,开发者可以按需组合或开发专属的服务器。

模型无关性:

  • 协议设计独立于具体的 AI 模型。理论上,任何支持 MCP 客户端协议的模型(如 Claude、GPT 等)都可以利用相同的 MCP 服务器。
  • 价值:打破了模型与工具之间的绑定,促进了开放生态的形成。

二、MCP 生态资源

MCP 的活力依赖于其蓬勃发展的社区和丰富的可用资源。以下是一些关键的资源导航:

1. 官方与社区服务器列表 (awesome-mcp-servers)

链接:https://github.com/punkpeye/awesome-mcp-servers

描述:这是一个社区维护的精选列表,收录了各类高质量的 MCP 服务器项目,是寻找现成集成方案的首选入口。

2. PyPI 安装包

链接:https://pypi.org/search/?q=mcp

描述:Python 包索引中包含了官方的 mcp SDK 以及众多第三方开发的 MCP 服务器包,方便通过 pip 或 uv 快速安装。

3. MCP 服务平台与社区
  • MCP.so:一个在线的 MCP 服务器探索与测试平台。
  • ModelScope MCP 社区 (https://www.modelscope.cn/mcp):阿里云 ModelScope 平台下的中文 MCP 生态社区。
  • 智谱 MCP 市场 (https://bigmodel.cn/marketplace/index/mcp):智谱 AI 推出的 MCP 服务器市场。
  • Smithery.ai:一个用于构建、部署和管理 MCP 服务器的专业平台。

三、MCP 开发入门:构建你的第一个服务器

下面将引导你逐步创建一个具备基础功能的 MCP 服务器。

1. 项目初始化
# 使用 uv 创建并初始化项目(uv 是一个快速的 Python 包管理器和解析器) uv init mcp_base_server cd mcp_base_server # 测试运行主脚本并创建虚拟环境 uv run python main.py
2. 安装核心依赖
# 安装 MCP SDK 及其命令行工具 pip install mcp[cli] # 或使用 uv uv add mcp[cli]
3. 项目结构

创建以下基础模块结构:

mcp_base_server/ ├── __init__.py └── main.py # 服务器主入口文件
4. 编写服务器入口 (main.py)
#!/usr/bin/env python3 """ MCP 基础服务器示例 - 主入口文件 """ import sys import argparse # 导入mcp库 try: from mcp.server.fastmcp import FastMCP except ImportError: print("错误: 未安装MCP SDK。请使用 ‘uv add mcp[cli]‘ 或 ‘pip install mcp[cli]‘ 安装。") sys.exit(1) # 导入自定义的注册函数(将在后面定义) from .registrations import register_tools, register_resources, register_prompts # 默认配置 DEFAULT_HOST = "0.0.0.0" DEFAULT_PORT = 8000 def parse_arguments(): """解析命令行参数""" parser = argparse.ArgumentParser(descriptinotallow="MCP 基础功能示例服务器") # 传输协议选择 parser.add_argument( "--transport", choices=["stdio", "sse", "streamable-http"], default="stdio", help="选择传输协议: stdio(标准输入输出,适用于本地CLI集成), sse(服务器发送事件), streamable-http(流式HTTP)" ) # HTTP相关参数 parser.add_argument( "--host", default=DEFAULT_HOST, help=f"HTTP服务器监听主机地址(默认:{DEFAULT_HOST})", ) parser.add_argument( "--port", type=int, default=DEFAULT_PORT, help=f"HTTP服务器监听端口(默认:{DEFAULT_PORT})", ) return parser.parse_args() def main(): """服务器主函数""" args = parse_arguments() transport = args.transport host = args.host port = args.port # 根据传输协议创建和配置MCP server实例 if transport == "stdio": # 创建MCP server实例 mcp = FastMCP("BaseExampleServer") # 注册工具、资源和提示词到实例 register_tools(mcp) register_resources(mcp) register_prompts(mcp) print("启动 MCP 基础示例服务器,传输协议: stdio") mcp.run(transport="stdio") else: # 对于HTTP-based协议,创建时指定host和port mcp = FastMCP("BaseExampleServer", host=host, port=port) # 注册工具、资源和提示词到实例 register_tools(mcp) register_resources(mcp) register_prompts(mcp) if transport == "streamable-http": print(f"启动服务器 (streamable-http),监听地址: http://{host}:{port}") mcp.run(transport="streamable-http") elif transport == "sse": print(f"启动服务器 (SSE),监听地址: http://{host}:{port}/sse") mcp.run(transport="sse") if __name__ == "__main__": main()
5. 定义功能:工具、资源与提示词 (registrations.py)

创建一个新文件 registrations.py 来存放功能注册逻辑。

""" MCP 功能注册模块 集中定义工具(Tools)、资源(Resources)和提示词(Prompts) """ import sys from mcp.server.fastmcp import FastMCP # ---------- 工具 (Tools) 注册 ---------- def register_tools(mcp: FastMCP) -> None: """注册所有工具函数到MCP实例""" @mcp.tool() def calc_sum(x: int, y: int) -> str: """ 计算两个整数的和。 参数: x (int): 第一个加数 y (int): 第二个加数 返回: str: 包含计算结果的格式化字符串 """ try: result = x + y returnf"计算结果: {x} + {y} = {result}" except Exception as e: returnf"计算过程中发生错误: {str(e)}" # ---------- 资源 (Resources) 注册 ---------- def register_resources(mcp: FastMCP) -> None: """注册所有资源到MCP实例""" @mcp.resource("system://python/version") def get_python_version() -> str: """ 提供当前运行环境的 Python 版本信息。 返回: str: 格式化的版本信息字符串 """ try: returnf"Python 版本信息:\n{sys.version}" except Exception as e: returnf"获取系统信息时发生错误: {str(e)}" # ---------- 提示词 (Prompts) 注册 ---------- def register_prompts(mcp: FastMCP) -> None: """注册所有提示词模板到MCP实例""" @mcp.prompt() def get_calc_prompt(x: int, y: int) -> str: """ 生成一个请求计算两数之和的提示词。 参数: x (int): 第一个整数 y (int): 第二个整数 返回: str: 构造好的提示词 """ returnf"请帮我计算两个整数的和。这两个数分别是 {x} 和 {y}。请确保输出最终结果。"

「别忘了在主文件 main.py 顶部导入这些注册函数」:from .registrations import register_tools, register_resources, register_prompts

6. 配置与安装为全局工具

在项目根目录的 pyproject.toml 文件中,添加入口点配置:

[project.scripts] mcp-base-server = "mcp_base_server.main:main"

然后,将你的服务器安装到系统环境中,使其成为一个全局可用的命令:

# 在项目根目录执行 uv tool install . --force

安装后,你可以通过以下命令验证:

uv tool list # 输出应包含类似内容: # mcp-base-server v0.1.0 # - mcp-base-server

现在,你可以在任何地方直接使用 mcp-base-server 命令来启动你的服务器了。

四、MCP 服务器使用示例(以 Cherry Studio 为例)

MCP 服务器需要在一个兼容的客户端中运行和使用。以下以 Cherry Studio 为例展示连接流程。

1. 配置 MCP 服务器

在 Cherry Studio 的设置中,找到 MCP 服务器配置区域。

2. 使用已注册的功能

服务器成功连接后,你可以在客户端中直接调用已注册的功能:

(1) 调用工具

在聊天界面,模型现在可以调用 calc_sum 工具来进行计算。

(2) 使用提示词

你可以直接插入或让模型使用我们注册的 get_calc_prompt 提示词模板。

(3) 访问资源

模型可以读取 system://python/version 资源来获取环境信息。

3. 启动与管理服务器连接

在客户端配置中,你可以设置服务器启动命令为 mcp-base-server(因为我们已将其安装为全局工具),并选择传输协议(如 stdio)。

并再AI会话中使用`mcp`服务。 如下:

此外针对`sse`和streamable-http协议,可以把安装的工具放到含有外网`ip`的服务器上。

输入外网ip:端口的url地址即可。

五、总结

通过以上步骤,你完成了一个功能完整的 MCP 服务器的开发、安装与基础使用流程。MCP 通过其「标准化、安全性和模块化」的设计,正在成为连接 AI 模型与广阔数字世界的核心桥梁。无论是集成外部 API、查询数据库,还是连接内部业务系统,MCP 都提供了一条高效、统一的路径。

http://www.jsqmd.com/news/307551/

相关文章:

  • 生日鲜花批发多少钱,万花田性价比高不高值得中小店选购吗?
  • 汽车贴车衣服务费用多少 青岛平度光辉价格透明
  • 2026年水分活度仪厂商排名,靠谱且价格合理的企业哪家好
  • 2026年京津冀企业福利采购服务好的品牌排名,推荐哪家
  • 盘点2026年防撞板源头工厂排名,哪家口碑好?
  • 2026西安口碑好的权威短视频拍摄运营公司TOP3推荐
  • error_log默认格式的庖丁解牛
  • 苹果AirTag 2来了!重点升级UWB芯片,查找范围提升50%
  • 2026Q1国内输送设备厂家推荐,皮带线、网带线哪家好?品质标杆揭晓
  • 2026年是 AI落地大年,但会淘汰一批AI PPT工具
  • 靠谱的淀粉糖制造厂大盘点,这些企业实力不容小觑
  • 分析老牌铝板厂家鑫磊新材料,铝板批量定制价格多少钱?
  • 深度拆解|2026 线上雅思网课提分效果,线上雅思机构网课哪个好推荐?
  • 说说信誉好的中式快餐店,老乡鸡全产业链有保障
  • DHCP + 图文并茂讲VLAN,让你看一遍就理解VLAN——转载
  • 探寻吉辉高空,项目经验丰富吗,施工质量是否可靠
  • 解读三机一体除湿干燥机,选购时该如何选择厂家
  • 互联网大厂Java求职面试实战:电商场景下的Spring Boot、微服务与AI技术全解析
  • Eckart-Young-Mirsky 定理
  • d5
  • VLA^2 - kirin
  • 2026 年最新重庆餐厅装修推荐,重庆有哪些专业的厂房装修、诊所装修、培训机构装修
  • 2026西安网站建设公司TOP3推荐:口碑过硬的网站制作服务商优选指南
  • 闲置沃尔玛购物卡如何回收?五分钟变现攻略!
  • 北京2025箱式房定制排行:哪家服务好又靠谱?集装箱办公/集装箱租赁/集装箱设计/集成房屋设计,箱式房厂家选哪家
  • 软考高项零基础备考攻略:三位一体打基础,真题 + 复习拓深度
  • 2026年最新QQ炫舞下载安装全攻略 | 一文解决登录、更新、运行问题
  • 月之暗面(Moonshot AI):从长文本突破到AGI竞速,2026开年估值暴涨与最新产品解析
  • archlinux 设置副屏幕
  • 如何快速回收沃尔玛购物卡并变现?