请求代理安全演示

RequestRocket MCP安全演示展示了如何将MCP服务器配置在RequestRocket代理后,同时保持外部URL的可预测性。

  • by geoicons
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 geoicons/requestrocket-mcp-security-demo

使用说明

RequestRocket MCP安全演示

这个概念证明展示了MCP服务器如何坐在RequestRocket代理后面,同时保持代理对外部URL形状的可预测性。相同的模式可以重复用于其他工具。

📚 文档

拓扑和URL方案

  • 地区: ap-southeast-2
  • 代理UUID(示例): 123e4567-e89b-12d3-a456-426614174000
  • 代理调用的外部端点:
    • https://ap-southeast-2.requestrocket.com/api/123e4567-e89b-12d3-a456-426614174000/invoke
  • RequestRocket转发到MCP服务器 https://mcp-demo.yourdomain.com/invoke,注射 x-internal-mcp-token.
  • 重要:RequestRocket是一个 仅限身份验证代理 -它不会转换请求正文或URL路径
  • 客户端请求格式:
    {
        "toolName": "getOpenTenders",
        "args": { "region": "AU" }
    }
    
  • RequestRocket将此消息原封不动地转发给MCP服务器,只翻译身份验证(承载令牌→ x内部mcp令牌)

项目结构

  • src/mcp-demo-server.ts –最小MCP风格的服务器 POST /invoke,工具 getOpenTenders 和 echo,以及标头强制执行 x-internal-mcp-token.
  • src/client-demo.ts 基于Axios的脚本使用RequestRocket URL形状调用代理URL。
  • package.json/tsconfig.json TypeScript构建并运行脚本。

先决条件

  • Node.js 18+
  • 纱线(npm install -g yarn)
  • 安装依赖项: yarn install

运行MCP演示服务器

开发模式(使用TypeScript):

yarn dev:server

生产模式(需要先构建):

yarn build
yarn start:server

环境变量:

  • PORT –默认为 3000.
  • INTERNAL_MCP_TOKEN –代币预计在 x-internal-mcp-token 标题(默认为 dev-internal-token).

示例请求(RequestRocket将向下游发送什么):

curl -X POST http://localhost:3000/invoke \
  -H "Content-Type: application/json" \
  -H "x-internal-mcp-token: dev-internal-token" \
  -d '{"toolName": "getOpenTenders", "args": {"region": "AU"}}'

针对代理URL运行客户端演示

如果需要,请更新代理UUID和API密钥。默认值反映了示例拓扑并回退到 dev-api-key 用于本地测试。

REQUESTROCKET_API_KEY=your-api-key yarn demo:client

这将调用两者 getOpenTenders 和 echo 通过:

  • https://ap-southeast-2.requestrocket.com/api/123e4567-e89b-12d3-a456-426614174000/mcp/getOpenTenders
  • https://ap-southeast-2.requestrocket.com/api/123e4567-e89b-12d3-a456-426614174000/mcp/echo

备注

  • MCP服务器从不接收RequestRocket凭据;它只看到您配置的内部令牌。
  • 您可以通过让MCP服务器通过额外的RequestRocket代理调用其他系统(例如Oracle Fusion)来扩展该模式,这样就不会有下游秘密离开您的控制。

快速入门指南

  1. 安装依赖项:

    yarn install
    
  2. 构建项目:

    yarn build
    
  3. 在本地启动服务器:

    yarn start:server
    
  4. 测试其工作原理:

    curl -X POST http://localhost:3000/invoke \
      -H "Content-Type: application/json" \
      -H "x-internal-mcp-token: dev-internal-token" \
      -d '{"toolName": "getOpenTenders", "args": {"region": "AU"}}'
    
  5. 配置RequestRocket:

  6. 部署您的MCP服务器:

    • 部署到您的托管平台(AWS、Azure、GCP等)
    • 设置环境变量: INTERNAL_MCP_TOKEN=your-secure-token
    • 使用您的服务器URL更新RequestRocket配置
  7. 通过RequestRocket进行测试:

    curl -X POST https://ap-southeast-2.requestrocket.com/api/{your-proxy-id}/invoke \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"toolName": "getOpenTenders", "args": {"region": "AU"}}'