MCP注册表分析仪表板

一个静态仪表板,用于跟踪模型上下文协议(MCP)服务器的增长和分布情况,提供实时可视化和时间序列分析。

  • by edslclee
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 edslclee/mcp-registry-growth

使用说明

MCP注册表分析

用于跟踪模型上下文协议(MCP)服务器增长和分布的静态仪表板。

概述

该项目提供MCP注册表生态系统的实时可视化,跟踪服务器数量随时间的变化,并按类型(本地与远程)对其进行分类。数据通过自动化的GitHub Actions工作流每小时收集一次,并通过交互式Next.js仪表板显示。

特性

  • 实时分析:查看总服务器数、本地服务器数和远程服务器数
  • 时间序列可视化:由Recharts提供支持的交互式图表
  • 灵活过滤:按服务器类型筛选(全部/本地/远程)
  • 时间粒度:按小时、每天、每周或每月查看数据
  • 响应式设计:针对320px至4K显示器进行了优化
  • 深色主题:针对可读性进行了优化的现代深色UI
  • 静态站点:快速加载时间(<3s),静态发电

技术栈

前端

  • Next.js 14(带静态导出的应用路由器)
  • TypeScript
  • Tailwind CSS
  • Recharts(数据可视化)
  • Radix UI(可访问组件)

基础设施

  • Bash(数据收集脚本)
  • GitHub Actions(用于每小时数据聚合的macOS运行器)
  • CSV文件存储(时间序列快照)

入门指南

先决条件

  • Node.js 18+和npm
  • Bash和jq(用于运行聚合脚本)
  • Git

安装

  1. 克隆存储库:
git clone <repository-url>
cd mcp-registry-growth
  1. 安装依赖项:
npm install
  1. 运行开发服务器:
npm run dev
  1. 打开 http://localhost:3000 在浏览器中

生产大楼

生成静态站点:

npm run build

静态文件将输出到 out/ 目录。

数据收集

手动数据收集

手动运行bash聚合脚本:

bash scripts/aggregate-servers.sh

这将从MCP注册表API获取最新的服务器计数,并将带有时间戳的快照附加到 data/snapshots.csv.

自动收集

GitHub操作工作流(.github/workflows/aggregate-data.yml)在macOS运行器上每小时运行一次,以自动收集数据。工作流程:

  1. 检出存储库
  2. 执行bash脚本
  3. 提交新快照并将其推送到仓库
  4. 触发静态站点的重建

项目结构

mcp-registry-growth/
├── app/                      # Next.js app directory
│   ├── about/               # About page
│   ├── layout.tsx           # Root layout
│   ├── page.tsx             # Dashboard page
│   └── globals.css          # Global styles
├── components/
│   ├── charts/              # Chart components
│   ├── navigation/          # Navigation components
│   └── ui/                  # Reusable UI components
├── lib/
│   ├── types.ts             # TypeScript type definitions
│   ├── data-loader.ts       # CSV parsing logic
│   ├── data-aggregator.ts   # Data aggregation logic
│   └── utils.ts             # Utility functions
├── scripts/
│   └── aggregate-servers.sh  # Bash data collection script
├── data/
│   └── snapshots.csv        # Time-series data storage
└── .github/workflows/
    └── aggregate-data.yml   # Automated data collection workflow

数据模式

CSV格式(data/snapshots.csv)

timestamp,total,local,remote
2025-10-28T00:00:00Z,150,95,65
  • timestamp:ISO 8601时间戳
  • total:唯一服务器的总数
  • local:服务器数量 packages 财产
  • remote:服务器数量 remotes 财产

分类逻辑

根据MCP注册表API响应中的属性对服务器进行分类:

分类规则

  • 本地服务器有一个...,有... server.packages 属性(可通过npm/docker安装)
  • 远程服务器有一个...,有... server.remotes 属性(可通过HTTP/SSE端点访问)

重要提示

  1. 服务器可以属于这两个类别:一些服务器同时提供本地安装包和远程端点
  2. CSV格式: timestamp,total,local,remote
    • total:注册表中的唯一服务器总数
    • local:服务器数量 packages 财产
    • remote:服务器数量 remotes 财产
    • 注: local + remote 可能超过 total 由于服务器同时具有这两个属性

已验证的分布(截至2025年10月29日)

基于注册表中的1427台服务器:

  • 仅限本地:817台服务器(57.2%)
  • 仅远程:513台服务器(35.9%)
  • 两者:48台服务器(3.4%)
  • 两者都不:49台服务器(3.4%)-仅元数据条目

具有这两个属性的示例服务器:

  • ai.shawndurrani/mcp-merchant
  • co.pipeboard/meta-ads-mcp

发展

可用脚本

  • npm run dev -启动开发服务器
  • npm run build -为生产而建(静态出口)
  • npm run start -为生产构建提供服务(注意:静态导出不需要此功能)
  • npm run lint -运行ESLint

添加新功能

  1. 遵循中的现有组件结构 components/
  2. 从以下位置使用TypeScript类型 lib/types.ts
  3. 与顺风课程保持黑暗主题的一致性
  4. 确保响应式设计(在320px、768px、1024px、1920px下测试)

宪法原则

本项目遵循以下原则:

  1. 静态站点:无需运行时服务器,可部署到任何地方
  2. 响应式设计:支持所有设备尺寸(320px至4K)
  3. 最小依赖性:仅限基本套餐(总计<2MB)

许可证

[待添加许可证信息]

贡献

[添加投稿指南]