关于 Burnish Example Server
Burnish 是用于在浏览器中探索和执行 MCP 服务工具的本地界面,适合 MCP 服务开发者和测试人员。它根据工具模式生成表单,并将结果呈现为卡片、表格和图表,无需 LLM。
主要功能
- 01自动发现工具及其模式
- 02根据 JSON Schema 生成表单
- 03以卡片、表格和图表呈现结果
- 04本地连接并运行 MCP 服务
- 05支持 stdio 和 SSE 服务
- 06浏览器中交互执行工具
适用场景
- 01测试 MCP 服务的工具调用
- 02检查工具输入模式
- 03以可视化方式查看工具输出
- 04向用户展示 MCP 服务能力
MCP 相关
Burnish 连接配置的 MCP 服务,读取其工具列表和模式,并在浏览器中提供交互表单与结果展示。支持 stdio 或 SSE MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
34收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | enum | 否 | 按状态筛选planning | active | on-hold | completed |
详细介绍
Burnish
MCP 服务的 Swagger UI。
在浏览器中探索任意 MCP 服务。无需大模型、API 密钥或配置。
快速开始
npx burnish -- npx -y @burnishdev/example-server
就这么简单。Burnish 会启动示例 MCP 服务,读取其工具列表,打开浏览器,并将每个工具渲染为交互式表单。示例服务附带十多个工具——创建缺陷报告、列出团队成员、搜索记录等。你可以逐个点击、填写表单,并查看渲染为卡片、表格和图表的结果,无需编写任何 MCP 代码。
想用其他服务试试吗?将 burnish 指向任意 stdio 或 SSE MCP 服务——参见下文的可以指向哪些服务。
试用托管演示:burnish-demo.fly.dev
为什么选择 Burnish?
- 无需大模型。 不需要 OpenAI 密钥或 Anthropic 密钥,也没有推理成本。永远如此。探索模式完全确定——输入架构,生成表单并渲染结果。
- 无需配置。 将
npx burnish指向 MCP 服务命令即可运行。不需要 JSON 文件、账户或 Docker。 - 数据不会离开你的设备。 CLI 在本地运行,只与指定的 MCP 服务通信。默认不使用分析像素或遥测。
与其他方案相比
| Burnish | MCP Inspector | Composio / Rube | Smithery | n8n | |
|---|---|---|---|---|---|
| 无需大模型即可运行 | ✅ | ✅ | ❌ | ➖ | ❌ |
| 丰富的可视化 | ✅ 卡片、表格、图表 | ❌ 原始 JSON | ➖ 有限 | ➖ 仅注册表 | ➖ 节点输出 |
| 支持任意 MCP 服务 | ✅ | ✅ | ➖ 500 个预封装服务 | ➖ 仅浏览 | ➖ 自定义节点 |
| 自动生成表单 | ✅ 根据架构生成 | ❌ 手动编写 JSON | ➖ 仅预构建表单 | ❌ | ➖ 节点配置 UI |
| 本地 / 私有运行 | ✅ 完全支持 | ✅ | ❌ 云端 | ❌ 云端 | ➖ 自托管(较重) |
| 无需设置 | ✅ 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 服务所有者
让用户无需克隆任何内容即可探索你的服务。将以下内容添加到 README 中:
[](https://github.com/danfking/burnish)
```bash
npx burnish -- npx @your-org/your-mcp-server
```
想让工具结果以卡片、表格和图表的形式呈现,而不是原始 JSON?请参阅输出格式指南。
链接
- 托管演示 — burnish-demo.fly.dev
- 讨论区 — github.com/danfking/burnish/discussions
- 问题反馈 — github.com/danfking/burnish/issues
- 注册目录 — Smithery、Glama、mcp.so(在 #383 中跟踪)
功能
连接、浏览、执行。一切均由服务端的工具架构驱动。
- 即时发现工具 — 列出每个工具及其描述和输入架构
- 自动生成表单 — 输入 JSON Schema,输出交互式表单
- 丰富的结果呈现 — 响应以卡片、表格、图表和统计条的形式呈现,而非原始 JSON
- 完全私密 — 在本地运行,不进行外部调用,默认不收集遥测数据
- 零配置 — 运行
npx burnish即可启动 - 下钻导航 — 可折叠区块和会话持久化
- 与框架无关 — 使用标准 Web 组件,不受 React/Vue/Angular 限制
- 支持主题 — 使用
--burnish-*CSS 自定义属性 - 无需构建 — 从 CDN 以 ES 模块形式导入组件
组件参考
10 个由 JSON 属性驱动的 Lit 3 Web 组件。以下每个示例都可在在线演示中使用 — 点击“Try it”即可直接打开工具。
| 组件 | 预览 | 主要属性 | 用途 | 在线示例 |
|---|---|---|---|---|
<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 (line/bar/doughnut), config (JSON) | Chart.js 可视化图表 | 试用 |
<burnish-section> | ![]() | label, count, status, collapsed | 可折叠的分组容器 | 试用 |
<burnish-metric> | ![]() | label, value, unit, trend (up/down/flat) | 单项 KPI 展示 | 试用 |
<burnish-message> | ![]() | role (user/assistant), 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 });
Schema 导出
npx burnish export -- npx @your-org/your-server > schema.json
在自己的项目中使用
CDN(无需构建步骤)
<script type="module"
src="https://esm.sh/@burnishdev/[email protected]"></script>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@burnishdev/[email protected]/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 中进行配置,或向 CLI 传入 --config:
{
"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 Schema 生成表单,并将结果直接映射到组件 — 整个流程不涉及大模型。一切都在本地运行。
即将推出:Navigator
Navigator 是计划中的、由大模型驱动的自然语言层,构建于 Explorer 模式之上——提出问题,Burnish 就会从你已连接的服务中选出合适的工具,并使用你现在看到的相同组件呈现答案。Explorer 模式(你现在使用的模式)将继续保持免费、本地运行且不使用大模型。
隐私与遥测
Burnish 会收集需主动选择加入的匿名遥测数据,以衡量实际使用情况(参见 issue #382)。默认关闭。首次以交互方式运行 CLI 时,你会看到一个询问是否启用的提示——按 Enter 或输入除 y 以外的任何内容都会保持关闭。
仅在你选择加入时发送的内容:
v— burnish CLI 版本os— 操作系统系列:darwin、linux、win32或othernode— Node.js 主版本bucket— 粗略的调用次数区间:1、2-5、6-20或21+id— 首次选择加入时生成的一次性随机安装 ID(UUID)schema_version— 负载架构版本(当前为"1")
**绝不会发送的内容:**服务 URL、工具名称、架构、参数、文件路径、主机名、用户名、除 TCP 连接可见信息之外的 IP 地址,或 MCP 服务中的任何内容。我们不会按工具或架构进行跟踪。
随时选择退出的方法:
- 设置环境变量
BURNISH_TELEMETRY=0(也接受false、off、no)。此设置会覆盖任何已存储的选择。 - 或删除/编辑存储选择的文件:
- macOS / Linux:
~/.config/burnish/telemetry.json(遵循$XDG_CONFIG_HOME) - Windows:
%APPDATA%\burnish\telemetry.json
- macOS / Linux:
遥测只会发送一次 HTTPS POST 到 https://burnish-demo.fly.dev/telemetry/v1/ping,并设置较短的超时时间。如果无法访问该端点,CLI 的行为不受影响——不会重试或排队。在非交互式环境和 CI 环境中,如果没有存储任何选择,则会完全跳过遥测。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。









