MCP Server Implementation Guide
以下是一个指南和实现,用于创建你自己的 MCP (模型控制协议) 服务器,以便与 Cursor 集成: **标题:创建你自己的 Cursor 集成 MCP 服务器指南与实现** **简介:** Cursor 是一款强大的代码编辑器,它允许通过 MCP (Model Control Protocol) 与外部语言模型进行交互。 本指南将引导你完成创建自己的 MCP 服务器的过程,以便将你自己的语言模型集成到 Cursor 中。 **1. 了解 MCP (Model Control Protocol):** * **目的:** MCP 是一种允许 Cursor 与外部语言模型进行通信的协议。 它定义了 Cursor 如何向模型发送请求以及模型如何返回响应。 * **通信方式:** MCP 通常使用 JSON over WebSocket 进行通信。 * **关键消息类型:** * **`completion` 请求:** Cursor 向模型发送代码补全请求。 * **`completion` 响应:** 模型返回代码补全建议。 * **`chat` 请求:** Cursor 向模型发送聊天请求。 * **`chat` 响应:** 模型返回聊天回复。 * **`edit` 请求:** Cursor 向模型发送代码编辑请求。 * **`edit` 响应:** 模型返回代码编辑建议。 * **`health` 请求:** Cursor 向服务器发送健康检查请求。 * **`health` 响应:** 服务器返回健康状态。 **2. 选择编程语言和框架:** 你可以使用任何你喜欢的编程语言和框架来构建 MCP 服务器。 一些常见的选择包括: * **Python:** 使用 `websockets` 或 `aiohttp` 库。 * **Node.js:** 使用 `ws` 或 `socket.io` 库。 * **Go:** 使用 `gorilla/websocket` 库。 本指南将使用 Python 和 `websockets` 库作为示例。 **3. 设置 WebSocket 服务器:** 首先,你需要设置一个 WebSocket 服务器来监听来自 Cursor 的连接。 ```python import asyncio import websockets import json async def handle_connection(websocket, path): print(f"New connection from {websocket.remote_address}") try: async for message in websocket: print(f"Received message: {message}") try: data = json.loads(message) # 处理消息 response = await process_message(data) await websocket.send(json.dumps(response)) except json.JSONDecodeError: print("Invalid JSON received") await websocket.send(json.dumps({"error": "Invalid JSON"})) except Exception as e: print(f"Error processing message: {e}") await websocket.send(json.dumps({"error": str(e)})) except websockets.exceptions.ConnectionClosedError: print(f"Connection closed unexpectedly from {websocket.remote_address}") except websockets.exceptions.ConnectionClosedOK: print(f"Connection closed normally from {websocket.remote_address}") finally: print(f"Connection closed from {websocket.remote_address}") async def process_message(data): # 在这里处理不同类型的 MCP 请求 if data.get("type") == "completion": return await handle_completion(data) elif data.get("type") == "chat": return await handle_chat(data) elif data.get("type") == "edit": return await handle_edit(data) elif data.get("type") == "health": return await handle_health(data) else: return {"error": "Unknown message type"} async def handle_completion(data): # TODO: 调用你的语言模型进行代码补全 prompt = data.get("prompt") # 示例:返回一个简单的补全建议 completion = f"// This is a completion for: {prompt}" return {"completion": completion} async def handle_chat(data): # TODO: 调用你的语言模型进行聊天 message = data.get("message") # 示例:返回一个简单的聊天回复 response = f"You said: {message}" return {"response": response} async def handle_edit(data): # TODO: 调用你的语言模型进行代码编辑 code = data.get("code") instruction = data.get("instruction") # 示例:返回一个简单的编辑建议 edited_code = f"// Edited code based on: {instruction}\n{code}" return {"edited_code": edited_code} async def handle_health(data): # 返回服务器的健康状态 return {"status": "ok"} async def main(): async with websockets.serve(handle_connection, "localhost", 8765): print("WebSocket server started at ws://localhost:8765") await asyncio.Future() # 保持服务器运行 if __name__ == "__main__": asyncio.run(main()) ``` **4. 处理 MCP 请求:** 在 `process_message` 函数中,你需要根据 `data.get("type")` 的值来处理不同类型的 MCP 请求。 * **`completion` 请求:** * 从 `data` 中提取代码补全所需的上下文信息(例如,当前代码、光标位置等)。 * 调用你的语言模型来生成代码补全建议。 * 将补全建议封装在 `completion` 响应中并返回。 * **`chat` 请求:** * 从 `data` 中提取聊天消息。 * 调用你的语言模型来生成聊天回复。 * 将回复封装在 `chat` 响应中并返回。 * **`edit` 请求:** * 从 `data` 中提取代码和编辑指令。 * 调用你的语言模型来生成代码编辑建议。 * 将编辑后的代码封装在 `edit` 响应中并返回。 * **`health` 请求:** * 返回服务器的健康状态。 **5. 集成你的语言模型:** 在 `handle_completion`、`handle_chat` 和 `handle_edit` 函数中,你需要集成你自己的语言模型。 这可能涉及: * 加载你的语言模型。 * 预处理输入数据。 * 调用语言模型进行推理。 * 后处理输出数据。 **6. 配置 Cursor:** 1. 打开 Cursor 的设置。 2. 搜索 "Model Control Protocol"。 3. 启用 "Enable Model Control Protocol"。 4. 在 "Model Control Protocol URL" 中输入你的 MCP 服务器的 URL (例如,`ws://localhost:8765`)。 **7. 测试:** 1. 运行你的 MCP 服务器。 2. 在 Cursor 中打开一个代码文件。 3. 尝试代码补全、聊天或代码编辑功能。 4. 检查你的 MCP 服务器是否收到请求并返回了正确的响应。 **8. 错误处理:** * 在服务器端,捕获所有可能的异常并返回包含错误信息的 JSON 响应。 * 在 Cursor 端,检查响应中是否包含错误信息并向用户显示。 **9. 优化:** * **性能:** 优化你的语言模型和 MCP 服务器以提高性能。 * **可扩展性:** 设计你的 MCP 服务器以支持多个并发连接。 * **安全性:** 考虑安全性问题,例如身份验证和授权。 **示例 JSON 消息格式:** **Completion Request:** ```json { "type": "completion", "prompt": "def hello_world():\n " } ``` **Completion Response:** ```json { "completion": "print('Hello, world!')" } ``` **Chat Request:** ```json { "type": "chat", "message": "How do I write a for loop in Python?" } ``` **Chat Response:** ```json { "response": "You can write a for loop in Python like this: `for i in range(10): print(i)`" } ``` **Edit Request:** ```json { "type": "edit", "code": "def add(a, b):\n return a + b", "instruction": "Add a docstring to the function." } ``` **Edit Response:** ```json { "edited_code": "def add(a, b):\n \"\"\"Adds two numbers together.\"\"\"\n return a + b" } ``` **Health Request:** ```json { "type": "health" } ``` **Health Response:** ```json { "status": "ok" } ``` **总结:** 通过遵循本指南,你可以创建自己的 MCP 服务器,并将你自己的语言模型集成到 Cursor 中。 这将使你能够利用你自己的模型来增强 Cursor 的代码补全、聊天和代码编辑功能。 记住,这只是一个起点,你需要根据你的具体需求进行调整和优化。 **重要提示:** * 确保你的语言模型符合 Cursor 的使用条款和隐私政策。 * 仔细测试你的 MCP 服务器,以确保其稳定性和可靠性。 * 考虑安全性问题,例如身份验证和授权。 This translation provides a comprehensive guide and implementation example for creating your own MCP server for Cursor integration. It covers the key concepts, steps, and considerations involved in the process. Remember to replace the placeholder comments with your actual language model integration logic. Good luck!
dharakpatel
README
MCP服务器实现指南
什么是MCP?
MCP(模型控制协议)是一种使Cursor IDE与Claude等AI语言模型之间能够进行通信的协议。它允许您创建自定义服务器实现,以处理Cursor中各种AI驱动的功能。
工作原理
MCP服务器充当Cursor IDE和AI模型(如Claude)之间的桥梁。基本流程如下:
- Cursor向MCP服务器发送请求
- MCP服务器处理这些请求并将它们转发到AI模型
- AI模型生成响应
- MCP服务器格式化这些响应并将它们发送回Cursor
功能
- 自定义AI模型集成
- 请求/响应处理
- Websocket通信
- 配置管理
- 错误处理
- 速率限制
- 身份验证
设置您自己的MCP服务器
前提条件
- Python 3.8+
- FastAPI
- Anthropic API密钥(用于Claude集成)
- Cursor IDE
安装
git clone https://github.com/dharakpatel/mcp_server.git
cd mcp_server
pip install -r requirements.txt
配置
在您的项目根目录中创建一个config.json
文件:
{
"server": {
"host": "localhost",
"port": 8000,
"debug": false
},
"anthropic": {
"api_key": "your-api-key-here",
"model": "claude-3-sonnet-20240229"
},
"cursor": {
"allowed_origins": ["http://localhost:3000"],
"max_tokens": 4096,
"timeout": 30
},
"security": {
"enable_auth": true,
"auth_token": "your-secret-token",
"rate_limit": {
"requests_per_minute": 60
}
}
}
与Cursor集成
- 打开Cursor IDE
- 转到设置
- 导航到AI设置
- 将自定义MCP服务器URL设置为
http://localhost:8000
(或您的服务器URL) - 如果启用了身份验证,请添加您的身份验证令牌
API端点
主要端点
/v1/chat/completions
- 主要聊天完成端点/v1/health
- 服务器健康检查/v1/models
- 可用模型信息
WebSocket端点
/ws
- 用于实时通信的WebSocket连接
错误处理
服务器实现了全面的错误处理:
- 无效请求
- 身份验证错误
- 速率限制
- 超时处理
- 模型错误
最佳实践
- 始终使用环境变量来存储敏感数据
- 实施适当的日志记录
- 使用速率限制来防止滥用
- 实施适当的错误处理
- 保持配置文件安全
- 定期监控和维护
贡献
欢迎贡献!请随时提交Pull Request。
许可证
MIT许可证
支持
如有问题和疑问,请在GitHub存储库中打开一个issue。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。