【MCP协议】MCP服务器开发指南——「小白也能看」模型_

354 阅读21分钟
  1. MCP是什么?初学者友好的解释

Model Context Protocol (MCP) 是一个开源协议,它允许大型语言模型(LLM)如Claude等安全地与外部工具和数据源交互。简单来说,MCP就像是AI模型与外部世界的"沟通桥梁"。使用MCP,AI可以查询数据库、读写文件、发送邮件,甚至控制其他应用程序,而不需要完全开放系统权限。

想象一下,你正在与Claude聊天,突然需要它帮你查看今天的天气、在日历中添加会议、或者在数据库中查询信息。没有外部工具接入能力,Claude只能说"对不起,我无法访问实时数据"。而通过MCP,Claude可以通过预定义的安全接口与这些工具通信,完成你的请求。

为什么要使用MCP?

安全性:MCP提供了一种受控方式让AI与外部系统交互,而不是给予无限制的系统访问权限 结构化:使用标准化的方式定义工具、资源和提示,使AI能够更好地理解和使用它们 易于扩展:你可以创建自己的MCP服务器来扩展AI的能力,让它能够与你的应用或服务交互 MCP的工作原理

MCP采用客户端-服务器模型,其工作流程如下:

用户界面 (如Claude) ◄────► MCP客户端 (Claude Desktop) ◄────► MCP服务器 (你开发的服务器)

外部服务和数据源 (数据库、API等)

当用户要求AI完成某项任务时,MCP客户端会将请求转发到适当的MCP服务器。服务器执行操作并返回结果,然后AI使用这些结果为用户提供答案。整个过程对用户来说是透明的,就像是AI本身具备了这些能力一样。

MCP服务器的核心组件

MCP服务器主要由以下几个组件组成:

工具(Tools):AI可以调用的函数,如"搜索数据库"、"发送邮件"等 资源(Resources):AI可以访问的数据源,如文档、数据库表等 提示(Prompts):预定义的对话模板,帮助用户快速开始有结构的对话

这三个组件之间的关系可以用下图表示:

MCP服务器

工具 (Tools)

• 函数调用 • API集成 • 系统操作

资源 (Resources)

• 数据访问 • 文档读取 • 信息库

提示 (Prompts)

• 对话模板 • 引导用户 • 结构化交互 2. 开发环境准备

在开始开发MCP服务器之前,我们需要准备开发环境。这个过程包括安装必要的工具和库,创建项目目录,以及设置开发环境变量。

安装Python 3.10+ → 安装pip和venv → 创建虚拟环境

初始化项目结构 ← 配置pyproject.toml ← 安装MCP SDK 2.1 安装Python

确保你的系统上安装了Python 3.10或更高版本。可以使用以下命令检查Python版本:

python --version

1

如果需要安装或更新Python,可以从Python官网下载最新版本。

2.2 创建虚拟环境

虚拟环境允许你为每个项目创建独立的Python环境,避免依赖冲突。这就像是为每个项目提供了一个独立的"房间",里面只安装该项目需要的"家具"(依赖包)。当你切换项目时,只需简单地"搬家"(切换虚拟环境),而不是重新布置整个"房子"(全局Python环境)。

  1. MCP服务器项目结构

一个良好的项目结构能够让开发和维护变得更加轻松。就像一座精心设计的建筑,每个房间都有特定的用途,每个组件都有明确的位置。

标准项目结构

一个基本的MCP服务器项目结构如下:

my-mcp-server/ ├── pyproject.toml # 项目配置和依赖管理 ├── src/ │ └── my_mcp_server/ # 包含服务器代码的模块 │ ├── init.py # 定义入口点和命令行接口 │ ├── main.py # 直接运行模块的入口点 │ └── server.py # 主要的服务器实现代码 └── tests/ # 测试代码目录

1 2 3 4 5 6 7 8 各个文件的作用 ┌─────────────────────────────────────────────────────────────────────┐ │ pyproject.toml │ │ │ │ • 定义项目元数据(名称、版本、描述等) │ │ • 声明项目依赖 │ │ • 配置构建系统 │ │ • 设置开发工具(如linter、测试工具) │ └─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐ │ init.py │ │ │ │ • 将目录标记为Python包 │ │ • 定义命令行入口点 │ │ • 处理命令行参数 │ │ • 配置日志系统 │ └─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐ │ main.py │ │ │ │ • 允许模块作为脚本运行 │ │ • 调用主函数 │ └─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐ │ server.py │ │ │ │ • 实现服务器核心逻辑 │ │ • 定义工具、资源和提示 │ │ • 处理MCP协议通信 │ └─────────────────────────────────────────────────────────────────────┘

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

创建这些文件:

mkdir -p src/my_mcp_server tests touch pyproject.toml src/my_mcp_server/init.py src/my_mcp_server/main.py src/my_mcp_server/server.py

1 2 4. 基础配置:pyproject.toml

pyproject.toml是Python项目的"身份证",它不仅包含项目的基本信息,还声明了项目的依赖关系和构建配置。正确配置这个文件对于项目的分发和安装至关重要。

pyproject.toml的重要性

在现代Python项目中,pyproject.toml已经逐渐替代了传统的setup.py,成为了声明项目元数据和依赖的标准方式。它使用TOML格式,比传统的Python脚本更加结构化和易于解析。

一个完整的配置示例 [project] name = "my-mcp-server" version = "0.1.0" description = "我的第一个MCP服务器" readme = "README.md" requires-python = ">=3.10" authors = [{ name = "你的名字" }] dependencies = [ "click>=8.1.7", # 命令行参数处理 "mcp>=1.0.0", # Python MCP SDK "pydantic>=2.0.0", # 数据验证和模式定义 ]

[project.scripts] my-mcp-server = "my_mcp_server:main"

[build-system] requires = ["hatchling"] build-backend = "hatchling.build"

[tool.uv] dev-dependencies = ["pyright>=1.1.389", "ruff>=0.7.3", "pytest>=8.0.0"]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 依赖选择说明

在上述配置中,我们选择了以下几个关键依赖:

click:一个用于创建优雅命令行界面的库,它使得解析命令行参数变得简单直观 mcp:Python的MCP SDK,提供了实现MCP服务器所需的所有基础功能 pydantic:一个数据验证和设置管理库,用于定义强类型的数据模型和参数验证

这些依赖就像是建筑的基础材料,每一个都承担着特定的功能,共同构建起一个稳固的MCP服务器。

  1. 命令行接口

命令行接口是用户与你的MCP服务器交互的入口。在这一节,我们将实现一个简单但功能完备的命令行界面。

5.1 命令行参数处理

命令行接口的工作流程如下:

解析命令行参数 → 配置日志级别 → 启动MCP服务器

监听客户端请求 ← 处理请求 ← 返回响应 6. 服务器主逻辑

服务器主逻辑是MCP服务器的核心部分,负责接收客户端请求、调用相应的工具或资源,并返回结果。

6.1 服务器生命周期

MCP服务器的生命周期如下:

初始化 创建服务器实例 → 等待请求 监听标准输入 → 接收请求 解析JSON请求

↓↑

关闭 清理资源 ← 发送响应 写入标准输出 ← 处理请求 调用工具/资源 7. 高级特性:资源和提示

除了工具之外,MCP服务器还可以提供资源和提示,让AI模型获取更多上下文信息和提供更结构化的交互。这些特性就像是服务器提供的"文档"和"模板",使AI能够更好地理解和使用服务器的功能。

MCP组件关系图 ┌───────────────────────────────────────────────────────────────────┐ │ MCP服务器 │ │ │ │ │ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ │ │ │ │ │ │ │ │ 工具 │ │ 资源 │ │ 提示 │ │ │ │ (Tools) │ │ (Resources) │ │ (Prompts) │ │ │ │ │ │ │ │ │ │ │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ SQLite数据库连接 │ │ │ │ │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────┘

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 8.1 添加资源

资源是AI可以访问的数据源,可以是文本文档、JSON数据、图片等。在我们的问候服务器中,我们添加了一个"支持的语言"资源,用于告诉AI我们支持哪些语言。

资源请求流程 ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ AI请求资源列表 │────► 服务器返回资源列表 │────► AI请求特定资源 │ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ │ │ 服务器返回资源内容 │ │ │ └─────────────────┘

1 2 3 4 5 6 7 8 9 10 11 12 代码实现 from pydantic import AnyUrl from mcp.types import Resource

在serve函数中添加这个处理器

@server.list_resources() async def list_resources() -> list[Resource]: """列出可用的资源""" return [ Resource( name="Supported Languages", uri=AnyUrl("supported-languages://list"), description="支持的问候语言列表" ) ]

@server.read_resource() async def read_resource(uri: AnyUrl) -> str: """读取资源内容""" if str(uri) == "supported-languages://list": languages = { "english": "英语", "chinese": "中文", "spanish": "西班牙语", "french": "法语", "japanese": "日语" } language_list = "\n".join([f"- {code}: {name}" for code, name in languages.items()]) return f"# 支持的语言\n\n{language_list}"

raise ValueError(f"未知资源: {uri}")

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 8.2 添加提示

提示是预定义的对话模板,有助于引导用户以特定结构与AI交互。在我们的问候服务器中,我们添加了一个"问候演示"提示,让用户可以更轻松地体验服务器的功能。

提示请求流程 ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ 用户选择提示 │────► AI请求提示列表 │────► 服务器返回提示列表│ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └────────┬────────┘ │ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ AI使用提示内容 │◄────┤ 服务器返回提示内容 │◄────┤ AI请求特定提示 │ │ 引导对话 │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘

1 2 3 4 5 6 7 8 9 10 11 12 代码实现 from mcp.types import Prompt, PromptMessage, GetPromptResult

@server.list_prompts() async def list_prompts() -> list[Prompt]: """列出可用的提示""" return [ Prompt( name="greeting-demo", description="问候演示提示", argument_schema={ "type": "object", "properties": { "name": { "type": "string", "description": "用户名" } }, "required": ["name"] } ) ]

@server.get_prompt() async def get_prompt(name: str, arguments: dict[str, str] | None) -> GetPromptResult: """获取提示内容""" if name != "greeting-demo" or not arguments or "name" not in arguments: raise ValueError("无效的提示名称或缺少必要参数")

user_name = arguments["name"]
prompt_text = f"""
这是一个问候服务演示。你好,{user_name}!

这个服务器支持以下工具:
- get_greeting: 生成不同语言的问候语
- get_time_greeting: 根据当前时间生成不同语言的问候语

试试用不同的语言问候{user_name}!
"""

return GetPromptResult(
    name="greeting-demo",
    description=f"针对{user_name}的问候演示",
    messages=[
        PromptMessage(
            role="user",
            content=TextContent(type="text", text=prompt_text.strip()),
        )
    ],
)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 用户体验角度

从用户的角度来看,资源和提示极大地提升了交互体验:

资源:用户可以通过AI了解服务器支持的语言和其他重要信息,而不需要额外的文档 提示:用户可以通过选择提示快速开始一个结构化的对话,无需从零开始

这就像是访问一个网站时,有清晰的导航菜单和预先设计的表单,让用户不必猜测如何使用网站的功能。

  1. 安装和运行

完成代码后,是时候将我们的服务器安装到本地环境并运行了。这个阶段就像是将精心设计的菜肴从厨房端到餐桌上,让用户可以品尝你的成果。

安装流程 ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ 开发模式安装 │────► 运行服务器 │────► 测试功能 │ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘

1 2 3 4 5 安装命令

安装开发模式

uv pip install -e . # 或使用 pip install -e .

运行服务器

my-mcp-server -v

1 2 3 4 5 为什么使用开发模式?

开发模式(-e选项)创建一个指向你项目源代码的链接,而不是复制代码到安装目录。这意味着:

修改源代码后无需重新安装 可以立即看到代码更改的效果 开发和调试更加方便

这就像是在一个工作室里进行创作,你可以随时调整和改进你的作品,而不需要每次都重新从头开始。

  1. 与Claude Desktop集成

将你的MCP服务器与Claude Desktop集成是让它发挥作用的关键步骤。通过这种集成,Claude可以利用你的服务器提供的工具、资源和提示,增强其功能。

10.1 集成步骤 打开Claude Desktop → 编辑配置文件 → 添加服务器配置

开始对话 使用新工具 ← 重启Claude Desktop ← 保存配置 10.2 详细配置指南

将你的MCP服务器集成到Claude Desktop中需要几个简单的步骤。想象一下,你正在向Claude介绍一位新朋友(你的MCP服务器),这样Claude就能够利用这位朋友的特殊技能。

配置文件位置

Claude Desktop的配置文件通常位于:

macOS: ~/Library/Application Support/Claude/config.json Windows: %APPDATA%\Claude\config.json Linux: ~/.config/Claude/config.json 配置内容

在配置文件中,你需要在mcpServers部分添加你的服务器信息:

{ "mcpServers": { "greeting": { "command": "my-mcp-server", "args": ["-v"] } } }

1 2 3 4 5 6 7 8

这个配置告诉Claude Desktop:

有一个名为"greeting"的MCP服务器可用 启动这个服务器的命令是my-mcp-server 运行时使用-v参数(启用INFO级别的日志) 服务器注册过程

当Claude Desktop启动时,它会自动检查配置文件中列出的所有MCP服务器,并尝试连接它们。如果连接成功,服务器提供的工具、资源和提示就会在Claude中变得可用。

这个过程就像是Claude在启动时"认识"了所有可用的朋友(服务器),并了解了它们各自的特长(工具和资源),以便在需要时向它们寻求帮助。

用户交互模式

一旦集成完成,用户可以通过以下方式与你的MCP服务器交互:

直接请求:用户可以直接要求Claude使用特定的工具,例如"用中文问候我" 资源查询:Claude可以查询服务器提供的资源,例如"列出支持的语言" 提示选择:用户可以选择预定义的提示,快速开始特定类型的对话

从用户的角度来看,整个过程是无缝的,就像是Claude本身具有了这些能力一样。这种透明性是MCP最大的优势之一,它使AI的能力扩展变得简单而自然。

  1. 测试你的MCP服务器

测试是确保MCP服务器稳定性和可靠性的关键环节。通过全面测试,你可以在部署前发现并修复潜在问题。

11.1 测试流程

测试流程应该包括单元测试、集成测试和端到端测试,确保服务器的各个组件和整体功能都能正常工作。

启动测试客户端 → 列举可用工具 → 调用工具

验证输出结果 ← 接收响应 ← 发送参数 12. 高级示例:数据库查询服务器

随着你的MCP服务器开发技能提升,你可以尝试创建更复杂的服务器。一个常见的高级应用是数据库查询服务器,它允许AI模型与数据库交互,执行查询、插入、更新和删除操作。

12.1 SQLite数据库服务器架构

一个SQLite数据库MCP服务器的架构如下:

SQLite MCP服务器

查询执行工具 • 执行SQL语句 • 返回查询结果 • 错误处理

表结构查询工具 • 列出所有表 • 获取表结构 • 提供表数据字典

业务洞察资源 • 提供商业分析 • 常用查询模板 • 数据解释指南

SQLite数据库连接 13. 最佳实践

在MCP服务器开发过程中,遵循最佳实践不仅可以提高代码质量,还可以增强服务器的安全性、可靠性和可维护性。这就像是建造房屋时遵循建筑规范,确保房屋不仅美观,还安全、耐用。

  1. 安全性最佳实践

安全性是MCP服务器开发中最重要的考虑因素之一。就像你不会给陌生人你家的钥匙一样,你应该谨慎控制AI对系统的访问权限。

┌───────────────────────────────────────────────────────────────────┐ │ 安全最佳实践 │ │ │ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ │ │ │ │ │ │ │ │ 输入验证 │ │ 权限控制 │ │ 敏感操作确认 │ │ │ │ │ │ │ │ │ │ │ │ • 类型检查 │ │ • 最小权限原则 │ │ • 二次确认 │ │ │ │ • 范围验证 │ │ • 资源隔离 │ │ • 操作日志 │ │ │ │ • 注入防护 │ │ • 认证机制 │ │ • 撤销机制 │ │ │ │ │ │ │ │ │ │ │ └───────────────┘ └───────────────┘ └───────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────┘

1 2 3 4 5 6 7 8 9 10 11 12 13 14 具体措施: 使用参数验证:使用Pydantic等工具验证所有输入 避免直接执行shell命令:如果必须执行,严格过滤参数 限制文件系统访问:只允许访问特定目录 使用参数化查询:防止SQL注入攻击 实现速率限制:防止资源耗尽攻击 2. 错误处理最佳实践

良好的错误处理可以提高服务器的稳定性和用户体验。就像一个好的导航系统不仅能带你到目的地,还能在遇到道路封闭时提供替代路线。

具体措施: 提供有意义的错误消息:清晰说明问题所在 区分用户错误和系统错误:不同类型的错误需要不同的处理方式 实现适当的日志记录:记录错误详情,但避免泄露敏感信息 优雅降级:在部分功能不可用时,仍能提供有限服务 异常隔离:确保一个工具的故障不会影响其他工具 3. 性能优化最佳实践

性能优化可以使你的服务器更加高效和响应迅速。就像一位厨师会不断优化他的烹饪流程,使美食更快地端上餐桌。

具体措施: 缓存常用数据:减少重复计算和查询 使用异步操作:避免阻塞服务器 优化数据库查询:使用索引,减少不必要的查询 限制响应大小:分页返回大型结果集 资源池化:重用数据库连接等资源 4. 代码组织最佳实践

良好的代码组织使得维护和扩展服务器变得更加容易。这就像是一个整洁有序的工作空间,能够提高工作效率和创造力。

具体措施: 模块化设计:将功能分解为小型、专注的模块 关注点分离:将业务逻辑与MCP服务器层分开 使用依赖注入:减少组件间的耦合 遵循编码规范:使用一致的命名和格式化风格 编写文档和注释:解释复杂的逻辑和设计决策 5. 用户体验最佳实践

良好的用户体验可以使你的服务器更容易使用和理解。就像一个精心设计的用户界面可以让复杂的应用变得直观易用。

具体措施: 提供详细的工具描述:清晰说明工具的功能和参数 返回格式化的结果:使结果易于阅读和理解 创建有用的提示模板:帮助用户快速开始 提供示例和教程:展示如何使用服务器 收集用户反馈:不断改进服务器 14. 常见问题

在开发和使用MCP服务器的过程中,你可能会遇到各种问题。提前了解这些问题及其解决方案,就像在旅行前了解可能的路障和绕行路线,可以让你的开发之旅更加顺畅。

  1. 调试问题

调试是开发过程中不可避免的一部分,掌握有效的调试技巧可以节省大量时间。

常见问题:服务器启动失败

症状:运行服务器命令时出错,服务器无法启动

可能原因:

依赖缺失或版本不兼容 配置文件错误 端口已被占用

解决方案:

使用-v或-vv增加日志详细程度 检查所有依赖是否正确安装 验证配置文件格式和内容 检查是否有其他服务使用相同端口 常见问题:工具调用失败

症状:工具列表显示正常,但调用时出错

可能原因:

工具实现有bug 参数验证失败 外部资源不可用

解决方案:

添加特定于工具的调试日志 使用测试客户端检查参数传递 验证所有外部依赖是否可用 2. 性能问题

随着使用量的增加,你可能会遇到性能瓶颈,及时识别和解决这些问题对于维护良好的用户体验至关重要。

常见问题:响应缓慢

症状:工具调用需要很长时间才能返回结果

可能原因:

复杂计算或查询 外部资源响应慢 资源泄漏

解决方案:

分析性能瓶颈,使用性能分析工具 实现缓存机制 优化算法和查询 使用异步处理长时间运行的任务 常见问题:内存使用过高

症状:服务器随着时间推移消耗越来越多的内存

可能原因:

内存泄漏 缓存策略不当 大型响应没有流式处理

解决方案:

使用内存分析工具检测泄漏 实现缓存大小限制和过期策略 对大型响应使用分页或流式处理 3. 集成问题

将MCP服务器与Claude或其他客户端集成时,可能会遇到各种问题。

常见问题:Claude无法识别服务器

症状:Claude报告找不到MCP服务器

可能原因:

配置文件路径错误 服务器命令不在PATH中 服务器名称配置错误

解决方案:

验证配置文件位置和内容 确保服务器命令可全局访问 重启Claude Desktop应用 常见问题:通信错误

症状:Claude可以启动服务器,但无法正常通信

可能原因:

MCP协议实现不兼容 输入/输出流设置不正确 编码问题

解决方案:

更新到最新版本的MCP SDK 确保使用正确的流处理器(通常是stdio) 检查字符编码是否一致 4. 部署问题

将MCP服务器部署到生产环境可能会带来新的挑战。

常见问题:依赖冲突

症状:服务器在开发环境运行正常,但在生产环境失败

可能原因:

依赖版本不一致 系统库不兼容 权限问题

解决方案:

使用虚拟环境或容器隔离依赖 明确指定所有依赖的版本 使用pip freeze > requirements.txt锁定依赖 常见问题:多用户访问冲突

症状:多个用户同时使用服务器时出现问题

可能原因:

资源竞争 缺乏并发控制 状态管理不当

解决方案:

实现适当的锁和并发控制 为每个用户会话创建独立的状态 使用队列系统管理负载 15. 结论

恭喜!你现在已经了解了如何使用Python创建自己的MCP服务器。MCP为AI模型提供了一种安全、结构化的方式与外部世界交互,而你可以通过创建自己的服务器来扩展这些能力。

你学到了什么

通过这篇指南,你已经掌握了MCP服务器开发的全过程,从基本概念到高级应用:

MCP的核心概念:工具、资源和提示如何共同工作 项目结构设计:如何组织你的代码以实现清晰和可维护性 服务器实现:如何使用Python MCP SDK创建服务器 高级特性:如何添加资源和提示来增强用户体验 测试和调试:如何确保你的服务器正常工作 集成和部署:如何将你的服务器与Claude Desktop集成 最佳实践:如何编写安全、高效、可维护的代码 下一步

MCP服务器开发是一个广阔的领域,有无限的可能性。随着你的经验积累,你可以:

创建更复杂的服务器:实现更多样化的功能 探索新的集成点:连接更多的外部服务和API 优化性能和安全性:提升服务器的质量 分享你的创造:将你的服务器发布到开源社区 开发自定义UI:创建专门的界面来使用你的服务器

从简单的问候服务器到复杂的数据库查询工具,可能性是无限的。随着你的经验积累,你可以创建更复杂、更有用的服务器,以满足你的特定需求。

最后的思考

MCP代表了AI与外部世界交互的新范式。通过创建自己的MCP服务器,你不仅扩展了AI的能力,还参与塑造了AI与人类协作的未来。就像是给AI提供了新的感官和能力,让它能够以更加有用和安全的方式融入我们的日常生活和工作。

希望这篇指南对你有所帮助!如果你有任何问题或建议,请随时联系我。祝你在MCP服务器开发之旅中取得成功!