Token导航 LogoToken导航TokenDH.com
Dcap Proxy logo
运维云端stdio官方级别未说明来源级核验

Dcap Proxy

MCP Server

一个无状态的MCP代理服务,通过DCAP协议实现实时性能跟踪和工具发现,适用于分布式Claude代理协议的场景。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
分布式系统TypeScriptClaude工具发现Claude

安装说明

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

作者 / 组织

mmuller88

提供方

mmuller88

最后核验

2026/5/17 20:20

运行时

Python

快速接入

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

命令预览

python dcap_listener.py

详细介绍

DCAP MCP代理-AWS CDK

一个简单的无状态MCP(模型上下文协议)代理,它为任何MCP服务器添加了实时DCAP(分布式克劳德代理协议)性能跟踪,而不需要更改代码。

DCAP v2.6实施 -全力支持 语义发现与自主工具调用.

特性

  • 无状态架构 -无数据库、无缓存、简单传递
  • DCAP v2.6协议 -UDP广播 perf_updatesemantic_discover 消息
  • 工具发现 -代理可以发现并自主调用代理工具
  • 长超时支持 -长时间运行的工具的15分钟Lambda超时
  • SSRF保护 -阻止本地主机、内部IP、非HTTPS URL
  • 数据隐私 -参数匿名化(仅元数据,无值)
  • 经济高效 -无服务器,按使用付费定价(约1万个请求每月1美元)
  • Lambda函数URL -无需API网关(免费,更简单)

建筑

Client → Lambda Function URL → Backend MCP Server
           ↓
        UDP/DCAP (broadcast metrics)

组件:

  • 匿名函数 (ARM64 Graviton2)-具有DCAP跟踪功能的代理处理程序
  • 函数URL -直接HTTPS端点(无API网关)
  • S3静态站点 -带有使用说明的仪表板

先决条件

  • Node.js 18+和npm
  • AWS CLI已配置凭据
  • AWS-CDK-CLI: npm install -g aws-cdk
  • AWS帐户

快速开始

1.安装依赖项

cd cdk
npm install

2.配置DCAP(可选)

设置DCAP广播的环境变量:

export DCAP_ENABLED=true
export DCAP_MULTICAST_IP=239.255.0.1  # or your UDP relay IP
export DCAP_PORT=10191
export DCAP_SERVER_ID=my-mcp-proxy

或者创建一个 .env 文件(未提交到git):

# .env
DCAP_ENABLED=true
DCAP_MULTICAST_IP=239.255.0.1
DCAP_PORT=10191
DCAP_SERVER_ID=my-mcp-proxy
DCAP_SERVER_NAME=My MCP Proxy

3.Bootstrap CDK(仅限首次使用)

cdk bootstrap

4.部署

cdk deploy

部署将输出:

  • 代理函数URL -您的Lambda函数URL端点
  • 仪表板URL -静态仪表板URL
  • 代理使用情况 -curl命令示例

5.测试代理

# Replace with your actual Lambda Function URL and backend MCP server
curl -X POST "https://abc123.lambda-url.us-east-1.on.aws/?url=https://your-mcp-server.com/mcp" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "id": 1
  }'

用法

基本代理请求

POST https://YOUR_FUNCTION_URL/?url=https://backend-mcp-server.com/mcp

Headers:
  Content-Type: application/json

Body:
  {
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "my_tool",
      "arguments": {
        "param1": "value1"
      }
    },
    "id": 1
  }

收听DCAP广播

创建一个简单的UDP侦听器来接收性能指标:

# dcap_listener.py
import socket
import json

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", 10191))

print("🎧 Listening for DCAP messages on port 10191...")

while True:
    data, addr = sock.recvfrom(4096)
    message = json.loads(data.decode())
    
    print(f"\n{'='*60}")
    print(f"Tool: {message['tool']}")
    print(f"Execution Time: {message['exec_ms']}ms")
    print(f"Success: {'✅' if message['success'] else '❌'}")
    print(f"Server: {message['sid']}")
    print(f"Arguments: {message['ctx']['args']}")
    print(f"{'='*60}")

运行侦听器:

python dcap_listener.py

DCAP v2.6消息格式

性能更新(perf_Update)

每个工具执行都广播一个性能指标:

{
  "v": 2,
  "ts": 1699564800,
  "t": "perf_update",
  "sid": "dcap-mcp-proxy",
  "tool": "query_database",
  "exec_ms": 234,
  "success": true,
  "ctx": {
    "args": {
      "query": "string[50]",
      "limit": "number"
    }
  }
}

工具发现(语义_范围)

代理可以发现代理工具并自主调用它们:

{
  "v": 2,
  "ts": 1699564800,
  "t": "semantic_discover",
  "sid": "dcap-mcp-proxy",
  "tool": "query_database",
  "does": "Queries a database with SQL",
  "when": [],
  "good_at": [],
  "bad_at": [],
  "connector": {
    "transport": "http",
    "endpoint": "https://backend.example.com/mcp",
    "auth": {
      "type": "none",
      "required": false
    },
    "headers": {
      "required": ["Accept", "Content-Type"],
      "optional": {
        "Accept": "application/json",
        "Content-Type": "application/json"
      }
    },
    "protocol": {
      "type": "mcp",
      "version": "2024-11-05",
      "methods": ["tools/list", "tools/call"]
    },
    "session": {
      "required": false
    }
  }
}

关键点: 代理接收 semantic_discover 消息可以使用 connector 信息。

了解更多: DCAP v2.6规范

配置

环境变量

在部署前在shell中设置这些变量,或在部署后更新AWS控制台中的Lambda函数环境变量:

变量默认值描述
DCAP_ENABLEDtrue启用/禁用DCAP广播
DCAP_MULTICAST_IP*(空)*UDP目标IP(DCAP需要)
DCAP_PORT10191UDP端口号
DCAP_SERVER_IDdcap-mcp-proxy此代理的唯一标识符
DCAP_SERVER_NAMEDCAP MCP Proxy人类可读的服务器名称

更新Lambda环境变量

部署后,您可以更新环境变量:

aws lambda update-function-configuration \
  --function-name DcapProxyStack-ProxyFunction... \
  --environment "Variables={DCAP_MULTICAST_IP=239.255.0.1,DCAP_PORT=10191}"

发展

地方发展

Lambda函数可以在本地进行测试:

# Install dependencies
cd lambda
npm install

# Run TypeScript compiler
npx tsc proxy.ts
npx tsc dcap.ts

# Test locally (requires Node.js)
node -e "
const { handler } = require('./proxy');
handler({
  requestContext: { http: { method: 'POST' } },
  queryStringParameters: { url: 'https://example.com' },
  body: JSON.stringify({ jsonrpc: '2.0', method: 'tools/list', id: 1 })
}).then(console.log);
"

CDK命令

# Show differences before deploy
cdk diff

# Synthesize CloudFormation template
cdk synth

# Deploy to AWS
cdk deploy

# Destroy the stack (clean up)
cdk destroy

成本估算

基于每天10000个请求(约300K/月):

服务成本/月备注
Lambda(ARM64)0.00美元免费层:100万次请求+40万GB秒
Lambda函数URL$0.00免费(不收取每次请求的费用)
S3(仪表板)0.10美元~1GB存储+最小传输
总计约0.10美元/月低流量基本免费

缩放比例:

  • 10万需求/天:约2美元/月
  • 100万需求/天:约8美元/月
  • 1000万需求/天:约80美元/月

安全

SSRF保护

代理会自动阻止:

  • localhost127.0.0.1
  • 内部IP范围(10.x, 172.16.x, 192.168.x)
  • AWS元数据端点(169.254.169.254)
  • 非HTTPS URL

数据隐私

在广播之前,参数是匿名的:

  • 字符串:截断为20个字符("my-secret-key-123""my-secret-key-123...")
  • 数组:仅显示计数([1,2,3]"[3 items]")
  • 对象:显示字段计数({a:1,b:2}"{2 fields}")

公共访问

Lambda函数URL为 公开可访问的 通过设计。要限制访问,请执行以下操作:

  1. 添加API密钥身份验证 (需要更改代码)
  2. 将CloudFront与WAF结合使用 (增加了成本和复杂性)
  3. 仅VPC部署 (需要VPC和专用网络)

对于具有身份验证的生产部署,请考虑升级到具有API密钥或AWS IAM身份验证的API网关。

故障排除

未收到DCAP消息

  1. 检查Lambda日志:
aws logs tail /aws/lambda/DcapProxyStack-ProxyFunction... --follow
  1. 验证环境变量:
aws lambda get-function-configuration \
  --function-name DcapProxyStack-ProxyFunction... \
  --query 'Environment.Variables'
  1. 从您的计算机测试UDP连接

后端超时

代理支持15分钟超时。如果你的后端需要更长的时间:

  1. 考虑异步模式(返回202,完成后回调)
  2. 将长操作分解为更小的块
  3. 对工作流程使用步骤功能>15分钟

CORS错误

默认情况下,所有源都启用CORS。如果您仍然看到CORS错误:

  1. 检查AWS控制台中的Lambda函数URL CORS设置
  2. 验证您的客户端是否发送 Content-Type: application/json
  3. 检查浏览器控制台是否有特定的错误消息

监控

CloudWatch指标

在AWS控制台中查看Lambda指标:

  • 调用
  • 持续时间
  • 错误
  • 节流阀

CloudWatch日志

实时流日志:

aws logs tail /aws/lambda/DcapProxyStack-ProxyFunction... --follow

DCAP分析

所有工具执行都通过DCAP广播。连接与DCAP兼容的仪表板,或使用上面的UDP侦听器脚本构建自己的仪表板。

升级

添加自定义域(可选)

要添加自定义域,您需要CloudFront:

// In lib/dcap-proxy-stack.ts
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';

const distribution = new cloudfront.Distribution(this, 'Distribution', {
  defaultBehavior: {
    origin: new origins.HttpOrigin(functionUrl.url),
  },
  domainNames: ['dcap.yourdomain.com'],
  certificate: certificate, // ACM certificate
});

添加速率限制

对于生产,使用Lambda保留并发或API网关添加速率限制。

许可证

麻省理工学院

支持

对于问题或疑问:

  1. 检查CloudWatch日志
  2. 查看 DCAP集成指南
  3. 在存储库中打开问题

______________________________________________________________________

内置: AWS CDK•Lambda•TypeScript• DCAP v2.6

目录标签

目录标签

分布式系统TypeScriptClaude工具发现无状态代理本地部署性能跟踪服务器less

支持客户端

Claude

接入字段

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

stdio

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

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiosession部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP