CODEX KNOWLEDGE

MCP可视化面板方案

2026/04/24 2 min read CODEX KNOWLEDGE MCP可视化面板方案

好,这一步我直接给你一套能落地的 MCP 可视化面板方案(不是概念图,是能跑的),而且完全贴合你现在 34 个 MCP + Codex 这套环境。


一、你最终要得到的东西(先看效果)

你会有一个页面,大概这样:

┌─────────────────────────────── MCP Dashboard ───────────────────────────────┐
│ 总数: 34   在线: 34   tools-only: 24   resources型: 10                        │
├──────────────────────────────────────────────────────────────────────────────┤
│ 名称                  类型        tools  resources  状态    延迟   最后调用  │
│──────────────────────────────────────────────────────────────────────────────│
│ playwright-browser    browser     12     2          🟢 OK   120ms   3s ago   │
│ repo-inspector        code        8      0          🟢 OK   80ms    1m ago   │
│ context-store         storage     3      2          🟢 OK   50ms    10s ago  │
│ prompt-compressor     util        2      0          🟢 OK   30ms    -        │
│ ...                                                                  ...    │
└──────────────────────────────────────────────────────────────────────────────┘

还能点进去:

playwright-browser
├ tools:
│   - browser.open
│   - browser.click
│   - browser.screenshot
├ resources:
│   - latest-session
├ 最近调用日志
├ 平均耗时

二、架构(完全符合你之前的模块规范)

apps/
  mcp-dashboard/
    backend/
    frontend/
 
modules/
  mcp-scanner/        ← 扫描 config + 握手
  mcp-prober/         ← 测 tools/resources/延迟
  mcp-registry/       ← 统一数据结构
  mcp-telemetry/      ← 调用日志收集
 
.runtime/
  mcp-dashboard/
    cache.json
    history.log

三、核心思路(很关键)

你不能只用:

list_mcp_resources

必须做三件事:


① 读 config(拿全量)

const servers = parseToml("C:\\Users\\ASUS-KL\\.codex\\config.toml")

得到:

["agent-runtime-mcp", "repo-inspector", ... 34]

② 主动探测(关键)

对每个 MCP 做:

await probe({
  type: "initialize"
})

再测:

tools/list
resources/list

③ 构建统一模型

type MCPServer = {
  name: string
  status: "OK" | "FAIL"
  tools: number
  resources: number
  latency: number
  lastUsed?: number
}

四、后端实现(Node.js 最小可用)

1️⃣ 扫描器

import fs from "fs";
import toml from "@iarna/toml";
 
export function loadMCPServers() {
  const raw = fs.readFileSync("C:\\Users\\ASUS-KL\\.codex\\config.toml", "utf-8");
  const parsed = toml.parse(raw);
 
  return Object.keys(parsed.mcp_servers || {});
}

2️⃣ 探测器(核心)

export async function probeServer(name) {
  const start = Date.now();
 
  try {
    const tools = await callMCP(name, "tools/list");
    const resources = await callMCP(name, "resources/list");
 
    return {
      name,
      status: "OK",
      tools: tools.length,
      resources: resources.length,
      latency: Date.now() - start
    };
  } catch (e) {
    return {
      name,
      status: "FAIL",
      tools: 0,
      resources: 0,
      latency: -1
    };
  }
}

3️⃣ API

app.get("/mcp/list", async (req, res) => {
  const servers = loadMCPServers();
 
  const result = await Promise.all(
    servers.map(s => probeServer(s))
  );
 
  res.json(result);
});

五、前端(简单但够用)

React + Tailwind

export default function MCPTable({ data }) {
  return (
    <table className="w-full text-sm">
      <thead>
        <tr>
          <th>名称</th>
          <th>tools</th>
          <th>resources</th>
          <th>状态</th>
          <th>延迟</th>
        </tr>
      </thead>
      <tbody>
        {data.map(mcp => (
          <tr key={mcp.name}>
            <td>{mcp.name}</td>
            <td>{mcp.tools}</td>
            <td>{mcp.resources}</td>
            <td>{mcp.status === "OK" ? "🟢" : "🔴"}</td>
            <td>{mcp.latency}ms</td>
          </tr>
        ))}
      </tbody>
    </table>
  );
}

六、进阶(你这种情况必须加)

1️⃣ 实时调用监控

在 MCP 调用入口加:

log({
  mcp: "repo-inspector",
  tool: "read_file",
  duration: 120,
  timestamp: Date.now()
});

2️⃣ 热力图(找废 MCP)

过去24小时调用次数

直接发现:

哪些 MCP 根本没用

3️⃣ 自动分类

browser类
code类
infra类
utility类

七、部署方式(推荐你这样)

你现在架构建议:

本机:
  Codex + MCP
 
云端:
  MCP Dashboard

或者:

全部本地跑(先验证)

八、一步到位版本(我建议你这样搞)

我给你一个更狠的版本👇

👉 MCP Control Center

不仅是可视化,还能:

✔ 启停 MCP
✔ 动态加载 config
✔ 限制权限
✔ 调试工具调用
✔ 查看每个 MCP 的输入输出
✔ replay 调用

九、你下一步该做什么(别乱搞)

直接按这个顺序:

1. 做 backend scanner + probe(最关键)
2. 打一个 /mcp/list API
3. 用最简单前端表格展示
4. 确认 34 个全部可见
5. 再做调用日志

十、我给你一句核心建议(很重要)

你现在的问题不是“没有工具”,而是:

你没有“观察系统”的能力

MCP 一多:

没有可视化 = 直接失控

如果你要继续(建议你下一步)

我可以直接帮你升级到👇

👉 「AI 控制台(带 MCP + Agent + 任务调度可视化)」

类似:

像 Kubernetes Dashboard 一样管理 AI

你只要说:

👉 “做 AI 控制台”

我直接给你完整架构(比 MCP 面板再高一层)