如何编写一个MCP Server给Cursor使用?国内优质MCP客户端有哪些

B站影视 日本电影 2025-04-08 09:07 1

摘要:对于想要深入了解 MCP 技术的开发者,AIbase 的 MCP 资源网站(https://www.aibase.com/zh/repos/topic/mcp)是一个绝佳的选择。该网站提供了丰富的学习资料、开发工具和社区支持,帮助开发者更好地掌握 MCP 技术

对于想要深入了解 MCP 技术的开发者,AIbase 的 MCP 资源网站(https://www.aibase.com/zh/repos/topic/mcp)是一个绝佳的选择。该网站提供了丰富的学习资料、开发工具和社区支持,帮助开发者更好地掌握 MCP 技术。

丰富的学习资料:从基础概念到高级应用,AIbase 提供了详细的文档和教程,适合不同水平的开发者。

实用的开发工具:包括 MCP Server 的示例代码和开发框架,帮助开发者快速搭建和测试自己的 MCP Server。

活跃的社区交流:开发者可以在社区中交流经验、分享项目、提出问题并获得解答。

通过 AIbase 的资源,您可以更深入地探索 MCP 的潜力,并将其应用于更多复杂的场景中

编写一个供 Cursor 使用的 MCP Server 涉及到理解 MCP 的基本原理、定义 Server 的功能、使用 MCP SDK 进行开发以及在 Cursor 中进行配置。

以下是详细的步骤和说明:

一、理解 MCP 的基本原理

MCP(Model Context Protocol)是一个开放协议,旨在标准化应用程序如何向大型语言模型(LLM)提供上下文信息。它通过一个标准的中间协议层,使得 AI 模型能够以一致的方式连接各种数据源、工具和功能。

MCP 架构包含三个核心组件:

MCP Host:是指启动连接的应用程序,例如 Cursor、Claude Desktop 和 Cline。

MCP Client:客户端在 Host 应用程序内维护与 Server 之间 1:1 的连接。

MCP Server:通过标准化的协议,为 Client 端提供上下文、工具和提示。您的目标是创建一个 MCP Server。

MCP Server 可以提供三种主要类型的功能:

工具(Tools):可以被 LLM 调用来执行特定操作的函数。

资源(Resources):类似文件的数据,可以被客户端读取(如 API 响应或文件内容)。

提示(Prompts):预先编写的模板,帮助用户完成特定任务。对于供 Cursor 使用的 Server,工具(Tools)是最常见的形式,允许 Cursor 的 AI 助手执行各种操作。

二、确定 MCP Server 的功能

在开始编写 Server 之前,您需要明确您的 Server 将提供哪些功能。思考一下您希望 Cursor 的 AI 助手能够通过您的 Server 完成哪些任务。

例如,如果您希望 Cursor 能够与本地文件系统交互,您可以创建一个提供以下工具的 Server:

list_files:列出指定目录下的文件。

read_file:读取指定文件的内容。

write_file:将内容写入指定文件。

另一个例子是创建一个与 GitHub 交互的 Server,提供:

search_repositories:搜索 GitHub 仓库。

search_issues:搜索 GitHub Issues。

create_issue:在 GitHub 仓库中创建新的 Issue。

三、选择技术栈和 MCP SDK

MCP 官方提供了 Python 和 TypeScript 的 SDK,您可以选择您熟悉或适合您需求的语言。

Python SDK:提供了 mcp 库,方便您创建 MCP Server。示例代码展示了如何使用 FastMCP 创建一个简单的文件统计 Server。

TypeScript SDK:同样提供了相应的库来构建 MCP Server。

根据官方信息,使用 Python 技术栈开发简单的 MCP Server 是一个不错的入门方式。

四、使用 MCP SDK 实现 Server

初始化 Server

使用 SDK 提供的类(例如 Python SDK 中的 FastMCP 或 Server)来创建您的 MCP Server 实例,并为其命名。

定义工具(Tools)

使用 SDK 提供的装饰器(例如 Python SDK 中的 @mcp.tool 或 @app.call_tool)来标记您的函数为可被 LLM 调用的工具。每个工具函数都应该有一个清晰的名称(name)和描述(description),描述其功能。这些信息将用于告知 LLM 该工具的作用。

您需要定义工具的输入参数(inputSchema),描述调用该工具所需的参数,包括参数的名称、类型和描述。MCP SDK 通常支持使用 JSON Schema 来定义 inputSchema。

工具函数应实现具体的功能逻辑,并返回 LLM 可以理解的结果(例如文本、JSON 格式的数据)。

实现 list_tools 函数

您的 Server 需要实现一个函数(通常通过装饰器标记,例如 Python SDK 中的 @app.list_tools)来返回一个包含所有可用工具信息的列表。这个列表将告知 Client 端您的 Server 提供了哪些工具,以及如何调用它们。

实现 call_tool 函数

您需要实现一个函数(通常通过装饰器标记,例如 Python SDK 中的 @app.call_tool)来处理 Client 端发送的工具调用请求。这个函数会接收被调用的工具名称和参数,然后根据名称调用相应的工具函数并返回结果。

处理通信

MCP Server 需要监听来自 Client 端的连接和请求。常见的通信方式包括标准输入输出(stdio)和 Server-Sent Events(SSE)。Python SDK 提供了 StdioServerTransport 和 SseServerTransport 等来实现不同的通信方式。对于 Cursor,通常使用命令行方式启动 Server,通过 stdio 进行通信可能更直接。

五、配置 Cursor 以使用您的 MCP Server

Cursor 使用 .cursor/mcp.json 文件来配置要连接的 MCP Server。您需要在您的项目目录(或者全局配置目录)下创建或编辑这个文件。

在 mcp.json 文件中,您需要添加一个 JSON 对象来描述您的 MCP Server。这个对象通常包含以下字段:

name:您的 MCP Server 的名称,在 Cursor 中用于标识。

command:启动您的 MCP Server 的命令,包括可执行文件的路径。如果您的 Server 是一个 Python 脚本,这可能是 Python 解释器的路径。

args:传递给启动命令的参数,例如您的 Server 脚本的路径。

type:通信类型,例如 command 表示通过命令行启动并使用 stdio 通信。

示例 mcp.json 配置(假设您的 Server 是一个名为 my_server.py 的 Python 脚本):

{ "mcpServers": { "my_custom_server": { "command": "/usr/bin/env", "args": ["python", "/path/to/your/my_server.py"], "type": "command"
}
}
}

请将 /path/to/your/my_server.py 替换为您的实际 Server 脚本路径。您可以使用 which python 命令获取 Python 解释器的路径。

对于 Windows 平台,您可能需要在 command 中使用 cmd /c 来执行命令。例如:

{ "mcpServers": { "my_custom_server": { "command": "cmd", "args": ["/c", "python", "/path/to/your/my_server.py"], "type": "command"
}
}
}

六、运行和测试您的 MCP Server

保存您的 MCP Server 代码和 mcp.json 配置文件。

重新启动 Cursor。

在 Cursor 中与 AI 助手交互,尝试触发您在 Server 中定义的工具。例如,如果您创建了一个文件系统 Server,您可以询问类似 “列出我桌面上的所有文本文件”。

Cursor 的 AI 助手会分析您的请求,如果判断需要使用您的 MCP Server 提供的工具,它会向您的 Server 发送请求。

您可以在您的 Server 端添加日志输出来查看是否收到了请求、执行了哪些工具以及返回了什么结果。

提到了可以使用 MCP Inspector 来测试 Server。您可以通过运行 mcp dev your_server.py(如果使用 Python SDK 的 CLI)来启动 Inspector,并在浏览器中查看和测试您的 Server 提供的工具。

七、注意事项

安全性:请注意您暴露的工具可能带来的安全风险,特别是涉及到文件系统操作或敏感数据访问时。确保对工具的使用进行适当的权限控制和验证。

错误处理:在您的 Server 代码中实现完善的错误处理机制,以便在工具调用失败时能够向 Cursor 提供有用的错误信息。

文档:为您的 MCP Server 提供清晰的文档,说明其提供的工具、参数和预期行为,方便您自己和其他开发者使用。

参考官方文档和示例:MCP 官方文档和 SDK 提供的示例代码是您学习和开发的宝贵资源。

通过以上步骤,您应该能够编写一个供 Cursor 使用的 MCP Server,扩展 Cursor 的 AI 助手的功能,使其能够与您定义的外部系统或数据进行交互。记住从简单的工具开始,逐步增加复杂性。

来源:站长之家

相关推荐