@brander/mcp-tools 0.2.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/README.md +126 -0
- package/dist/app/index.html +8406 -0
- package/dist/server/brand/brand-loader.d.ts +26 -0
- package/dist/server/brand/brand-loader.d.ts.map +1 -0
- package/dist/server/brand/brand-loader.js +89 -0
- package/dist/server/brand/brand-types.d.ts +93 -0
- package/dist/server/brand/brand-types.d.ts.map +1 -0
- package/dist/server/brand/brand-types.js +32 -0
- package/dist/server/config/server-config.d.ts +16 -0
- package/dist/server/config/server-config.d.ts.map +1 -0
- package/dist/server/config/server-config.js +71 -0
- package/dist/server/config/types.d.ts +21 -0
- package/dist/server/config/types.d.ts.map +1 -0
- package/dist/server/config/types.js +4 -0
- package/dist/server/elements/click-behaviors.d.ts +13 -0
- package/dist/server/elements/click-behaviors.d.ts.map +1 -0
- package/dist/server/elements/click-behaviors.js +71 -0
- package/dist/server/elements/element-functions.d.ts +24 -0
- package/dist/server/elements/element-functions.d.ts.map +1 -0
- package/dist/server/elements/element-functions.js +167 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +30 -0
- package/dist/server/lib-entry.d.ts +16 -0
- package/dist/server/lib-entry.d.ts.map +1 -0
- package/dist/server/lib-entry.js +14 -0
- package/dist/server/register.d.ts +35 -0
- package/dist/server/register.d.ts.map +1 -0
- package/dist/server/register.js +49 -0
- package/dist/server/resource/html-loader.d.ts +9 -0
- package/dist/server/resource/html-loader.d.ts.map +1 -0
- package/dist/server/resource/html-loader.js +20 -0
- package/dist/server/resource/resource-registry.d.ts +15 -0
- package/dist/server/resource/resource-registry.d.ts.map +1 -0
- package/dist/server/resource/resource-registry.js +45 -0
- package/dist/server/server.d.ts +13 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +36 -0
- package/dist/server/tools/element-definitions.d.ts +15 -0
- package/dist/server/tools/element-definitions.d.ts.map +1 -0
- package/dist/server/tools/element-definitions.js +51 -0
- package/dist/server/tools/generate-screen-schema.d.ts +262 -0
- package/dist/server/tools/generate-screen-schema.d.ts.map +1 -0
- package/dist/server/tools/generate-screen-schema.js +227 -0
- package/dist/server/tools/tool-handler.d.ts +11 -0
- package/dist/server/tools/tool-handler.d.ts.map +1 -0
- package/dist/server/tools/tool-handler.js +83 -0
- package/dist/server/tools/tool-registry.d.ts +15 -0
- package/dist/server/tools/tool-registry.d.ts.map +1 -0
- package/dist/server/tools/tool-registry.js +30 -0
- package/dist/server/types/element-types.d.ts +37 -0
- package/dist/server/types/element-types.d.ts.map +1 -0
- package/dist/server/types/element-types.js +22 -0
- package/dist/server/types/mcp-types.d.ts +52 -0
- package/dist/server/types/mcp-types.d.ts.map +1 -0
- package/dist/server/types/mcp-types.js +4 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# @brander/mcp-tools
|
|
2
|
+
|
|
3
|
+
Add branded, interactive UI to any MCP server in one line.
|
|
4
|
+
|
|
5
|
+
`@brander/mcp-tools` registers a `generate_screen` tool on your MCP server that renders 14 element types (charts, tables, grids, forms, etc.) with your brand's colors, fonts, and styling — directly inside Claude Desktop.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @brander/mcp-tools
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
15
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
16
|
+
import { registerBranderTools } from "@brander/mcp-tools";
|
|
17
|
+
|
|
18
|
+
const server = new McpServer({ name: "my-app", version: "1.0.0" });
|
|
19
|
+
|
|
20
|
+
// Register your own business tools...
|
|
21
|
+
// server.registerTool("search_products", { ... }, handler);
|
|
22
|
+
|
|
23
|
+
// One line — adds branded UI rendering
|
|
24
|
+
await registerBranderTools(server, {
|
|
25
|
+
projectId: process.env.BRANDER_PROJECT_ID!,
|
|
26
|
+
betaKey: process.env.BRANDER_BETA_KEY!,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
await server.connect(new StdioServerTransport());
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## What It Does
|
|
33
|
+
|
|
34
|
+
When you call `registerBranderTools(server, config)`, it adds:
|
|
35
|
+
|
|
36
|
+
1. **`generate_screen` tool** — Claude uses this to render branded UI instead of writing raw text. Accepts an array of elements with typed props.
|
|
37
|
+
2. **MCP App resource** — A self-contained HTML renderer (React + MUI) that Claude Desktop loads to display the elements.
|
|
38
|
+
|
|
39
|
+
Your brand settings (colors, fonts, layout, dark mode) are loaded from the BranderUX API at startup and applied to every rendered screen.
|
|
40
|
+
|
|
41
|
+
## 14 Element Types
|
|
42
|
+
|
|
43
|
+
| Element | Description |
|
|
44
|
+
|---|---|
|
|
45
|
+
| `header` | Page title with subtitle |
|
|
46
|
+
| `chat-bubble` | Text/markdown response |
|
|
47
|
+
| `stats-grid` | KPI cards with trends |
|
|
48
|
+
| `data-table` | Sortable, filterable table |
|
|
49
|
+
| `line-chart` | Time series chart |
|
|
50
|
+
| `pie-chart` | Proportional data |
|
|
51
|
+
| `bar-chart` | Category comparison |
|
|
52
|
+
| `item-grid` | Product/item cards |
|
|
53
|
+
| `item-card` | Single item detail card |
|
|
54
|
+
| `image` | Image display |
|
|
55
|
+
| `details-data` | Key-value detail sections |
|
|
56
|
+
| `form` | Dynamic input form |
|
|
57
|
+
| `button` | Action/link button |
|
|
58
|
+
| `alert` | Notification banner |
|
|
59
|
+
|
|
60
|
+
## Configuration
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
interface BranderToolsConfig {
|
|
64
|
+
/** BranderUX project ID */
|
|
65
|
+
projectId: string;
|
|
66
|
+
|
|
67
|
+
/** Beta design partner key (bux_dp_xxx) */
|
|
68
|
+
betaKey: string;
|
|
69
|
+
|
|
70
|
+
/** API base URL (defaults to https://app.branderux.com) */
|
|
71
|
+
apiBaseUrl?: string;
|
|
72
|
+
|
|
73
|
+
/** Path to local brandSettings.json for development */
|
|
74
|
+
brandSettingsPath?: string;
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Claude Desktop Setup
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"mcpServers": {
|
|
83
|
+
"my-app": {
|
|
84
|
+
"command": "node",
|
|
85
|
+
"args": ["/path/to/your/dist/index.js"],
|
|
86
|
+
"env": {
|
|
87
|
+
"BRANDER_PROJECT_ID": "your_project_id",
|
|
88
|
+
"BRANDER_BETA_KEY": "bux_dp_your_key"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## How It Works
|
|
96
|
+
|
|
97
|
+
1. At startup, `registerBranderTools` loads your project's brand settings from the BranderUX API
|
|
98
|
+
2. It registers the `generate_screen` tool with Zod schemas for all 14 element types
|
|
99
|
+
3. It registers an MCP App resource — a single-file HTML bundle containing all React components
|
|
100
|
+
4. When Claude calls `generate_screen`, it returns structured data + a reference to the HTML resource
|
|
101
|
+
5. Claude Desktop loads the HTML resource and renders branded UI with your data
|
|
102
|
+
|
|
103
|
+
## Interactive Elements
|
|
104
|
+
|
|
105
|
+
Elements support click interactions via `clickQuery`. When a user clicks a table row, chart segment, or card, the query is sent back to Claude to continue the conversation:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// Claude generates this tool call:
|
|
109
|
+
generate_screen({
|
|
110
|
+
elements: [{
|
|
111
|
+
elementType: "item-grid",
|
|
112
|
+
props: { items: [...] },
|
|
113
|
+
clickQuery: "Show details for [title] including specs and reviews"
|
|
114
|
+
}]
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Placeholders like `[title]`, `[id]`, `[name]` are filled with the clicked element's data.
|
|
119
|
+
|
|
120
|
+
## Example
|
|
121
|
+
|
|
122
|
+
See [BranderUX/mcp-demo](https://github.com/BranderUX/mcp-demo) for a full reference implementation with a fake e-commerce dataset (TechStore Pro).
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
MIT
|