Token导航 LogoToken导航TokenDH.com
MCP Remote Proxy logo
浏览器工具未说明官方级别未说明来源级核验

MCP Remote Proxy

MCP Server

一个TypeScript CLI工具,为MCP服务器创建代理,通过TCP或WebSocket连接暴露服务,支持JWT认证和基于角色的访问控制。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
命令行工具HTMLClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

izay21-dev

提供方

izay21-dev

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP远程代理

一个TypeScript CLI工具,为MCP(模型上下文协议)服务器创建代理,通过TCP或WebSocket连接公开它们,并具有JWT身份验证和基于角色的访问控制。

特性

  • 协议支持:完全符合MCP的TCP和WebSocket协议
  • JWT身份验证:基于令牌的安全身份验证
  • 基于角色的访问控制:不同用户类型的细粒度权限
  • 自动重新连接:客户端通过指数回退自动重新连接
  • JWT代币管理:内置秘密生成和令牌创建工具
  • 请求筛选:基于用户角色的方法级访问控制
  • 审计日志:调试安全事件和被阻止请求的日志记录
  • MCP协议合规性:根据MCP规范,支持换行符分隔的JSON

安装

npm install
npm run build

快速开始

1.生成JWT密钥

# Generate a 256-bit secure secret
mcp-remote generate-secret --bits 256

2.创建带有角色的JWT令牌

# Create admin token (full access)
mcp-remote generate-token --jwt-secret "your-secret" --user "admin" --roles "admin" --expires-in "24h"

# Create normal user token (limited access)
mcp-remote generate-token --jwt-secret "your-secret" --user "editor" --roles "user" --expires-in "12h"

# Create readonly token (read-only access)
mcp-remote generate-token --jwt-secret "your-secret" --user "viewer" --roles "readonly" --expires-in "8h"

# Auto-generate secret and token together
mcp-remote generate-token --auto-secret --user "admin" --roles "admin" --expires-in "24h"

3.使用基于角色的权限启动服务器

# Basic server with JWT authentication
mcp-remote server tcp --port 8080 --jwt-secret "your-secret" -- your-mcp-server

# Server with role requirements
mcp-remote server tcp --port 8080 --jwt-secret "your-secret" --require-roles "admin,user" -- your-mcp-server

# Server with fine-grained permissions
mcp-remote server tcp --port 8080 --jwt-secret "your-secret" --permissions-config "permissions.json" -- your-mcp-server

4.连接客户端

# Connect with JWT token
mcp-remote client tcp --port 8080 --jwt-token "your-jwt-token"

# Connect with auto-reconnection
mcp-remote client tcp --port 8080 --jwt-token "your-jwt-token" --auto-reconnect --max-attempts 10

用法

服务器模式

启动MCP服务器并通过网络公开:

# TCP Server
mcp-remote server tcp --port 8080 [options] --  [args...]

# WebSocket Server  
mcp-remote server ws --port 8080 [options] --  [args...]

服务器选项:

  • `--port

` -要监听的端口(必需)

  • --jwt-secret -用于身份验证的JWT密钥
  • --require-roles -连接所需的角色
  • --permissions-config -权限配置文件的路径

客户端模式

连接到远程MCP代理服务器:

# TCP Client
mcp-remote client tcp --port 8080 [options]

# WebSocket Client
mcp-remote client ws --port 8080 [options]

客户端选项:

  • `--port

` -要连接的端口(必需)

  • --host -要连接的主机(默认值:localhost)
  • --jwt-token -用于身份验证的JWT令牌
  • --auto-reconnect -启用自动重新连接
  • --max-attempts -最大重新连接尝试次数(默认值:5)
  • --reconnect-delay -初始重新连接延迟(默认值:1000ms)

智威汤逊管理

生成安全秘密

# Generate 128-bit secret
mcp-remote generate-secret --bits 128

# Generate 256-bit secret (default)
mcp-remote generate-secret --bits 256

# Generate 512-bit secret
mcp-remote generate-secret --bits 512

生成JWT令牌

# Basic token
mcp-remote generate-token --jwt-secret "your-secret"

# Token with user info and roles
mcp-remote generate-token --jwt-secret "your-secret" --user "alice" --roles "admin,user" --expires-in "24h"

# Token with custom expiration
mcp-remote generate-token --jwt-secret "your-secret" --expires-in "7d"

# Auto-generate secret and token
mcp-remote generate-token --auto-secret --user "admin" --expires-in "12h"

过期格式: 60s, 30m, 12h, 7d, 1y

基于角色的访问控制

权限配置

创建一个 permissions.json 用于定义基于角色的访问的文件:

{
  "permissions": {
    "readonly": {
      "allowedMethods": [
        "ping",
        "initialize", 
        "tools/list",
        "resources/list",
        "resources/read",
        "prompts/list",
        "prompts/get"
      ],
      "blockedMethods": [
        "tools/call",
        "resources/write",
        "resources/delete"
      ]
    },
    "user": {
      "allowedMethods": [
        "ping",
        "initialize",
        "tools/list", 
        "tools/call",
        "resources/list",
        "resources/read",
        "prompts/list",
        "prompts/get",
        "notifications/initialized"
      ],
      "blockedMethods": [
        "resources/write",
        "resources/delete"
      ]
    },
    "admin": {
      "allowedMethods": ["*"],
      "blockedMethods": []
    }
  }
}

角色定义

  • 只读:可以列出和阅读资源、工具和提示
  • 用户:可以执行工具并执行除写入/删除之外的大多数操作
  • 管理员:完全访问所有方法(通配符 *)

运作原理

  1. 认证:JWT令牌在连接时进行验证
  2. 授权:根据角色权限检查每个MCP请求
  3. 过滤:被阻止的请求返回JSON-RPC错误响应
  4. 日志记录:在以下情况下记录安全事件 DEBUG=true

例子

完成工作流程

# 1. Generate a secure secret
SECRET=$(mcp-remote generate-secret --bits 256)
echo "Secret: $SECRET"

# 2. Create tokens for different users
ADMIN_TOKEN=$(mcp-remote generate-token --jwt-secret "$SECRET" --user "admin" --roles "admin" --expires-in "24h" | grep "Generated JWT token:" -A1 | tail -1)
USER_TOKEN=$(mcp-remote generate-token --jwt-secret "$SECRET" --user "editor" --roles "user" --expires-in "12h" | grep "Generated JWT token:" -A1 | tail -1)
READONLY_TOKEN=$(mcp-remote generate-token --jwt-secret "$SECRET" --user "viewer" --roles "readonly" --expires-in "8h" | grep "Generated JWT token:" -A1 | tail -1)

# 3. Start server with permissions
mcp-remote server tcp --port 8080 --jwt-secret "$SECRET" --permissions-config "permissions.json" -- npx @modelcontextprotocol/server-filesystem /path/to/files

# 4. Connect different users (in separate terminals)
mcp-remote client tcp --port 8080 --jwt-token "$ADMIN_TOKEN"     # Full access
mcp-remote client tcp --port 8080 --jwt-token "$USER_TOKEN"     # Limited access  
mcp-remote client tcp --port 8080 --jwt-token "$READONLY_TOKEN" # Read-only access

不同的用户体验

管理用户:

  • 可以调用任何MCP方法
  • 完全读/写访问
  • 可以执行工具、修改资源

普通用户:

  • 可以列出和阅读资源
  • 可以执行工具
  • 无法写入或删除资源

只读用户:

  • 可以列出和阅读资源
  • 无法执行工具
  • 无法修改任何内容

错误处理

当用户试图访问被阻止的方法时:

{
  "jsonrpc": "2.0",
  "id": 123, 
  "error": {
    "code": -32601,
    "message": "Method not allowed: Access denied for method 'tools/call'"
  }
}

发展

命令

npm run build    # Compile TypeScript
npm start        # Run the compiled binary  
tsc             # Direct TypeScript compilation

测试

该项目具有全面的测试覆盖范围,包括单元测试和集成测试:

npm test                    # Run all tests (99 tests)
npm run test:unit          # Run unit tests only
npm run test:integration   # Run integration tests only
npm run test:coverage      # Run tests with coverage report

测试覆盖率:

  • 总体:20.85%的报表覆盖率
  • Auth模块:100%覆盖率(JWT操作、角色验证)
  • 权限模块:97.72%的覆盖率(访问控制、消息过滤)
  • utils模块:100%覆盖率(日志记录、验证、参数解析)

单元测试 (63次测试):

  • auth-unit.test.ts -JWT生成、验证、角色检查
  • permissions-unit.test.ts -权限加载、方法筛选、错误响应
  • utils-unit.test.ts -实用功能、验证、回退计算

集成测试 (36次测试):

  • TCP和WebSocket代理功能
  • JWT身份验证和授权流程
  • 错误处理和边缘情况
  • MCP协议合规性
  • 真实的服务器-客户端交互

调试模式

启用调试日志记录:

DEBUG=true mcp-remote server tcp --port 8080 --jwt-secret "secret" -- your-mcp-server

这将记录:

  • 客户端连接/断开
  • 身份验证事件
  • 已阻止具有用户角色的请求
  • 权限检查

建筑

代码库遵循可维护性和可测试性的模块化架构:

  • 主入口点: src/mcp-remote.ts -CLI编排和服务器/客户端逻辑
  • Auth模块: src/auth.ts -JWT令牌生成、验证和角色验证
  • 权限模块: src/permissions.ts -权限检查、MCP消息解析和访问控制
  • utils模块: src/utils.ts -用于日志记录、参数解析和验证的实用函数
  • 类型模块: src/types.ts -共享TypeScript接口和类型定义
  • ES模块:现代JavaScript模块系统
  • TypeScript:所有模块编译为 bin/ 目录
  • 依赖项: ws 对于WebSocket, jsonwebtoken 对于JWT来说, crypto 用于安全随机生成

安全功能

  • JWT身份验证:基于行业标准令牌的身份验证
  • 基于角色的访问:精细的权限控制
  • 方法筛选:请求级访问控制
  • 审计日志:安全事件跟踪
  • 令牌到期:可配置的令牌生命周期
  • 安全的秘密:加密安全的秘密生成

Claude桌面集成

要将此MCP远程代理与Claude Desktop一起使用,请执行以下操作:

1.安装软件包

npm install -g @izay21.dev/mcp-remote-proxy

2.启动代理服务器

# Generate JWT secret and token
SECRET=$(mcp-remote generate-secret --bits 256)
TOKEN=$(mcp-remote generate-token --jwt-secret "$SECRET" --user "claude-desktop" --roles "admin" --expires-in "24h" | grep "Generated JWT token:" -A1 | tail -1)

# Start proxy server with your MCP server
mcp-remote server tcp --port 8080 --jwt-secret "$SECRET" -- npx @modelcontextprotocol/server-filesystem /path/to/files

3.配置克劳德桌面

在Claude Desktop MCP配置文件中,连接到代理,而不是直接连接到MCP服务器:

{
  "mcpServers": {
    "remote-filesystem": {
      "command": "mcp-remote",
      "args": ["client", "tcp", "--port", "8080", "--host", "localhost", "--jwt-token", "your-jwt-token"]
    }
  }
}

替换 "your-jwt-token" 其中实际令牌是在步骤2中生成的。

Claude Desktop的优势

  • 远程MCP服务器:将Claude Desktop连接到在不同机器上运行的MCP服务器
  • 安全:为任何MCP服务器添加JWT身份验证和基于角色的访问控制
  • 网络灵活性:使用TCP或WebSocket协议而不是stdio
  • 访问控制:限制Claude Desktop使用细粒度权限可以执行的操作

许可证

麻省理工学院

目录标签

目录标签

命令行工具HTMLClaude本地部署MCP代理JWT认证角色访问控制TCP/WebSocketCLI工具

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP