多MCP系统可观测性仪表盘

MCP Atlas 是一个用于多MCP系统的可观测性仪表盘,记录实时请求流、重建跟踪、测量延迟、跟踪服务健康状况、构建依赖图并检测异常。

  • by Deepesh-Katudia
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Deepesh-Katudia/mcp-atlas

使用说明

MCP图集

MCP Atlas是多MCP系统的可观察性仪表板。它记录实时请求流,重建跟踪,测量延迟,跟踪服务健康状况,构建依赖关系图,并显示异常。

此存储库目前支持两种实用模式:

  • 本地实时模式:Atlas在三个轻量级的类似MCP的服务上代理真实的HTTP请求
  • Blaxel集成模式:Atlas可以连接到Blaxel沙盒MCP端点并发现工作区MCP功能

视频演示

https://github.com/user-attachments/assets/87a1d2d5-9ff5-4f31-92f7-3c10b5a88d16

实施了什么

  • 现场本地服务 Search MCP, Memory MCP,以及 File MCP
  • Atlas代理,转发请求并从真实流量中发出遥测数据
  • 带轨迹重建的内存遥测存储
  • 概述、拓扑、运行状况和日志页面
  • 故障、慢跳、慢跟踪、降级服务和离线服务的异常检测
  • 从日志导出为Excel兼容的CSV
  • Blaxel沙盒连接状态端点
  • 经过身份验证的后端Blaxel MCP连接器
  • Blaxel工作区MCP服务器发现端点

仓库的规划

  • apps/server Atlas后端。Express+Socket。IO、遥测聚合、Atlas代理路由、Blaxel集成。

  • apps/web React+Vite前端仪表板。

  • functions/atlas-blaxel-mcp 可部署的自定义Blaxel MCP服务器通过可流式HTTP公开托管的Atlas工具。

  • services/search-mcp 轻量级本地搜索服务。

  • services/memory-mcp 轻量级本地内存服务。

  • services/file-mcp 轻量级本地文件服务。

  • logs 运行时日志(如果手动启动后台进程)。

建筑

本地直播流

Browser
  |
  v
MCP Atlas Web
  |
  v
Atlas Proxy (apps/server)
  |
  +--> Search MCP  (4001)
  +--> Memory MCP  (4002)
  +--> File MCP    (4003)

Atlas代理是可观察性层。它

  • 接收请求
  • 分配 traceId 和 requestId
  • 将呼叫转发到下游服务
  • 测量延迟
  • 记录跳转成功或失败
  • 重建痕迹
  • 通过Socket流式传输仪表板快照。输入

Blaxel集成流程

MCP Atlas Server
  |
  +--> Blaxel Sandbox API / SDK
  +--> Blaxel Sandbox MCP endpoint
  +--> Blaxel Workspace MCP function discovery API

Atlas目前以三种方式使用Blaxel:

  • 连接或创建沙盒
  • 连接到经过身份验证的沙盒MCP端点
  • 从Blaxel列出工作区MCP服务器功能
  • 调用托管的自定义Blaxel MCP函数,并将这些请求记录为Atlas遥测

港口

预期本地端口:

  • 5173 web前端
  • 4000 Atlas代理/后端
  • 4001 搜索MCP
  • 4002 存储器MCP
  • 4003 文件MCP

入门指南

先决条件

  • Node.js 22+
  • npm 11+

安装

npm install

运行一切

从存储库根目录:

npm run dev

这将开始:

  • 网络上 http://localhost:5173
  • Atlas代理打开 http://localhost:4000
  • 在上搜索MCP http://localhost:4001
  • 内存MCP打开 http://localhost:4002
  • 打开MCP文件 http://localhost:4003

构建

npm run build

环境变量

看 .env.示例.

主要变量:

  • BL_API_KEY Blaxel API密钥。

  • BL_WORKSPACE Blaxel工作区名称或ID。

  • BLAXEL_SANDBOX_NAME 要创建或重新连接的沙盒名称。

  • BLAXEL_SANDBOX_IMAGE 沙盒基础图像。

  • BLAXEL_SANDBOX_MEMORY_MB 沙盒内存(MB)。

  • BLAXEL_SANDBOX_PORT 暴露的沙盒端口。

  • BLAXEL_SANDBOX_REGION 沙盒区域。

  • BLAXEL_MCP_URL 沙盒或托管MCP服务器的完整MCP端点URL。

备注

  • .env 被忽视了。
  • 后端显式加载根目录 .env
  • 前端在开发过程中使用Vite代理到达后端

本地服务

搜索MCP

路线:

  • POST /tool

有效载荷示例:

{
  "query": "alignment dashboard"
}

存储器MCP

路线:

  • POST /tool

有效载荷示例:

{
  "topic": "alignment dashboard",
  "userId": "u1"
}

文件MCP

路线:

  • POST /tool

有效载荷示例:

{
  "filename": "atlas-notes.txt"
}

强制故障有效载荷:

{
  "filename": "atlas-notes.txt",
  "forceFailure": true
}

Atlas后端API

健康和快照

  • GET /health
  • GET /api/snapshot

本地服务注册表

  • GET /api/services

代理路由

  • POST /proxy/search-mcp
  • POST /proxy/memory-mcp
  • POST /proxy/file-mcp

演示流程

  • POST /api/demo/agent-task

这将生成一个实时多跳跟踪:

Gateway MCP -> Search MCP -> Memory MCP -> File MCP

Blaxel集成

  • GET /api/integrations/blaxel 沙盒连接状态。

  • GET /api/integrations/blaxel/mcp/ping 服务器端对配置的MCP端点进行了ping身份验证。

  • GET /api/integrations/blaxel/mcp/tools 列出配置的Blaxel MCP端点中的工具。

  • POST /api/integrations/blaxel/mcp/tools/:toolName 在配置的Blaxel MCP端点上调用特定工具。

  • GET /api/integrations/blaxel/functions 从Blaxel列出工作区MCP服务器功能。

  • GET /api/integrations/blaxel/functions/:functionName/test 测试连接到已发现的工作区MCP功能并列出其工具。

  • GET /api/integrations/blaxel/functions/:functionName/tools 列出由发现或配置的托管Blaxel MCP函数暴露的工具。

  • POST /api/integrations/blaxel/functions/:functionName/tools/:toolName 通过Atlas调用托管的Blaxel MCP工具,并将跟踪遥测数据发送到仪表板中。

前端功能

概述

  • 顶级指标
  • 异常摘要
  • 交通趋势图
  • 对齐见解
  • Blaxel MCP注册表
  • 拓扑快照
  • 最新追踪

拓扑学

  • 依赖图
  • 集群切换
  • 动画集群视图
  • 边缘列表

健康

  • 服务健康表
  • 延迟图表
  • 故障压力视图

日志

  • 最近跟踪列表
  • 逐跳跟踪详细信息
  • 将所选跟踪导出为Excel兼容 .csv

遥测模型

核心事件类型:

  • HEARTBEAT
  • REQUEST_RECEIVED
  • REQUEST_FORWARDED
  • REQUEST_COMPLETED
  • REQUEST_FAILED

核心领域包括:

  • traceId
  • requestId
  • sourceMcp
  • targetMcp
  • eventType
  • status
  • latencyMs
  • timestamp
  • errorMessage

所有遥测数据当前都存储在内存中。还没有数据库。

异常检测

Atlas目前提出了以下异常情况:

  • 失败的跟踪
  • 慢跳
  • 缓慢的端到端跟踪
  • p95潜伏期延长
  • 高故障率
  • 离线服务

这些计算公式如下:

Blaxel笔记

为什么浏览器访问 /mcp 退货401

Blaxel MCP端点需要身份验证标头。在浏览器中直接打开MCP URL将返回:

{
  "error": "Unauthorized",
  "message": "Authentication required"
}

这是意料之中的。

Atlas通过从后端连接并发送来解决这个问题:

  • Authorization: Bearer <BL_API_KEY>
  • X-Blaxel-Workspace: <BL_WORKSPACE>

当前Blaxel状态

在实施时:

  • 沙盒MCP端点连接正常
  • 来自沙盒MCP工作的工具列表
  • 工作区功能发现端点工作
  • 部署后,Atlas可以调用托管的Blaxel MCP函数
  • 如果工作区中没有部署MCP功能,则工作区功能列表可能为空

如果 GET https://api.blaxel.ai/v0/functions 为您的工作区返回一个空数组,即使存在猜测的URL,Atlas也不会将托管的MCP函数视为活动的。在这种状态下,对托管端点的请求通常会失败 Workload not found,这表示该功能未在Blaxel上成功部署。

托管自定义MCP服务器

该仓库现在包括一个可部署的托管MCP服务器,位于:

它公开了四个工具:

  • atlasSearch
  • atlasMemory
  • atlasFile
  • atlasAgentTask

部署配置位于:

部署后预期的托管终结点:

https://run.blaxel.ai/<workspace>/functions/mcp-atlas-tools/mcp

建议从该文件夹部署流:

bl serve --hotreload
bl deploy

部署后,Atlas将发现 mcp-atlas-tools 从Blaxel或合成其预期的URL BLAXEL_ATLAS_FUNCTION_NAME 并在 Blaxel MCP Registry.

已知限制

  • 遥测数据仅存储在内存中
  • 还没有PostgreSQL或Supabase持久化
  • Atlas本身没有身份验证层
  • 本地服务是类似HTTP MCP的服务,而不是完整的MCP协议服务器
  • 前端的捆绑包大小仍然很大
  • Blaxel工作区发现仅列出已部署的MCP功能;它本身不会产生痕迹
  • 此环境中未安装Blaxel CLI,因此必须在登录Blaxel后从您的计算机运行部署

建议的后续步骤

  • 在PostgreSQL或Supabase中持久化跟踪和度量
  • 添加跨跟踪的过滤和搜索
  • 将外部真实MCP流量摄入Atlas遥测方案
  • 将本地服务、沙盒MCP工具和工作区MCP功能统一到一个可观察的注册表中
  • 为Blaxel MCP调用添加更丰富的每工具遥测
  • 通过路由级代码拆分减小前端包大小

有用的命令

运行所有服务:

npm run dev

构建一切:

npm run build

仅运行后端:

npm run dev -w @mcp-atlas/server

只运行前端:

npm run dev -w @mcp-atlas/web

只运行一个服务:

npm run dev -w @mcp-atlas/search-mcp

文件引用

主后端:

前端:

本地服务: