小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
58
最近更新:1个月前

作为Claude桌面应用与Cursor编辑器之间的桥梁,通过标准化通信和基于令牌的安全认证,实现跨平台无缝AI驱动自动化及多实例管理。

Cursor MCP (模型上下文协议)

Cursor MCP 是 Claude 桌面应用与 Cursor 编辑器之间的桥梁,实现无缝的 AI 驱动自动化与多实例管理。作为更广泛的 Model Context Protocol (MCP) 生态系统的一部分,它允许 Cursor 通过标准化接口与各类 AI 模型和服务交互。

概述

🤖 AI 集成

  • 与 Claude 桌面应用直接集成
  • 支持其他 MCP 兼容的 AI 服务
  • AI 与编辑器间实时上下文共享
  • AI 驱动的自动化与代码生成

🔌 MCP 协议支持

  • 与 AI 模型的标准化通信
  • 可扩展的插件系统支持额外 MCP
  • 上下文感知命令执行
  • 基于令牌的安全认证

🖥️ 跨平台窗口管理

  • 跨操作系统无缝管理 Cursor 编辑器窗口
  • 编程方式聚焦/最小化/还原/排列窗口
  • 跟踪窗口状态变化与位置
  • 同时处理多个 Cursor 实例

⌨️ 输入自动化

  • AI 驱动的键盘输入支持:
    • 代码生成与插入
    • 重构操作
    • 上下文感知补全
    • 多光标编辑
  • 智能鼠标自动化包括:
    • 智能选区
    • 上下文菜单操作
    • AI 引导导航

🔄 进程管理

  • AI 编排的实例管理
  • 智能工作区组织
  • 自动上下文保存
  • 智能会话恢复

MCP 集成

Claude 桌面集成

typescript 复制代码
import { ClaudeMCP } from 'cursor-mcp/claude'

// 连接 Claude 桌面应用
const claude = await ClaudeMCP.connect()

// 执行 AI 驱动的操作
await claude.generateCode({
    prompt: '创建 React 组件',
    context: currentFileContent,
    language: 'typescript'
})

// 获取 AI 建议
const suggestions = await claude.getSuggestions({
    code: selectedText,
    type: 'refactor'
})

使用多个 MCP

typescript 复制代码
import { MCPRegistry } from 'cursor-mcp/registry'

// 注册可用 MCP
MCPRegistry.register('claude', ClaudeMCP)
MCPRegistry.register('github-copilot', CopilotMCP)

// 使用不同 AI 服务
const claude = await MCPRegistry.get('claude')
const copilot = await MCPRegistry.get('github-copilot')

// 比较建议
const claudeSuggestions = await claude.getSuggestions(context)
const copilotSuggestions = await copilot.getSuggestions(context)

自定义 MCP 集成

typescript 复制代码
import { BaseMCP, MCPProvider } from 'cursor-mcp/core'

class CustomMCP extends BaseMCP implements MCPProvider {
    async connect() {
        // 自定义连接逻辑
    }

    async generateSuggestions(context: CodeContext) {
        // 自定义 AI 集成
    }
}

// 注册自定义 MCP
MCPRegistry.register('custom-ai', CustomMCP)

配置

可通过环境变量或配置文件进行配置:

  • Windows: %LOCALAPPDATA%\cursor-mcp\config\config.json
  • macOS: ~/Library/Application Support/cursor-mcp/config/config.json
  • Linux: ~/.config/cursor-mcp/config.json

配置示例:

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"
    }
}

安装

Windows

powershell 复制代码
# 管理员身份运行
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.ps1

macOS

bash 复制代码
# 使用 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.sh

Linux

bash 复制代码
# 使用 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

使用

基础用法

typescript 复制代码
import { CursorInstanceManager } from 'cursor-mcp'

// 获取实例管理器
const manager = CursorInstanceManager.getInstance()

// 启动新 Cursor 实例
await manager.startNewInstance()

// 获取所有运行中的实例
const instances = await manager.getRunningInstances()

// 聚焦特定实例
await manager.focusInstance(instances[0])

// 关闭所有实例
await manager.closeAllInstances()

窗口管理

typescript 复制代码
import { WindowManager } from 'cursor-mcp'

const windowManager = WindowManager.getInstance()

// 查找所有 Cursor 窗口
const windows = await windowManager.findCursorWindows()

// 聚焦窗口
await windowManager.focusWindow(windows[0])

// 并排排列窗口
await windowManager.arrangeWindows(windows, 'sideBySide')

// 最小化所有窗口
for (const window of windows) {
    await windowManager.minimizeWindow(window)
}

输入自动化

typescript 复制代码
import { InputAutomationService } from 'cursor-mcp'

const inputService = InputAutomationService.getInstance()

// 输入文本
await inputService.typeText('Hello, World!')

// 发送键盘快捷键
if (process.platform === 'darwin') {
    await inputService.sendKeys(['command', 'c'])
} else {
    await inputService.sendKeys(['control', 'c'])
}

// 鼠标操作
await inputService.moveMouse(100, 100)
await inputService.mouseClick('left')
await inputService.mouseDrag(100, 100, 200, 200)

工作原理

桥接架构

本工具作为 Cursor 与 MCP 服务器间的中间层:

  1. Cursor 集成

    • 监控 Cursor 文件系统事件
    • 捕获编辑器状态与上下文
    • 将响应注入编辑器
    • 管理窗口与进程自动化
  2. MCP 协议转换

    • 将 Cursor 内部事件转为 MCP 协议消息
    • 将 MCP 响应转为 Cursor 兼容操作
    • 维护会话状态与上下文
    • 处理认证与安全
  3. 服务器通信

    • 连接 Claude 桌面应用 MCP 服务器
    • 路由请求至适当 AI 提供商
    • 管理多个 MCP 的并发连接
    • 处理回退与错误恢复
graph LR A[Cursor 编辑器] <--> B[Cursor MCP 桥接] B <--> C[Claude 桌面 MCP] B <--> D[GitHub Copilot MCP] B <--> E[自定义 AI MCP]

示例工作流

  1. 代码补全请求

    typescript 复制代码
    // 1. Cursor 事件 (文件变更)
    // 当用户在 Cursor 中输入:
    function calculateTotal(items) {
      // 计算商品总价|  <-- 光标位置
    
    // 2. 桥接转换
    const event = {
      type: 'completion_request',
      context: {
        file: 'shopping-cart.ts',
        line: 2,
        prefix: '// 计算商品总价',
        language: 'typescript',
        cursor_position: 43
      }
    }
    
    // 3. MCP 协议消息
    await mcpServer.call('generate_completion', {
      prompt: event.context,
      max_tokens: 150,
      temperature: 0.7
    })
    
    // 4. 响应转换
    // 桥接将 MCP 响应转为:
    const response = `return items.reduce((total, item) => {
      return total + (item.price * item.quantity);
    }, 0);`
    
    // 5. Cursor 集成
    // 桥接在光标位置注入代码
  2. 代码重构

    typescript 复制代码
    // 1. Cursor 事件 (命令)
    // 用户选择代码并触发重构命令
    const oldCode = `
      if (user.age >= 18) {
        if (user.hasLicense) {
          if (car.isAvailable) {
            rentCar(user, car);
          }
        }
      }
    `
    
    // 2. 桥接转换
    const event = {
      type: 'refactor_request',
      context: {
        selection: oldCode,
        command: 'simplify_nesting'
      }
    }
    
    // 3. MCP 协议消息
    await mcpServer.call('refactor_code', {
      code: event.context.selection,
      style: 'simplified',
      maintain_logic: true
    })
    
    // 4. 响应转换
    const response = `
      const canRentCar = user.age >= 18 
        && user.hasLicense 
        && car.isAvailable;
      
      if (canRentCar) {
        rentCar(user, car);
      }
    `
    
    // 5. Cursor 集成
    // 桥接替换选中代码
  3. 多文件上下文

    typescript 复制代码
    // 1. Cursor 事件 (文件依赖)
    // 当用户请求组件帮助时
    
    // 2. 桥接转换
    const event = {
      type: 'context_request',
      files: {
        'UserProfile.tsx': '...',
        'types.ts': '...',
        'api.ts': '...'
      },
      focus_file: 'UserProfile.tsx'
    }
    
    // 3. MCP 协议消息
    await mcpServer.call('analyze_context', {
      files: event.files,
      primary_file: event.focus_file,
      analysis_type: 'component_dependencies'
    })
    
    // 4. 响应处理
    // 桥接跨请求维护上下文

集成方法

  1. 文件系统监控

    typescript 复制代码
    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)
    })
  2. 窗口集成

    typescript 复制代码
    import { CursorWindow } from 'cursor-mcp/window'
    
    const window = new CursorWindow()
    
    // 注入 AI 响应
    await window.injectCode({
      position: cursorPosition,
      code: mcpResponse.code,
      animate: true  // 平滑输入动画
    })
    
    // 处理用户交互
    window.onCommand('refactor', async (selection) => {
      const mcpMessage = await bridge.createRefactorRequest(selection)
      const response = await mcpServer.send(mcpMessage)
      await window.applyRefactoring(response)
    })
  3. 上下文管理

    typescript 复制代码
    import { ContextManager } from 'cursor-mcp/context'
    
    const context = new ContextManager()
    
    // 跟踪文件依赖
    await context.addFile('component.tsx')
    await context.trackDependencies()
    
    // 维护对话历史
    context.addMessage({
      role: 'user',
      content: '重构此组件'
    })
    
    // 发送至 MCP 服务器
    const response = await mcpServer.send({
      type: 'refactor',
      context: context.getFullContext()
    })

安全性

  • AI 服务的基于令牌安全认证
  • 加密通信通道
  • 沙箱执行环境
  • 细粒度权限控制

系统要求

Windows

  • Windows 10 或更高版本
  • Node.js 18 或更高版本
  • 管理员安装权限

macOS

  • macOS 10.15 (Catalina) 或更高版本
  • Node.js 18 或更高版本
  • Xcode 命令行工具
  • 终端的辅助功能权限

Linux

  • X11 显示服务器
  • Node.js 18 或更高版本
  • xdotool
  • libxtst-dev
  • libpng++-dev
  • build-essential

开发

设置

bash 复制代码
# 克隆仓库
git clone https://github.com/your-org/cursor-mcp.git
cd cursor-mcp

# 安装依赖
npm install

# 构建项目
npm run build

# 运行测试
npm test

运行测试

bash 复制代码
# 运行所有测试
npm test

# 运行特定测试套件
npm test -- window-management

# 带覆盖率运行
npm run test:coverage

贡献指南

欢迎贡献!详见贡献指南

许可证

本项目采用 MIT 许可证 - 详见许可证文件

支持

致谢