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

Pro Disco

MCP Server

ProDisco是一个渐进式API发现服务器框架,通过索引TypeScript库API并提供沙箱执行环境,帮助开发者动态发现和使用库功能。适用于Kubernetes管理、数据分析等多种场景。

工具数

2

提示词数

0

GitHub Stars

2

资源数

0
KubernetesClaude数据分析Claude

安装说明

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

作者 / 组织

harche

提供方

harche

最后核验

2026/5/17 20:22

快速接入

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

详细介绍

ProDisco(渐进式披露MCP服务器)

ProDisco是一个 渐进式披露MCP服务器框架:您提供一个TypeScript库列表,ProDisco为它们的API建立索引以供发现,沙盒只执行使用这些库的代码。它遵循Anthropic的 渐进呈现 模式:MCP服务器公开搜索工具,代理发现这些工具来编写代码,在沙箱中执行代码,只有最终的控制台输出返回给代理。

Kubernetes/可观察性只是一个例子 配置(参见 examples/).您同样可以围绕AWS/GCP SDK、Postgres客户端、内部TypeScript SDK等构建MCP服务器。

注意:ProDisco更喜欢从TypeScript声明文件中索引API(.d.ts).如果图书馆不发货 .d.ts,ProDisco可以退回到索引 ESM JavaScript 导出(尽力而为;类型默认为 any).不支持仅包含CommonJS的JavaScript包,不支持键入。

演示用例(可选):

  • Kubernetes访问 通过 @kubernetes/client-node
  • 普罗米修斯指标 通过 @prodisco/prometheus-client
  • 洛基原木 通过 @prodisco/loki-client
  • 分析 通过 simple-statistics

![Watch the demo](https://www.youtube.com/watch?v=W-DyrsGRJeQ)

建筑

Architecture

每个MCP客户端会话都有自己的隔离沙盒CRD(Kata-VM),每个会话都有gRPC连接、空闲超时清理和最大会话限制。看 docs/grpc-sandbox-architecture.md 了解详情。

______________________________________________________________________

目录

- 添加到克劳德代码 - 环境变量 - 开发设置 - HTTP传输

- prodisco.search工具 - prodisco.run沙盒

- 集装箱隔离 - 传输安全(TLS/mTLS)

______________________________________________________________________

为什么是渐进式披露?

Anthropic的最新指南解释了为什么MCP服务器应该逐步显示功能,而不是将每个工具定义都转储到模型上下文中。当代理探索TypeScript模块的文件系统时,它们只加载所需的内容,并在执行环境中处理数据,然后向聊天返回简洁的结果。这使令牌使用率保持较低水平,改善了延迟,并避免了通过模型复制大型中间有效载荷(来源).

ProDisco更进一步:它提供了一个结构化的参数搜索工具,使用TypeScript AST解析从上游库中动态提取方法,而不是公开自定义TypeScript模块。这意味着:

  • 零维护 -方法直接从库中提取 .d.ts 文件
  • 始终为最新 -升级依赖关系会自动暴露新方法
  • 类型安全 -包括完整的参数类型和返回类型

______________________________________________________________________

快速开始

添加到克劳德代码

Kubernetes+可观察性:

curl -O https://raw.githubusercontent.com/harche/ProDisco/main/examples/prodisco.kubernetes.yaml
claude mcp add ProDisco --env KUBECONFIG="${HOME}/.kube/config" -- npx -y @prodisco/mcp-server --config prodisco.kubernetes.yaml

PostgreSQL(内存测试):

curl -O https://raw.githubusercontent.com/harche/ProDisco/main/examples/prodisco.postgres.yaml
claude mcp add ProDisco -- npx -y @prodisco/mcp-server --config prodisco.postgres.yaml

如果需要,请删除:

claude mcp remove ProDisco

环境变量

变量必填描述
PRODISCO_CONFIG_PATH库配置文件的路径(与 --config)
KUBECONFIG(如果使用 @kubernetes/client-node)kubeconfig的路径(默认为 ~/.kube/config)
PROMETHEUS_URL(如果使用 @prodisco/prometheus-client)Prometheus服务器URL
LOKI_URL(如果使用 @prodisco/loki-client)洛基服务器URL
重要提示: 运行前导出环境变量 claude mcp addThe --env 标志可能无法可靠地将变量传递给MCP服务器进程。
提示: 如果您正在使用kind集群进行本地测试,则可以将其移植到Prometheus: ``bash kubectl port-forward -n monitoring svc/prometheus-server 9090:80 ` 然后设置 PROMETHEUS_URL="http://localhost:9090"`

开发设置

对于当地发展:

git clone https://github.com/harche/ProDisco.git
cd ProDisco
npm install
npm run build
claude mcp add --transport stdio prodisco -- node dist/server.js
claude mcp remove prodisco # remove when you're done

启动选项:

标志描述
--clear-cache启动前清除脚本缓存
`--config
`要索引/允许的YAML/JSON配置列表库的路径
--transport 运输方式: stdio (默认)或 http
--host 要绑定的HTTP主机(默认值: 127.0.0.1)
`--port
`HTTP端口(默认值: 3000,暗示 --transport http)
node dist/server.js --clear-cache

动态库配置

ProDisco可以通过一个配置文件启动,该文件确定哪些npm包是:

  • 已编入索引 通过 prodisco.searchTools
  • 允许 在沙盒中通过 require() (与索引保持同步)

examples/ 用于即用型配置(Kubernetes、PostgreSQL等)。

示例 prodisco.config.yaml:

libraries:
  - name: "@kubernetes/client-node"
    description: "Kubernetes API client"
  - name: "@prodisco/prometheus-client"
    description: "Prometheus queries + metric discovery"
  - name: "@prodisco/loki-client"
    description: "Loki LogQL querying"
  - name: "simple-statistics"
    description: "Statistics helpers"

从配置文件开始:

node dist/server.js --config prodisco.config.yaml

缺少的软件包会自动安装到 .cache/deps 在启动时。

环境变量:

变量描述
PRODISCO_CONFIG_PATHYAML/JSON配置列表库的路径

从配置构建Docker镜像

如果你想要已经包含配置库的映像(用于单独部署MCP和沙盒),你可以直接从同一个配置文件构建它们:

npm run docker:build:config -- --config prodisco.config.yaml

这将构建:

  • prodisco/mcp-server: 使用根 Dockerfile
  • prodisco/sandbox-server: 使用 packages/sandbox-server/Dockerfile

您可以覆盖图像名称/标签:

npm run docker:build:config -- --config prodisco.config.yaml --tag dev --mcp-image myorg/prodisco-mcp --sandbox-image myorg/prodisco-sandbox

HTTP传输

ProDisco支持基于网络的MCP连接的HTTP传输,支持远程访问和容器化部署。

以HTTP模式启动:

# HTTP mode on default port (3000)
node dist/server.js --transport http

# HTTP mode on custom port
node dist/server.js --port 8080

# HTTP mode on all interfaces (for network access)
node dist/server.js --host 0.0.0.0 --port 3000

环境变量:

变量默认值描述
MCP_TRANSPORTstdio运输方式(stdiohttp)
MCP_HOST127.0.0.1要绑定的HTTP主机
MCP_PORT3000要侦听的HTTP端口

HTTP端点:

端点方法描述
/healthGET健康检查,返回 {"status":"ok"}
/mcpPOSTMCP JSON-RPC端点(可流式HTTP)

示例:使用curl连接

# Health check
curl http://localhost:3000/health

# Initialize MCP session
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'

# Use session ID from response header for subsequent requests
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "mcp-session-id: " \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

HTTP传输使用MCP SDK StreamableHTTPServerTransport,通过以下方式支持会话管理 mcp-session-id 用于流式响应的标头和服务器发送事件(SSE)。

______________________________________________________________________

可用工具

ProDisco公开了两个工具:

prodisco.search工具

搜索和浏览提取的API文档 启动配置的TypeScript库 (从 .d.ts).使用它来发现正确的方法/类型/函数签名 之前 召唤 prodisco.runSandbox.

文档类型:

类型描述
method从配置的库中提取的类方法/实例API
typeTypeScript类型(接口/类/枚举/类型别名)
function独立导出功能
script缓存的沙盒脚本
all搜索上面的所有内容(默认)

示例:

// Search broadly by name (methods/types/functions/scripts)
// Replace the placeholders with terms relevant to your configured libraries.
{ methodName: "" }

// Filter by document type (methods/types/functions/scripts)
{ methodName: "", documentType: "method" }

// Find Loki query methods
{ documentType: "method", library: "@prodisco/loki-client", category: "query" }

// Find Prometheus methods
{ methodName: "executeRange", library: "@prodisco/prometheus-client" }

// Find analytics functions
{ documentType: "function", library: "simple-statistics" }

// Search cached scripts
{ documentType: "script", methodName: "deployment" }

// Get TypeScript type definitions (classes/interfaces/enums/type aliases)
{ methodName: "", documentType: "type" }

// Exclude certain categories/libraries
{ methodName: "query", exclude: { categories: ["delete"], libraries: ["some-library"] } }

有关综合文档,请参阅 docs/search-tools.md.

prodisco.run沙盒

在沙盒环境中使用相同的方法执行TypeScript代码 配置库列表 作为 prodisco.searchTools.

执行模式:

模式目的关键参数
execute (默认)阻止执行codecached, timeout
stream实时输出流codecached, timeout
async后台执行codecached, timeout
status检查异步执行executionId, wait, outputOffset
cancel取消运行执行executionId
list列出正在执行的操作states, limit

沙盒环境:

  • console -捕获的输出(日志、错误、警告、信息)
  • require() -仅限于已配置的npm包(及其子路径)
  • process.env -环境变量

示例:

// Execute code (default mode)
{
  code: `
    const k8s = require("@kubernetes/client-node");
    const kc = new k8s.KubeConfig();
    kc.loadFromDefault();

    const api = kc.makeApiClient(k8s.CoreV1Api);
    const pods = await api.listNamespacedPod("default");
    console.log(\`Found \${pods.body.items.length} pods\`);
  `
}

// Run a cached script
{ cached: "script-2025-01-01T12-00-00-abc123.ts" }

// Stream mode - real-time output
{ mode: "stream", code: "for(let i=0; i m.name));

    // Execute PromQL query
    const end = new Date();
    const start = new Date(end.getTime() - 60 * 60 * 1000);
    const result = await client.executeRange('node_memory_MemAvailable_bytes', { start, end, step: '1m' });
    console.log(\`Got \${result.data.length} time series\`);
  `
}

// Query Loki logs
{
  code: `
    const { LokiClient } = require('@prodisco/loki-client');
    const client = new LokiClient({ baseUrl: process.env.LOKI_URL });
    const result = await client.queryRange('{namespace="default"}', { since: '1h', limit: 100 });
    result.logs.forEach(log => console.log(\`[\${log.timestamp.toISOString()}] \${log.line}\`));
  `
}

有关架构的详细信息,请参阅 docs/grpc-sandbox-architecture.md.

______________________________________________________________________

高级分析

ProDisco超越了简单的资源获取,它提供 统计分析、机器学习和信号处理 深度集群可观测性的能力。

可用库:

图书馆目的
simple-statistics平均值、中位数、标准偏差、z评分、百分位数、线性回归、相关性
ml-regression趋势预测的多项式、指数和幂回归
mathjs矩阵运算、线性代数、符号数学
fft-js用于检测周期性模式的快速傅里叶变换

示例提示:

用例提示
日志分析“查询Loki上一小时nginx应用程序的错误日志。显示最常见的错误模式。”
群集运行状况分析所有Pod的CPU和内存使用情况。计算平均值、中位数、标准偏差,并使用z分数识别异常值。显示高于第95百分位的Pod
内存渗漏体“检查内存泄漏。获取超过2小时的内存使用情况,并使用线性回归来识别内存增加的Pod。”
异常检测“分析网络流量并检测异常。查找与正常值相差2个标准差以上的接收/传输速率。”
相关性“查找CPU和内存使用率之间的相关性。告诉我高CPU是否与高内存相关。”
周期性模式“在节点CPU上使用FFT分析来检测周期性模式。是否有表明计划作业的主频率?”
容量规划“分析资源趋势,并使用多项式回归来预测何时可能达到资源极限。”

有关代码和输出的详细示例,请参阅 docs/analytics.md.

______________________________________________________________________

高级部署

集装箱隔离

为了加强隔离,请在Kubernetes集群中运行沙盒服务器并通过TCP连接。

1.部署沙盒服务器:

# Build and load the image (for kind clusters)
docker build -f packages/sandbox-server/Dockerfile -t prodisco/sandbox-server:latest .
kind load docker-image prodisco/sandbox-server:latest

# Deploy
kubectl apply -f packages/sandbox-server/k8s/deployment.yaml

# Port-forward to access locally
kubectl -n prodisco port-forward service/sandbox-server 50051:50051

2.配置MCP服务器使用TCP:

export KUBECONFIG="${HOME}/.kube/config"
export SANDBOX_USE_TCP=true
export SANDBOX_TCP_HOST=localhost
export SANDBOX_TCP_PORT=50051
claude mcp add --transport stdio prodisco -- node dist/server.js --config examples/prodisco.kubernetes.yaml

运输环境变量:

变量默认值描述
SANDBOX_USE_TCPfalse使用TCP而不是本地子进程
SANDBOX_TCP_HOSTlocalhost沙盒服务器主机
SANDBOX_TCP_PORT50051沙盒服务器端口

传输安全(TLS/mTLS)

对于生产部署,沙盒服务器支持TLS和双向TLS(mTLS):

模式描述
insecure无加密(默认,用于本地开发)
tls服务器端TLS(客户端验证服务器身份)
mtls双向TLS(客户端和服务器都进行身份验证)

配置:

# Server-side TLS
export SANDBOX_TRANSPORT_MODE=tls
export SANDBOX_TLS_CERT_PATH=/path/to/server.crt
export SANDBOX_TLS_KEY_PATH=/path/to/server.key

# Client-side (MCP server)
export SANDBOX_TRANSPORT_MODE=tls
export SANDBOX_TLS_CA_PATH=/path/to/ca.crt

对于Kubernetes部署,使用证书管理器自动化证书管理。看 k8s/证书管理器 即用清单目录。

有关完整的体系结构和安全详细信息,请参阅 docs/grpc-sandbox-architecture.md.

______________________________________________________________________

测试

集成测试

使用KIND集群+Cloud-Agent SDK进行端到端测试:

npm run test:integration

有关详细的测试说明,请参阅 docs/集成测试.md.

______________________________________________________________________

其他文件

文档描述
docs/analytics.md高级分析指南 -异常检测、预测、相关性、FFT分析
docs/search-tools.md完整的searchTools参考,包括示例和技术架构
示例/README.md实例+可运行的库配置文件(examples/*.yaml)
docs/grpc-sandbox-architecture.md沙盒架构、gRPC协议和安全配置
docs/集成测试.md集成测试工作流程和容器测试

______________________________________________________________________

许可证

麻省理工学院

目录标签

目录标签

KubernetesClaude数据分析API发现TypeScript本地部署沙箱执行

支持客户端

Claude

接入字段

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

未说明

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

session

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明sessionlocal-only

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP