WebSocket桥接服务

Replit MCP WebSocket桥接服务通过WebSocket连接将Cursor IDE与Replit生态系统集成,实现AI助手与Replit工作区的直接交互。

  • by Avinier
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Avinier/replit-mcp

使用说明

应答MCP WebSocket网桥

热潮实验室摇滚乐!

⚠️ 重要通知:此扩展尚未发布到Replit扩展市场,因为我们正在处理Replit的审批流程。目前,您需要按照以下设置说明在Replit工作区中手动安装扩展。

一种模型上下文协议(MCP)服务器,通过WebSocket连接将Cursor IDE与Replit的生态系统连接起来。这种创新的解决方案使AI助手能够直接从Cursor与您的Replit工作区、文件和服务进行交互,而不管网络边界如何。

🌟 架构概述

此实现使用三个组件架构:

  1. MCP服务器 (replit-mcp-assignment/)-在本地计算机上运行,通过MCP协议与Cursor通信
  2. WebSocket网桥 -在MCP服务器和Replit之间转发命令的安全隧道
  3. 回复扩展 (replit-extension-code/)-在您的Replit工作区中运行,执行实际的Replit API调用
┌─────────────┐    MCP/stdio    ┌──────────────┐    WebSocket    ┌─────────────┐    Replit API    ┌──────────┐
│   Cursor    │ ◄────────────► │ MCP Server   │ ◄────────────► │ Replit Ext  │ ◄────────────► │ Replit   │
│    IDE      │                │ (local)      │  (ngrok tunnel)│ (workspace) │                │ Services │
└─────────────┘                └──────────────┘                └─────────────┘                └──────────┘

🚀 快速开始

先决条件

  • Node.js 16+本地安装
  • 回复帐户
  • 光标IDE
  • ngrok帐户(用于隧道)

1.设置MCP服务器

# Clone this repository
git clone <repository-url>
cd replit-mcp-assignment

# Install dependencies
npm install

# Build the server
npm run build

2.设置答复扩展

  1. 在您的Replit帐户中创建新的Repli
  2. 上传 replit-extension-code/ 目录到您的代表
  3. 在Repl中安装依赖项:
    cd replit-extension-code
    npm install
    

3.启动WebSocket网桥

你有两个选择来运行这座桥:

选项A:独立模式(推荐)

# In your Replit terminal
cd replit-extension-code
node run-bridge.js

选项B:完全扩展模式

# In your Replit terminal
cd replit-extension-code
npm run dev

大桥将:

  • 启动WebSocket服务器
  • 通过ngrok连接到本地MCP服务器
  • 显示连接状态和身份验证详细信息

4.配置光标

将MCP服务器添加到Cursor的设置中(settings.json):

{
  "mcpServers": {
    "replit-bridge": {
      "command": "node",
      "args": ["/path/to/replit-mcp-assignment/build/index.js"],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

5.开始使用

  1. 重新启动游标IDE
  2. 打开MCP面板(Cmd+Shift+P→ “MCP:显示工具”)
  3. 在可用服务器中查找“replit桥”
  4. 直接在Cursor中开始使用Replit工具!

📋 可用特征

核心功能

功能 描述 状态
认证 基于JWT的身份验证与Replit ✅ 已执行
文件操作 在Replit中读取、写入和列出文件 ✅ 已执行
命令执行 在Replit中运行shell命令 ✅ 已执行
实时通信 基于WebSocket的消息传递 ✅ 已执行
Ngrok隧道 安全远程连接 ✅ 已执行

MCP工具可用

工具名称 描述 参数
replit_list_files 列出目录中的文件 path?: string
replit_read_file 读取文件内容 path: string
replit_write_file 写入文件 path: string, content: string
replit_run_command 执行shell命令 command: string
replit_get_auth_status 检查身份验证状态 -
replit_get_workspace_info 获取工作区详细信息 -

🔧 配置

环境变量

MCP服务器支持以下环境变量:

# Node environment
NODE_ENV=development

# Enable debug logging
DEBUG=replit-mcp:*

# Custom ngrok URL (if running your own tunnel)
NGROK_URL=wss://your-tunnel.ngrok.io

自定义Ngrok设置

如果你想使用自己的ngrok隧道:

  1. 在本地安装ngrok
  2. 创建隧道:
    ngrok http 8765
    
  3. 在中更新WebSocket URL replit-extension-code/src/bridge.ts:
    const wsUrl = `wss://your-ngrok-id.ngrok-free.app`;
    

🛠️ 发展

地方发展

# Development mode with watch
npm run dev

# Build for production
npm run build

# Start production server
npm start

# Clean build artifacts
npm run clean

测试桥梁

  1. 在您的回复中启动桥接
  2. 验证控制台中的连接状态
  3. 使用Cursor的MCP工具进行测试
  4. 检查调试日志

调试模式

启用详细日志记录:

# On the MCP server
DEBUG=replit-mcp:* npm start

# On the Replit extension
DEBUG=replit-bridge:* node run-bridge.js

📁 项目结构

replit-mcp-assignment/
├── src/                          # MCP Server Source
│   ├── index.ts                  # MCP server entry point
│   ├── server.ts                 # Server configuration
│   ├── websocket-client.ts       # WebSocket client for bridge
│   ├── tools/                    # MCP tool implementations
│   │   ├── auth.ts              # Authentication tools
│   │   ├── filesystem.ts        # File operation tools
│   │   └── index.ts             # Tool registry
│   ├── types/                    # TypeScript definitions
│   │   ├── bridge.ts            # Bridge message types
│   │   └── replit.ts            # Replit API types
│   └── utils/                    # Utilities
│       ├── logger.ts            # Logging utilities
│       └── errors.ts            # Error handling
├── build/                        # Compiled JavaScript
├── replit-extension-code/        # Replit Extension Code
│   ├── src/
│   │   ├── bridge.ts            # WebSocket bridge implementation
│   │   └── extension.ts         # Replit extension logic
│   ├── run-bridge.js            # Standalone bridge runner
│   ├── package.json             # Extension dependencies
│   └── extension.json           # Extension manifest
└── README.md                     # This file

🔐 安全考虑

认证流程

  1. 回复扩展 使用以下命令生成JWT令牌 auth.getAuthToken()
  2. 桥 将令牌发送到MCP服务器进行验证
  3. MCP服务器 对令牌进行解码和验证
  4. 所有命令 使用经过身份验证的用户的权限执行

安全特性

  • JWT身份验证:所有请求都需要有效的Replit JWT令牌
  • 安全WebSocket:使用WSS(WebSocket安全)进行加密通信
  • 令牌验证:自动过期检查和令牌刷新
  • 本地执行:MCP服务器在本地运行,不依赖于云
  • 许可边界:网桥只能访问用户可以访问的内容

最佳实践

  • 永远不要公开分享你的ngrok网址
  • 定期重新生成JWT令牌
  • 监控网桥连接日志
  • 使用HTTPS进行所有通信
  • 保持依赖关系更新

🚨 故障排除

常见问题

1.“WebSocket连接失败”

# Check if ngrok is running
curl https://5c920f0293a4.ngrok-free.app/health

# Restart the bridge in your Replit
node run-bridge.js

2.“身份验证失败”

# Check JWT token in Replit
# Run this in your Replit console
import { auth } from '@replit/extensions';
await auth.init();
const token = await auth.getAuthToken();
console.log('Token valid:', token ? 'Yes' : 'No');

3.“在游标中找不到MCP服务器”

  • 验证游标设置中的路径
  • 检查服务器是否成功构建: npm run build
  • 更新设置后重新启动Cursor

4.“命令超时”

  • 检查您的回复的互联网连接
  • 验证ngrok隧道是否处于活动状态
  • 检查Replit扩展日志是否有错误

调试命令

# Test WebSocket connection
wscat -c wss://5c920f0293a4.ngrok-free.app

# Check MCP server
npm run build && node build/index.js

# Enable full debug
DEBUG=* npm start

🗺️ 路线图

第一阶段:核心桥✅

  • [x] WebSocket通信
  • [x] JWT身份验证
  • [x] 基本文件操作
  • [x] 命令执行
  • [x] Ngrok隧道

第2阶段:增强功能(进行中)

  • []批处理文件操作
  • []目录监视
  • []环境管理
  • []项目模板

第三阶段:高级集成

  • []ReplDB数据库访问
  • []多回复管理
  • []团队协作功能
  • []部署管道

第四阶段:生产特点

  • []连接池
  • []缓存层
  • []速率限制
  • []指标和监测

🤝 贡献

我们欢迎捐款!以下是如何开始:

  1. 分叉 存储库
  2. 创建 特征分支: git checkout -b feature/amazing-feature
  3. 制造 您的更改
  4. 测试 彻底:
    npm run test
    npm run build
    
  5. 提交 您的更改
  6. 推 到你的叉子
  7. 打开 拉取请求

开发环境设置

# Install all dependencies
npm install

# Run tests
npm test

# Start development mode
npm run dev

# Type checking
npm run type-check

📚 API 参考

Websocket消息格式

interface BridgeMessage {
  id: string;          // Unique message ID
  action: string;      // Action to perform
  params?: any;        // Action parameters
  result?: any;        // Response data
  error?: string;      // Error message
  workspaceId?: string; // Replit workspace ID
}

MCP工具签名

// Example: Read a file
interface ReplitReadFileParams {
  path: string;
}

// Response
interface ReplitResponse {
  success: boolean;
  data?: any;
  error?: string;
}

📄 许可证

此项目根据ISC许可证获得许可-请参阅 许可证 文件以获取详细信息。

🔗 相关链接

📞 支持

如果您遇到问题:

  1. 检查日志 -MCP服务器和Replit扩展都提供详细的日志
  2. 验证连接 -确保ngrok隧道处于活动状态
  3. 检查身份验证 -验证JWT令牌是否有效
  4. 创建问题 -包括:
    • 日志中的错误消息
    • 操作系统和光标版本
    • 重现步骤
    • 网络环境详细信息

🎯 用例

面向开发者

  • 远程开发:从本地Cursor IDE处理Replit项目
  • 批量操作:跨多个Repl执行批量文件操作
  • 自动化:自动化Replit工作区中的重复任务
  • 整合:将Replit与外部工具和服务连接

对于团队

  • 代码评审:在不离开游标的情况下查看代码
  • 入职:使用项目模板快速设置新团队成员
  • 文档:从Replit项目生成文档
  • 部署:直接从Cursor管理部署

面向教育工作者

  • 教学:在Replit中实时演示编码概念
  • 作业:创建编码作业并对其进行评分
  • 协作:实现实时学生协作
  • 进度跟踪:监控各代表的学生进度