跳到主要内容

MCP 集成

Lens 将其平台能力以 Model Context Protocol (MCP) 服务器的形式暴露出来, 这样任何支持 MCP 的客户端都可以像内置的 Lens Assistant 一样检查和操作 Lens。MCP 层是一个瘦适配层: 每一个工具都是通过环回地址调用 Lens 自身的 REST API——MCP 服务器中没有重新实现 任何集群、认证或领域逻辑。

端点与传输方式​

属性值
方法 / 路径POST /api/mcp(位于 Lens 的 BFF/Node 服务器上)
默认端口SERVER_PORT / PORT(3000;如果 3000 已被占用,scripts/lens-local.sh 会选取其上方下一个空闲端口)
传输方式MCP Streamable HTTP,JSON-RPC 2.0
会话无状态——每个请求使用一个临时的 MCP 服务器,没有 Mcp-Session-Id
其他方法GET / DELETE /api/mcp 返回 405(无状态模式下没有服务器到客户端的流)

该端点特意设计为无状态:它可以水平扩展,并且每一个工具都会重新从 REST API 读取实时数据,因此响应结果始终反映当前状态。

认证​

POST /api/mcp 需要一个已登录的会话,该会话需持有以下权限之一:

  • mcp:tool:invoke,或者
  • playground:chat:use

可以通过浏览器 Cookie prism_session 或者通过 Bearer 令牌发送会话凭据:

Authorization: ******

<session-token> 是登录时颁发的 prism_session Cookie 的值(可以在登录状态下从 浏览器开发者工具中读取)。请求会通过 GET /api/v1/auth/session 进行内省;未认证的调用会得到 401 unauthenticated, 而没有上述权限的会话会得到 403。

备注

面向第三方 MCP 客户端的专用凭据(API 密钥 / OAuth 权限范围)是一项 计划中的、独立的设计——目前外部客户端复用的是已登录的会话。相关的开放性问题 请参阅 docs/design/mcp-playground-design.md(第 4 阶段)。

工具​

工具目录是从 Lens 的 REST 接口生成的,并按领域分组。每个工具都带有一个 风险等级:

等级含义示例
read只读查看list_clusters、list_deployments、get_deployment_pod_logs、get_flow_map_metrics、list_storage_volumes、search_huggingface_models
write会改变状态(创建 / 启动 / 停止 / 安装)create_simulation_task、start_cluster_bootstrap、create_standard_vllm_deployment_run、install_gpu_driver、create_ai_provider
approve具有破坏性;需要明确确认delete_cluster、delete_configuration_artifact、delete_deployment_execution、delete_evaluation_workflow、delete_ai_provider

在运行时通过 tools/list 可以发现确切的、最新的工具列表(名称会随着模块 演进而变化)。所有工具都返回 JSON;调用失败时会返回一个 MCP 错误结果 (isError: true),其消息就是底层的 REST 错误信息。

连接客户端​

MCP Inspector​

  1. 启动 Lens 开发技术栈(scripts/lens-local.sh start)。
  2. 在 MCP Inspector 中选择 Streamable HTTP,URL 填写 http://<lens-host>:3000/api/mcp。
  3. 添加请求头 Authorization: ******,然后点击连接并列出工具。

通用 MCP 客户端配置​

{
"mcpServers": {
"lens": {
"type": "http",
"url": "http://<lens-host>:3000/api/mcp",
"headers": {
"Authorization": "******"
}
}
}
}

原生 JSON-RPC​

BASE=http://<lens-host>:3000/api/mcp
H="Authorization: ******"

# 1) 握手
curl -s $BASE -H "$H" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

# 2) 列出工具
curl -s $BASE -H "$H" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3) 调用一个只读工具
curl -s $BASE -H "$H" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"list_clusters","arguments":{}}}'

说明​

  • 工具分为只读/写入/需确认三种类型;approve 等级应当只在一个人工 确认步骤之后才被调用(正如 Lens Assistant 的界面所做的那样)——智能体不得自动批准这类操作。
  • MCP 服务器从不直接与集群通信:它调用的是 Lens 的 REST 接口,而该接口 应用的是与 UI 相同的认证、RBAC 和作用域规则。
  • 由于该传输方式是无状态的,所以不需要每次调用都执行一次新的 initialize, 但每个请求仍然必须携带上述凭据。