MCP服务器探索工具

一个无需LLM或API密钥的浏览器内MCP服务器交互工具,支持自动生成表单和丰富的结果可视化。

  • by danfking
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 danfking/burnish

使用说明

Burnish

Swagger UI for MCP servers.

Explore any MCP server in your browser. No LLM, no API key, no config.


快速入门

npx burnish -- npx -y @burnishdev/example-server

就是这样。Burnish生成了示例MCP服务器,读取其工具列表,打开浏览器,并将每个工具呈现为交互式表单。示例服务器附带了十几个工具——创建错误报告、列出团队成员、搜索记录——这样你就可以点击、填写表单,并查看以卡片、表格和图表呈现的结果,而无需编写一行自己的MCP代码。

想在另一台服务器上尝试一下吗?点 burnish 在任何stdio或SSE MCP服务器上--请参阅 你能指出什么 在......下面

尝试托管演示: blash-demo.fly.dev

为什么是Burnish?

  • 零法学硕士。 没有OpenAI密钥,没有Anthropic密钥,没有推理成本。永远。资源管理器模式是100%确定性的——模式输入、形式输出、结果呈现。
  • 零配置。 点 npx burnish 在MCP服务器命令下,它运行。没有JSON文件,没有帐户,没有Docker。
  • 零数据离开您的机器。 CLI在本地运行,仅与您指向的MCP服务器通信。默认情况下,没有分析像素,也没有遥测。

与替代方案相比

烧伤 MCP检查员 复合材料/橡胶 史密斯利 n8n
没有LLM的作品 ✅ ✅ ❌ ➖ ❌
丰富的可视化 ✅ 卡片、表格、图表 ❌ 原始JSON ➖ 有限 ➖ 仅限注册表 ➖ 节点输出
任何MCP服务器 ✅ ✅ ➖ 500预包装 ➖ 仅浏览 ➖ 自定义节点
自动生成的表单 ✅ 来自架构 ❌ 手动JSON ➖ 仅预装 ❌ ➖ 节点配置界面
本地/私人 ✅ 完全地✅ ❌ 云 ❌ 云 ➖ 自主机(重型)
零设置 ✅ npx burnish ✅ npx ❌ 需要帐户 ➖ 仅浏览 ❌ 需要Docker
可组合 ✅ 任何服务器组合 ❌ 单服务器 ❌ 锁定生态系统 ➖ ➖ 工作流生成器

✅ 全力支持·➖ 部分/有限·❌ 不支持

你能指出什么

# The Burnish example server — richest default demo
npx burnish -- npx -y @burnishdev/example-server

# Any published stdio MCP server
npx burnish -- npx -y @modelcontextprotocol/server-filesystem /tmp

# GitHub (needs a PAT)
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_... \
  npx burnish -- npx -y @modelcontextprotocol/server-github

# An SSE / HTTP MCP server
npx burnish --sse https://your-mcp-server.example.com/sse

# A multi-server config file
npx burnish --config ./mcp-servers.json

所有配置的服务器在启动时连接。他们的工具可以立即使用——可以从浏览器中发现、记录和执行。

适用于MCP服务器所有者

让您的用户在不克隆任何内容的情况下浏览您的服务器。请将此放入您的自述文件中:

[![Explore with Burnish](https://img.shields.io/badge/Explore-with%20Burnish-8B3A3A)](https://github.com/danfking/burnish)

```bash
npx burnish -- npx @your-org/your-mcp-server
```

希望您的工具结果呈现为卡片、表格和图表,而不是原始JSON?请参阅 输出格式指南.

链接

特性

连接。浏览。执行。一切都是由服务器的工具模式驱动的。

  • 即时工具发现 --列出的每个工具及其描述和输入模式
  • 自动生成的表单 --JSON模式输入,交互式表单输出
  • 丰富的结果 --响应呈现为卡片、表格、图表、统计栏,而不是原始JSON
  • 完全私密 --在本地运行,没有外部调用,默认情况下没有遥测
  • 零配置 — npx burnish 而你正在奔跑
  • 深入导航 --可折叠部分和会话持久性
  • 框架无关 --标准web组件,无React/Vue/Angular锁定
  • 可主题化的 — --burnish-* CSS自定义属性
  • 无构建步骤 --将组件作为ES模块从CDN导入

组件参考

10升3个web组件,每个组件由JSON属性驱动。下面的每个例子都是现场直播的 托管演示 --点击“试试”直接打开工具。

组件 预览 关键属性 目的 实例
<burnish-card> title, status, body, meta (JSON), item-id 带有向下钻取功能的单个项目 试试看
<burnish-stat-bar> items (JSON: [{label, value, color?}]) 汇总指标/过滤药丸 试试看
<burnish-table> title, columns (JSON), rows (JSON), status-field 带有状态着色的表格数据 试试看
<burnish-chart> type (线/条/甜甜圈), config (JSON) Chart.js可视化 试试看
<burnish-section> label, count, status, collapsed 可折叠分组容器 试试看
<burnish-metric> label, value, unit, trend (上/下/平) 单个KPI显示 试试看
<burnish-message> role (用户/助理), content, streaming 聊天泡泡 试试看
<burnish-form> title, tool-id, fields (JSON) 用户输入/工具执行 试试看
<burnish-actions> actions (JSON: [{label, action, prompt, icon?}]) 上下文下一步按钮 试试看
<burnish-pipeline> steps (JSON: [{server, tool, status}]) 实时工具链可视化 试试看

状态值: success, warning, error, muted, info --通过CSS自定义属性映射到语义颜色。

动作类型: read (自动调用,安全)和 write (显示表单,需要用户确认)。

SDK集成

中间件

只需一行即可将Burnish Explorer添加到MCP服务器:

import { withBurnishUI } from "burnish/middleware";
await withBurnishUI(server, { port: 3001 });

架构导出

npx burnish export -- npx @your-org/your-server > schema.json

在您自己的项目中使用

CDN(无构建步骤)

<script type="module"
  src="https://esm.sh/@burnishdev/components@0.4.1"></script>
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@burnishdev/components@0.4.1/src/tokens.css" />

<burnish-card
  title="API Gateway"
  status="success"
  body="All systems operational"
  meta='[{"label":"Uptime","value":"99.9%"},{"label":"Latency","value":"42ms"}]'
  item-id="api-gw-1">
</burnish-card>

npm

npm install @burnishdev/components
import '@burnishdev/components';

// Components auto-register with burnish-* prefix.
// Custom prefix:
import { BurnishCard } from '@burnishdev/components';
customElements.define('my-card', class extends BurnishCard {});

渲染器

npm install @burnishdev/renderer
import { findStreamElements, appendStreamElement } from '@burnishdev/renderer';

const elements = findStreamElements(chunk);
for (const el of elements) {
  appendStreamElement(container, stack, el, safeAttrs, sanitize);
}

配置

MCP服务器

在中配置 apps/demo/mcp-servers.json 从源头运行时,或通过 --config 到CLI:

{
  "mcpServers": {
    "example": {
      "command": "npx",
      "args": ["-y", "@burnishdev/example-server"]
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    }
  }
}

所有配置的服务器在启动时连接。他们的工具立即可用。

发展

git clone https://github.com/danfking/burnish.git
cd burnish
pnpm install          # Install all dependencies
pnpm build            # Build all packages
pnpm dev              # Start the demo
pnpm test             # Run Playwright tests
pnpm clean            # Clean all build artifacts
burnish/
├── packages/
│   ├── components/       @burnishdev/components — 10 Lit web components
│   ├── renderer/         @burnishdev/renderer — streaming parser + sanitizer
│   ├── app/              @burnishdev/app — drill-down logic + stream orchestration
│   ├── server/           @burnishdev/server — MCP hub + guards + intent resolver
│   ├── example-server/   @burnishdev/example-server — showcase MCP server (34 tools)
│   └── cli/              burnish CLI — npx burnish launcher + middleware
├── apps/
│   └── demo/
│       ├── server/       Hono API
│       └── public/       SPA shell (ES modules, no framework)
└── package.json          pnpm workspace root

先决条件

  • Node.js 20+
  • pnpm 9+

运作原理

    ┌──────────────────────────────────┐
    │        MCP Servers                │
    │  (filesystem, GitHub, DB, ...)    │
    └──────────────┬───────────────────┘
                   │ tool calls / results
                   ▼
    ┌──────────────────────────┐
    │  Schema-Driven UI        │
    │                          │
    │  • List tools             │
    │  • Generate forms         │
    │  • Map results → comps    │
    └──────────┬───────────────┘
               │
               ▼
    ┌──────────────────────────┐
    │  Streaming Renderer      │
    │                          │
    │  • Parse tags on arrival  │
    │  • Sanitize (DOMPurify)  │
    │  • Append to DOM         │
    └──────────┬───────────────┘
               │
               ▼
    ┌──────────────────────────┐
    │  Web Components (Lit 3)  │
    │                          │
    │  • Shadow DOM isolation  │
    │  • JSON attribute parsing│
    │  • Event-driven drill-   │
    │    down navigation       │
    └──────────────────────────┘

Burnish读取MCP服务器的工具列表,从JSON模式生成表单,并将结果直接映射到组件——循环中没有LLM。一切都在本地运行。

即将推出:Navigator

Navigator是Explorer模式下计划中的LLM驱动的自然语言层——提出一个问题,Burnish会在您连接的服务器上选择合适的工具,用您今天看到的相同组件呈现答案。资源管理器模式(您现在使用的模式)保持免费、本地和零LLM。

加入候补名单→

隐私和遥测

Burnish收藏 选择加入,匿名遥测来衡量实际采用率(见 问题#382).它是 默认情况下关闭。在CLI的第一次交互式运行中,您将看到一个提示,询问是否启用它——按Enter键或其他任何键 y 保持它关闭。

我们发送的内容(仅当您选择加入时):

  • v --擦亮CLI版本
  • os --操作系统系列: darwin, linux, win32,或 other
  • node --Node.js主要版本
  • bucket --粗略调用计数桶: 1, 2-5, 6-20,或 21+
  • id --首次选择加入时生成的随机安装ID(UUID)
  • schema_version --有效载荷架构版本(当前 "1")

我们从不发送的内容: 服务器URL、工具名称、模式、参数、文件路径、主机名、用户名、IP地址,我们可以在TCP连接之外看到,或者来自MCP服务器的任何内容。没有每个工具或每个模式的跟踪。

如何随时退出:

  1. 设置环境变量 BURNISH_TELEMETRY=0 (也接受 false, off, no).这将覆盖任何存储的选项。
  2. 或删除/编辑存储的选择文件:
    • macOS/Linux: ~/.config/burnish/telemetry.json (荣誉 $XDG_CONFIG_HOME)
    • 窗户: %APPDATA%\burnish\telemetry.json

遥测是对 https://burnish-demo.fly.dev/telemetry/v1/ping 短暂的暂停。如果无法访问端点,CLI的行为相同——不会重试或排队。当没有存储选择时,在非交互式和CI环境中完全跳过遥测。

许可证

AGPL-3.0 --丹尼尔·金(@跳舞)