metabase-ai-assistant 4.0.0 → 4.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 +17 -14
- package/README_MCP.md +7 -1
- package/package.json +5 -5
- package/src/mcp/handlers/cards.js +352 -300
- package/src/mcp/handlers/collections.js +18 -14
- package/src/mcp/handlers/database.js +16 -0
- package/src/mcp/handlers/sql.js +76 -32
- package/src/mcp/handlers/users.js +26 -18
- package/src/mcp/server.js +13 -17
- package/src/mcp/tool-registry.js +3570 -3151
- package/src/metabase/metadata-client.js +42 -107
- package/src/utils/config.js +0 -10
- package/src/utils/structured-response.js +64 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
### **The Most Powerful MCP Server for Metabase**
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**134 Tools** • **MCP SDK v1.26.0** • **AI-Powered SQL** • **Structured Output** • **Enterprise Security**
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/metabase-ai-assistant)
|
|
10
10
|
[](https://www.npmjs.com/package/metabase-ai-assistant)
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
[](https://claude.ai)
|
|
16
16
|
[](https://cursor.sh)
|
|
17
17
|
[](https://nodejs.org/)
|
|
18
|
-
|
|
18
|
+
[](https://lobehub.com/mcp/onmartech-metabase-ai-assistant)
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
**Turn your AI assistant into a Metabase power user.**
|
|
@@ -33,7 +33,7 @@ Generate SQL from natural language, create dashboards, manage users, and automat
|
|
|
33
33
|
|
|
34
34
|
| Feature | **This Project** | Other MCP Servers |
|
|
35
35
|
|---------|:----------------:|:-----------------:|
|
|
36
|
-
| **Total Tools** | **
|
|
36
|
+
| **Total Tools** | **134** ✅ | 6-30 |
|
|
37
37
|
| **AI SQL Generation** | ✅ | ❌ |
|
|
38
38
|
| **AI SQL Optimization** | ✅ | ❌ |
|
|
39
39
|
| **Dashboard Templates** | ✅ | ❌ |
|
|
@@ -45,6 +45,8 @@ Generate SQL from natural language, create dashboards, manage users, and automat
|
|
|
45
45
|
| **Metadata Analytics** | ✅ | ❌ |
|
|
46
46
|
| **Parametric Questions** | ✅ | ❌ |
|
|
47
47
|
| **Environment Comparison** | ✅ | ❌ |
|
|
48
|
+
| **Structured Output (JSON)** | ✅ | ❌ |
|
|
49
|
+
| **Tool Annotations** | ✅ | ❌ |
|
|
48
50
|
|
|
49
51
|
---
|
|
50
52
|
|
|
@@ -109,7 +111,9 @@ AI: 🔒 Blocked - Read-only mode active
|
|
|
109
111
|
|
|
110
112
|
---
|
|
111
113
|
|
|
112
|
-
## 🔧 Complete Tool List (
|
|
114
|
+
## 🔧 Complete Tool List (134)
|
|
115
|
+
|
|
116
|
+
> 🆕 All tools include MCP annotations and `title`. 16 priority tools support `outputSchema` + `structuredContent` for typed JSON responses.
|
|
113
117
|
|
|
114
118
|
<details>
|
|
115
119
|
<summary><b>📊 Database Operations (25 tools)</b></summary>
|
|
@@ -299,18 +303,17 @@ npm run mcp
|
|
|
299
303
|
metabase-ai-assistant/
|
|
300
304
|
├── src/
|
|
301
305
|
│ ├── mcp/
|
|
302
|
-
│ │ ├── server.js
|
|
303
|
-
│ │
|
|
304
|
-
│ │
|
|
305
|
-
│ │
|
|
306
|
-
│ │ ├── questions.js # Question ops
|
|
307
|
-
│ │ └── ai.js # AI features
|
|
306
|
+
│ │ ├── server.js # MCP Server entry point
|
|
307
|
+
│ │ ├── tool-registry.js # 134 tool definitions + annotations + outputSchema
|
|
308
|
+
│ │ ├── tool-router.js # Dynamic routing with read-only gate
|
|
309
|
+
│ │ └── handlers/ # 15 modular handler files
|
|
308
310
|
│ ├── utils/
|
|
309
|
-
│ │ ├──
|
|
310
|
-
│ │ ├──
|
|
311
|
-
│ │
|
|
311
|
+
│ │ ├── structured-response.js # Structured output (MCP 2025-06-18)
|
|
312
|
+
│ │ ├── cache.js # TTL-based caching
|
|
313
|
+
│ │ ├── config.js # Zod validation
|
|
314
|
+
│ │ └── response-optimizer.js # Compact response formatting
|
|
312
315
|
│ └── metabase/
|
|
313
|
-
│ └── client.js
|
|
316
|
+
│ └── client.js # Metabase API client
|
|
314
317
|
```
|
|
315
318
|
|
|
316
319
|
---
|
package/README_MCP.md
CHANGED
|
@@ -45,7 +45,9 @@ After updating the configuration file, restart your MCP client to load the new s
|
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
-
## Available Tools (
|
|
48
|
+
## Available Tools (134 Total)
|
|
49
|
+
|
|
50
|
+
> 🆕 **MCP SDK v1.26.0** — All tools include annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`) and human-readable `title`. 16 priority tools support `outputSchema` + `structuredContent` for typed JSON responses.
|
|
49
51
|
|
|
50
52
|
### Database Operations
|
|
51
53
|
- **db_list**: List all databases in Metabase
|
|
@@ -180,6 +182,10 @@ After updating the configuration file, restart your MCP client to load the new s
|
|
|
180
182
|
## Features Summary
|
|
181
183
|
|
|
182
184
|
### Currently Available
|
|
185
|
+
- **MCP SDK v1.26.0** (Spec 2025-11-25 compliant)
|
|
186
|
+
- **Structured Output** (`outputSchema` + `structuredContent` for 16 tools)
|
|
187
|
+
- **Tool Annotations** (`readOnlyHint`, `destructiveHint`, `idempotentHint`)
|
|
188
|
+
- **Dynamic Tool List** (`listChanged` capability)
|
|
183
189
|
- **Async Query Management** (for long-running queries)
|
|
184
190
|
- **Smart Response Optimization** (no truncation for DDL/definitions)
|
|
185
191
|
- **Table Profiling** (dim/ref table detection)
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metabase-ai-assistant",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"mcpName": "io.github.enessari/metabase-ai-assistant",
|
|
5
|
-
"description": "The most powerful MCP Server for Metabase -
|
|
5
|
+
"description": "The most powerful MCP Server for Metabase - 134 tools with structured output, AI-powered SQL generation, dashboard automation, user management & enterprise BI. MCP SDK v1.26.0 compliant. Works with Claude, Cursor, and any MCP-compatible AI.",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"scripts": {
|
|
@@ -76,11 +76,12 @@
|
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@anthropic-ai/sdk": "^0.17.0",
|
|
79
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
79
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
80
80
|
"axios": "^1.6.5",
|
|
81
81
|
"chalk": "^5.3.0",
|
|
82
82
|
"dotenv": "^16.3.1",
|
|
83
83
|
"express": "^4.18.2",
|
|
84
|
+
"he": "^1.2.0",
|
|
84
85
|
"inquirer": "^12.9.3",
|
|
85
86
|
"jsonwebtoken": "^9.0.3",
|
|
86
87
|
"mysql2": "^3.14.3",
|
|
@@ -88,8 +89,7 @@
|
|
|
88
89
|
"ora": "^8.0.1",
|
|
89
90
|
"pg": "^8.16.3",
|
|
90
91
|
"winston": "^3.11.0",
|
|
91
|
-
"zod": "^3.22.4"
|
|
92
|
-
"he": "^1.2.0"
|
|
92
|
+
"zod": "^3.22.4"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@types/node": "^20.11.5",
|