游标 MCP(模型上下文协议)
Cursor MCP 是 Claude 桌面应用程序和 Cursor 编辑器之间的桥梁,可实现无缝的 AI 自动化和多实例管理。它是更广泛的模型上下文协议 (MCP) 生态系统的一部分,允许 Cursor 通过标准化接口与各种 AI 模型和服务进行交互。
概述
🤖 AI 集成
与 Claude 的桌面应用程序直接集成
能够利用其他与 MCP 兼容的 AI 服务
AI 与编辑之间的实时上下文共享
人工智能驱动的自动化和代码生成
🔌 MCP 协议支持
与AI模型的标准化沟通
可扩展插件系统,用于附加 MCP
上下文感知命令执行
基于令牌的安全身份验证
🖥️ 跨平台窗口管理
无缝管理跨操作系统的 Cursor 编辑器窗口
通过编程聚焦、最小化、恢复和排列窗口
跟踪窗口状态变化和位置
同时处理多个 Cursor 实例
⌨️ 输入自动化
AI 驱动的键盘输入支持:
代码生成和插入
重构操作
上下文感知补全
多光标编辑
智能鼠标自动化包括:
智能选择
上下文菜单操作
人工智能导航
🔄 流程管理
AI 协调的实例管理
智能工作空间组织
自动上下文保存
智能会话恢复
Related MCP server: Portkey MCP Server
MCP 集成
Claude 桌面集成
import { ClaudeMCP } from 'cursor-mcp/claude'
// Connect to Claude's desktop app
const claude = await ClaudeMCP.connect()
// Execute AI-powered operations
await claude.generateCode({
prompt: 'Create a React component',
context: currentFileContent,
language: 'typescript'
})
// Get AI suggestions
const suggestions = await claude.getSuggestions({
code: selectedText,
type: 'refactor'
})使用多个 MCP
import { MCPRegistry } from 'cursor-mcp/registry'
// Register available MCPs
MCPRegistry.register('claude', ClaudeMCP)
MCPRegistry.register('github-copilot', CopilotMCP)
// Use different AI services
const claude = await MCPRegistry.get('claude')
const copilot = await MCPRegistry.get('github-copilot')
// Compare suggestions
const claudeSuggestions = await claude.getSuggestions(context)
const copilotSuggestions = await copilot.getSuggestions(context)自定义 MCP 集成
import { BaseMCP, MCPProvider } from 'cursor-mcp/core'
class CustomMCP extends BaseMCP implements MCPProvider {
async connect() {
// Custom connection logic
}
async generateSuggestions(context: CodeContext) {
// Custom AI integration
}
}
// Register custom MCP
MCPRegistry.register('custom-ai', CustomMCP)配置
该工具可以通过环境变量或配置文件进行配置:
Windows:
%LOCALAPPDATA%\cursor-mcp\config\config.jsonmacOS:
~/Library/Application Support/cursor-mcp/config/config.jsonLinux:
~/.config/cursor-mcp/config.json
示例配置:
{
"mcp": {
"claude": {
"enabled": true,
"apiKey": "${CLAUDE_API_KEY}",
"contextWindow": 100000
},
"providers": {
"github-copilot": {
"enabled": true,
"auth": "${GITHUB_TOKEN}"
}
}
},
"autoStart": true,
"maxInstances": 4,
"windowArrangement": "grid",
"logging": {
"level": "info",
"file": "cursor-mcp.log"
}
}安装
视窗
# Run as Administrator
Invoke-WebRequest -Uri "https://github.com/your-org/cursor-mcp/releases/latest/download/cursor-mcp-windows.zip" -OutFile "cursor-mcp.zip"
Expand-Archive -Path "cursor-mcp.zip" -DestinationPath "."
.\windows.ps1macOS
# Run with sudo
curl -L "https://github.com/your-org/cursor-mcp/releases/latest/download/cursor-mcp-macos.zip" -o "cursor-mcp.zip"
unzip cursor-mcp.zip
sudo ./macos.shLinux
# Run with sudo
curl -L "https://github.com/your-org/cursor-mcp/releases/latest/download/cursor-mcp-linux.zip" -o "cursor-mcp.zip"
unzip cursor-mcp.zip
sudo ./linux.sh用法
基本用法
import { CursorInstanceManager } from 'cursor-mcp'
// Get the instance manager
const manager = CursorInstanceManager.getInstance()
// Start a new Cursor instance
await manager.startNewInstance()
// Get all running instances
const instances = await manager.getRunningInstances()
// Focus a specific instance
await manager.focusInstance(instances[0])
// Close all instances
await manager.closeAllInstances()窗口管理
import { WindowManager } from 'cursor-mcp'
const windowManager = WindowManager.getInstance()
// Find all Cursor windows
const windows = await windowManager.findCursorWindows()
// Focus a window
await windowManager.focusWindow(windows[0])
// Arrange windows side by side
await windowManager.arrangeWindows(windows, 'sideBySide')
// Minimize all windows
for (const window of windows) {
await windowManager.minimizeWindow(window)
}输入自动化
import { InputAutomationService } from 'cursor-mcp'
const inputService = InputAutomationService.getInstance()
// Type text
await inputService.typeText('Hello, World!')
// Send keyboard shortcuts
if (process.platform === 'darwin') {
await inputService.sendKeys(['command', 'c'])
} else {
await inputService.sendKeys(['control', 'c'])
}
// Mouse operations
await inputService.moveMouse(100, 100)
await inputService.mouseClick('left')
await inputService.mouseDrag(100, 100, 200, 200)工作原理
桥梁建筑
此工具充当 Cursor 和 MCP 服务器之间的中间件层:
光标集成:
监视 Cursor 的文件系统事件
捕获编辑器状态和上下文
将响应注入编辑器
管理窗口和流程自动化
MCP 协议转换:
将 Cursor 的内部事件转换为 MCP 协议消息
将 MCP 响应转换为与 Cursor 兼容的操作
维护会话状态和上下文
处理身份验证和安全
服务器通信:
连接到 Claude 的桌面应用程序 MCP 服务器
将请求路由到适当的 AI 提供商
管理与多个 MCP 的并发连接
处理回退和错误恢复
graph LR
A[Cursor Editor] <--> B[Cursor MCP Bridge]
B <--> C[Claude Desktop MCP]
B <--> D[GitHub Copilot MCP]
B <--> E[Custom AI MCPs]示例工作流程
代码完成请求:
// 1. Cursor Event (File Change) // When user types in Cursor: function calculateTotal(items) { // Calculate the total price of items| <-- cursor position // 2. Bridge Translation const event = { type: 'completion_request', context: { file: 'shopping-cart.ts', line: 2, prefix: '// Calculate the total price of items', language: 'typescript', cursor_position: 43 } } // 3. MCP Protocol Message await mcpServer.call('generate_completion', { prompt: event.context, max_tokens: 150, temperature: 0.7 }) // 4. Response Translation // Bridge converts MCP response: const response = `return items.reduce((total, item) => { return total + (item.price * item.quantity); }, 0);` // 5. Cursor Integration // Bridge injects the code at cursor position代码重构:
// 1. Cursor Event (Command) // User selects code and triggers refactor command const oldCode = ` if (user.age >= 18) { if (user.hasLicense) { if (car.isAvailable) { rentCar(user, car); } } } ` // 2. Bridge Translation const event = { type: 'refactor_request', context: { selection: oldCode, command: 'simplify_nesting' } } // 3. MCP Protocol Message await mcpServer.call('refactor_code', { code: event.context.selection, style: 'simplified', maintain_logic: true }) // 4. Response Translation const response = ` const canRentCar = user.age >= 18 && user.hasLicense && car.isAvailable; if (canRentCar) { rentCar(user, car); } ` // 5. Cursor Integration // Bridge replaces selected code多文件上下文:
// 1. Cursor Event (File Dependencies) // When user requests help with a component // 2. Bridge Translation const event = { type: 'context_request', files: { 'UserProfile.tsx': '...', 'types.ts': '...', 'api.ts': '...' }, focus_file: 'UserProfile.tsx' } // 3. MCP Protocol Message await mcpServer.call('analyze_context', { files: event.files, primary_file: event.focus_file, analysis_type: 'component_dependencies' }) // 4. Response Processing // Bridge maintains context across requests
积分方法
文件系统监控:
import { FileSystemWatcher } from 'cursor-mcp/watcher' const watcher = new FileSystemWatcher({ paths: ['/path/to/cursor/workspace'], events: ['change', 'create', 'delete'] }) watcher.on('change', async (event) => { const mcpMessage = await bridge.translateEvent(event) await mcpServer.send(mcpMessage) })窗口集成:
import { CursorWindow } from 'cursor-mcp/window' const window = new CursorWindow() // Inject AI responses await window.injectCode({ position: cursorPosition, code: mcpResponse.code, animate: true // Smooth typing animation }) // Handle user interactions window.onCommand('refactor', async (selection) => { const mcpMessage = await bridge.createRefactorRequest(selection) const response = await mcpServer.send(mcpMessage) await window.applyRefactoring(response) })上下文管理:
import { ContextManager } from 'cursor-mcp/context' const context = new ContextManager() // Track file dependencies await context.addFile('component.tsx') await context.trackDependencies() // Maintain conversation history context.addMessage({ role: 'user', content: 'Refactor this component' }) // Send to MCP server const response = await mcpServer.send({ type: 'refactor', context: context.getFullContext() })
安全
基于令牌的安全 AI 服务身份验证
加密通信渠道
沙盒执行环境
细粒度的权限控制
要求
视窗
Windows 10 或更高版本
Node.js 18 或更高版本
安装的管理员权限
macOS
macOS 10.15 (Catalina) 或更高版本
Node.js 18 或更高版本
Xcode 命令行工具
终端的辅助功能权限
Linux
X11显示服务器
Node.js 18 或更高版本
xdotool
libxtst-dev
libpng++-dev
构建必需
发展
设置
# Clone the repository
git clone https://github.com/your-org/cursor-mcp.git
cd cursor-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test运行测试
# Run all tests
npm test
# Run specific test suite
npm test -- window-management
# Run with coverage
npm run test:coverage贡献
欢迎大家贡献!详情请参阅我们的贡献指南。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
支持
致谢
Cursor Editor - AI-first 代码编辑器
Claude AI - 高级人工智能助手
@nut-tree/nut-js - 跨平台自动化
active-win - 窗口检测