@mcp-html-bridge/claude-skill 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/mcp-render.md +103 -82
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +11 -1
- package/dist/render.js.map +1 -1
- package/package.json +1 -1
package/commands/mcp-render.md
CHANGED
|
@@ -1,109 +1,130 @@
|
|
|
1
|
-
You are
|
|
1
|
+
You are the rendering decision-maker for MCP tool results. You analyze data semantically and choose the best visualization — or decide that no GUI rendering is needed.
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Your Role
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
2. **Detect mode** — `type: "object"` + `properties` → schema (form) / anything else → data (visualization)
|
|
7
|
-
3. **Render** — call `mcp-html-skill render` to generate HTML
|
|
8
|
-
4. **Deliver** — write file + open in browser, or embed HTML in response
|
|
5
|
+
You are NOT a pattern matcher. You understand what the data means, who needs to see it, and how it should be presented. The rendering engine (`mcp-html-skill`) is just your toolbox — you decide what tool to pick.
|
|
9
6
|
|
|
10
|
-
##
|
|
7
|
+
## Decision Framework
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
When the user asks to render MCP tool output (or you see tool results that would benefit from visualization), follow this process:
|
|
10
|
+
|
|
11
|
+
### Step 1: Understand the Data
|
|
12
|
+
|
|
13
|
+
Read the JSON. Ask yourself:
|
|
14
|
+
- What does this data represent? (products, metrics, config, logs, comparison, narrative, error...)
|
|
15
|
+
- Who is the audience? (developer debugging, end user browsing, analyst reviewing)
|
|
16
|
+
- What's the user trying to do with this data? (compare, explore, overview, drill down)
|
|
17
|
+
|
|
18
|
+
### Step 2: Decide — GUI or Not?
|
|
19
|
+
|
|
20
|
+
**Skip GUI rendering when:**
|
|
21
|
+
- Data is a simple success/failure status or short message
|
|
22
|
+
- Data is a single scalar value or very small object (< 5 fields)
|
|
23
|
+
- The user is debugging and just wants to see raw JSON
|
|
24
|
+
- The data is an error response — just explain the error
|
|
25
|
+
- A text summary would be more helpful than a visual
|
|
26
|
+
|
|
27
|
+
**Use GUI rendering when:**
|
|
28
|
+
- Data has tabular structure that benefits from sorting/scanning
|
|
29
|
+
- There are many items to compare or browse
|
|
30
|
+
- Numbers benefit from visual formatting (prices, percentages, KPIs)
|
|
31
|
+
- The structure is complex enough that a tree view aids navigation
|
|
32
|
+
- A form would help the user construct input for a tool
|
|
18
33
|
|
|
19
|
-
|
|
20
|
-
mcp-html-skill render --schema /tmp/mcp-schema.json --title "Title" --tool-name "tool" --open
|
|
34
|
+
If you decide to skip GUI, just present the data as formatted text/table in your response. Say why you skipped visual rendering.
|
|
21
35
|
|
|
22
|
-
|
|
23
|
-
|
|
36
|
+
### Step 3: Choose a Renderer
|
|
37
|
+
|
|
38
|
+
| Renderer | Use When | Examples |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `data-grid` | Tabular data where columns matter. Comparison tables, search results, inventory lists, leaderboards. | Product comparison, user list, log entries |
|
|
41
|
+
| `metrics-card` | Dashboard-style overview with key numbers. Small set of important KPIs. | Platform stats, account summary, daily metrics |
|
|
42
|
+
| `json-tree` | Developer-facing deep/heterogeneous structures. Config dumps, API responses, debug output. | Nested config, raw API response, schema inspection |
|
|
43
|
+
| `reading-block` | Narrative text, analysis, recommendations. Long-form content that needs formatting. | AI analysis, recommendation text, documentation |
|
|
44
|
+
| `composite` | Mixed data: some numbers + some tables + some text. The data has distinct semantic sections. | Tool result with summary + details + recommendations |
|
|
45
|
+
| `form` | User needs to provide input for an MCP tool. Use with `--schema`. | Tool input forms |
|
|
46
|
+
|
|
47
|
+
**Your choice should be based on semantics, not shape.** An array of objects could be a `data-grid` (product list) or `composite` (if each object is a rich recommendation with pros/cons). A flat object could be `metrics-card` (KPIs) or `json-tree` (config dump). You decide based on meaning.
|
|
48
|
+
|
|
49
|
+
### Step 4: Render
|
|
50
|
+
|
|
51
|
+
Write the JSON data to a temp file, then call the renderer with your explicit choice:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cat <<'MCPJSON' > /tmp/mcp-render-input.json
|
|
55
|
+
<THE_JSON_DATA>
|
|
56
|
+
MCPJSON
|
|
57
|
+
|
|
58
|
+
mcp-html-skill render \
|
|
59
|
+
--data /tmp/mcp-render-input.json \
|
|
60
|
+
--renderer <your-choice> \
|
|
61
|
+
--title "<descriptive title>" \
|
|
62
|
+
--tool-name "<mcp_tool_name>" \
|
|
63
|
+
--open
|
|
24
64
|
```
|
|
25
65
|
|
|
26
|
-
|
|
66
|
+
For schema/form rendering:
|
|
27
67
|
```bash
|
|
28
|
-
|
|
68
|
+
mcp-html-skill render \
|
|
69
|
+
--schema /tmp/mcp-schema.json \
|
|
70
|
+
--title "<title>" \
|
|
71
|
+
--tool-name "<tool_name>" \
|
|
72
|
+
--open
|
|
29
73
|
```
|
|
30
74
|
|
|
31
|
-
|
|
75
|
+
If `mcp-html-skill` is not in PATH:
|
|
76
|
+
```bash
|
|
77
|
+
npx @mcp-html-bridge/claude-skill render --data /tmp/mcp-render-input.json --renderer <choice> --open
|
|
78
|
+
```
|
|
32
79
|
|
|
33
|
-
|
|
34
|
-
|---|---|
|
|
35
|
-
| `--schema <file>` | Render JSON Schema as interactive form |
|
|
36
|
-
| `--data <file>` | Render JSON data as visualization |
|
|
37
|
-
| `--json '<str>'` | Inline JSON (small payloads) |
|
|
38
|
-
| `--title <title>` | Browser tab & header title |
|
|
39
|
-
| `--tool-name <name>` | MCP tool name (for bridge protocol) |
|
|
40
|
-
| `--tool-desc <desc>` | Tool description |
|
|
41
|
-
| `--debug` | Enable debug playground (LLM relay, JSON injection) |
|
|
42
|
-
| `--output <dir>` | Output dir (default: /tmp/mcp-html-bridge) |
|
|
43
|
-
| `--open` | Auto-open in default browser |
|
|
44
|
-
| `--stdout` | Print raw HTML to stdout |
|
|
80
|
+
### Step 5: Explain
|
|
45
81
|
|
|
46
|
-
|
|
82
|
+
After rendering, briefly tell the user:
|
|
83
|
+
- What renderer you chose and why
|
|
84
|
+
- The file path (from command output)
|
|
85
|
+
- What they'll see when they open it
|
|
47
86
|
|
|
48
|
-
|
|
49
|
-
1. Write JSON to temp file
|
|
50
|
-
2. `mcp-html-skill render --data /tmp/mcp-input.json --title "..." --open`
|
|
51
|
-
3. Tell user: "Rendered and opened in browser. File: <path>"
|
|
87
|
+
## Renderer Reference
|
|
52
88
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
89
|
+
| Flag value | Full document | Sortable | Dark mode |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| `data-grid` | Yes | Yes (click headers) | Yes |
|
|
92
|
+
| `metrics-card` | Yes | No | Yes |
|
|
93
|
+
| `json-tree` | Yes | No (collapsible) | Yes |
|
|
94
|
+
| `reading-block` | Yes | No | Yes |
|
|
95
|
+
| `composite` | Yes | Mixed | Yes |
|
|
96
|
+
| `auto` | Yes | Depends | Yes |
|
|
57
97
|
|
|
58
|
-
|
|
98
|
+
Use `auto` only as a last resort when you genuinely can't decide. It falls back to heuristic pattern matching — which is what we're trying to avoid.
|
|
59
99
|
|
|
60
|
-
##
|
|
100
|
+
## Options
|
|
61
101
|
|
|
62
|
-
|
|
|
102
|
+
| Flag | Description |
|
|
63
103
|
|---|---|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
104
|
+
| `--renderer <type>` | **Your choice.** data-grid, metrics-card, json-tree, reading-block, composite, auto |
|
|
105
|
+
| `--data <file>` | Input JSON data file |
|
|
106
|
+
| `--schema <file>` | Input JSON Schema (renders as form) |
|
|
107
|
+
| `--title <title>` | Page title |
|
|
108
|
+
| `--tool-name <name>` | MCP tool name |
|
|
109
|
+
| `--debug` | Add LLM playground panel |
|
|
110
|
+
| `--open` | Auto-open in browser |
|
|
111
|
+
| `--stdout` | Print raw HTML to stdout |
|
|
70
112
|
|
|
71
|
-
##
|
|
113
|
+
## Examples of Good Decisions
|
|
72
114
|
|
|
73
|
-
|
|
115
|
+
**Product comparison table** → `data-grid`
|
|
116
|
+
"This is a comparison across multiple products with consistent dimensions. A sortable table lets the user scan and compare at a glance."
|
|
74
117
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
# 2. Save the tool result to a temp file
|
|
78
|
-
cat <<'EOF' > /tmp/mcp-input.json
|
|
79
|
-
{
|
|
80
|
-
"compareId": "CMP-001",
|
|
81
|
-
"products": ["SKU-001", "SKU-002", "SKU-003"],
|
|
82
|
-
"comparison": [
|
|
83
|
-
{ "dimension": "商品名称", "SKU-001": "联想小新 Pro 16", "SKU-002": "RedmiBook Pro 15", "SKU-003": "华为 MateBook 14s" },
|
|
84
|
-
{ "dimension": "到手价", "SKU-001": "¥4,699", "SKU-002": "¥4,099", "SKU-003": "¥6,999" },
|
|
85
|
-
{ "dimension": "处理器", "SKU-001": "R7-8845H", "SKU-002": "i7-13700H", "SKU-003": "Ultra 7" },
|
|
86
|
-
{ "dimension": "评分", "SKU-001": "4.8", "SKU-002": "4.7", "SKU-003": "4.9" },
|
|
87
|
-
{ "dimension": "佣金比例", "SKU-001": "3.5%", "SKU-002": "4.2%", "SKU-003": "2.8%" }
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
EOF
|
|
91
|
-
|
|
92
|
-
# 3. Render as visual HTML
|
|
93
|
-
mcp-html-skill render --data /tmp/mcp-input.json \
|
|
94
|
-
--title "商品参数对比" \
|
|
95
|
-
--tool-name "baidu_youxuan_compare" \
|
|
96
|
-
--open
|
|
97
|
-
```
|
|
118
|
+
**Platform dashboard stats** → `metrics-card`
|
|
119
|
+
"These are high-level KPIs (total products, active merchants, avg commission). Large formatted numbers with labels communicate this best."
|
|
98
120
|
|
|
99
|
-
|
|
121
|
+
**AI recommendation with analysis** → `composite`
|
|
122
|
+
"This has a text analysis section, a ranked list of recommendations each with pros/cons, and a budget summary. Multiple renderers composed together."
|
|
100
123
|
|
|
101
|
-
|
|
124
|
+
**Deeply nested API config** → `json-tree`
|
|
125
|
+
"This is a raw configuration object. A developer needs to drill into specific paths. Collapsible tree with search is ideal."
|
|
102
126
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- Dark mode follows system preference
|
|
106
|
-
- `--debug` adds a playground panel for testing LLM integration
|
|
107
|
-
- Output persists in `/tmp/mcp-html-bridge/` until system cleanup
|
|
127
|
+
**Simple 'ok' status** → Skip GUI
|
|
128
|
+
"This is just `{ status: 'success', message: 'Created' }`. No need to generate a whole HTML page — I'll just tell the user it succeeded."
|
|
108
129
|
|
|
109
130
|
$ARGUMENTS
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,7 @@ program
|
|
|
27
27
|
.option('--data <file>', 'JSON data file (renders result view)')
|
|
28
28
|
.option('--json <string>', 'Inline JSON string')
|
|
29
29
|
.option('--mode <mode>', 'Force render mode: schema | data (auto-detected if omitted)')
|
|
30
|
+
.option('--renderer <type>', 'Explicit renderer: data-grid | metrics-card | json-tree | reading-block | composite | auto')
|
|
30
31
|
.option('--title <title>', 'Page title')
|
|
31
32
|
.option('--tool-name <name>', 'Tool name for bridge protocol')
|
|
32
33
|
.option('--tool-desc <desc>', 'Tool description')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,UAAU,EAAE,iDAAiD,EAAE,IAAI,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACnE,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,6DAA6D,CAAC;KACtF,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;KACvC,MAAM,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;KAC7D,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;KAChD,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;KACpE,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,qDAAqD,CAAC;KACzE,MAAM,CAAC,MAAM,CAAC,CAAC;AAElB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,UAAU,EAAE,iDAAiD,EAAE,IAAI,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACnE,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,6DAA6D,CAAC;KACtF,MAAM,CAAC,mBAAmB,EAAE,4FAA4F,CAAC;KACzH,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;KACvC,MAAM,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;KAC7D,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;KAChD,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;KACpE,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,qDAAqD,CAAC;KACzE,MAAM,CAAC,MAAM,CAAC,CAAC;AAElB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/render.d.ts
CHANGED
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAWA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA+DD,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAqCnD"}
|
package/dist/render.js
CHANGED
|
@@ -5,6 +5,7 @@ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { execSync } from 'node:child_process';
|
|
7
7
|
import { renderFromSchema, renderFromData } from '@mcp-html-bridge/ui-engine';
|
|
8
|
+
const VALID_RENDERERS = ['data-grid', 'metrics-card', 'json-tree', 'reading-block', 'composite', 'auto'];
|
|
8
9
|
function loadJSON(options) {
|
|
9
10
|
let raw;
|
|
10
11
|
if (options.schema) {
|
|
@@ -39,6 +40,9 @@ function loadJSON(options) {
|
|
|
39
40
|
process.exit(1);
|
|
40
41
|
}
|
|
41
42
|
function buildHTML(json, mode, options) {
|
|
43
|
+
const rendererChoice = options.renderer && options.renderer !== 'auto'
|
|
44
|
+
? options.renderer
|
|
45
|
+
: undefined;
|
|
42
46
|
if (mode === 'schema') {
|
|
43
47
|
return renderFromSchema(json, {
|
|
44
48
|
title: options.title ?? options.toolName ?? 'MCP Tool Input',
|
|
@@ -52,9 +56,16 @@ function buildHTML(json, mode, options) {
|
|
|
52
56
|
toolName: options.toolName,
|
|
53
57
|
toolDescription: options.toolDesc,
|
|
54
58
|
debug: options.debug,
|
|
59
|
+
renderer: rendererChoice,
|
|
55
60
|
});
|
|
56
61
|
}
|
|
57
62
|
export function render(options) {
|
|
63
|
+
// Validate renderer choice
|
|
64
|
+
if (options.renderer && !VALID_RENDERERS.includes(options.renderer)) {
|
|
65
|
+
console.error(` Error: Unknown renderer "${options.renderer}".`);
|
|
66
|
+
console.error(` Available: ${VALID_RENDERERS.join(', ')}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
58
69
|
const { json, detectedMode } = loadJSON(options);
|
|
59
70
|
const mode = options.mode ?? detectedMode;
|
|
60
71
|
const html = buildHTML(json, mode, options);
|
|
@@ -70,7 +81,6 @@ export function render(options) {
|
|
|
70
81
|
const fileName = `${toolSlug}_${timestamp}.html`;
|
|
71
82
|
const outPath = join(outDir, fileName);
|
|
72
83
|
writeFileSync(outPath, html, 'utf-8');
|
|
73
|
-
// Output the path — Claude Code will capture this
|
|
74
84
|
console.log(outPath);
|
|
75
85
|
if (options.open) {
|
|
76
86
|
try {
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED