@einlogic/mcp-fabric-api 1.2.0 → 1.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/README.md +110 -7
- package/build/core/workspace-guard.d.ts +10 -0
- package/build/core/workspace-guard.d.ts.map +1 -0
- package/build/core/workspace-guard.js +36 -0
- package/build/core/workspace-guard.js.map +1 -0
- package/build/server.d.ts.map +1 -1
- package/build/server.js +15 -13
- package/build/server.js.map +1 -1
- package/build/tools/dataflow.d.ts +2 -1
- package/build/tools/dataflow.d.ts.map +1 -1
- package/build/tools/dataflow.js +4 -1
- package/build/tools/dataflow.js.map +1 -1
- package/build/tools/eventhouse.d.ts +2 -1
- package/build/tools/eventhouse.d.ts.map +1 -1
- package/build/tools/eventhouse.js +4 -1
- package/build/tools/eventhouse.js.map +1 -1
- package/build/tools/eventstream.d.ts +2 -1
- package/build/tools/eventstream.d.ts.map +1 -1
- package/build/tools/eventstream.js +12 -5
- package/build/tools/eventstream.js.map +1 -1
- package/build/tools/graphql-api.d.ts +2 -1
- package/build/tools/graphql-api.d.ts.map +1 -1
- package/build/tools/graphql-api.js +4 -1
- package/build/tools/graphql-api.js.map +1 -1
- package/build/tools/lakehouse.d.ts +2 -1
- package/build/tools/lakehouse.d.ts.map +1 -1
- package/build/tools/lakehouse.js +5 -1
- package/build/tools/lakehouse.js.map +1 -1
- package/build/tools/notebook.d.ts +2 -1
- package/build/tools/notebook.d.ts.map +1 -1
- package/build/tools/notebook.js +12 -5
- package/build/tools/notebook.js.map +1 -1
- package/build/tools/pipeline.d.ts +2 -1
- package/build/tools/pipeline.d.ts.map +1 -1
- package/build/tools/pipeline.js +7 -1
- package/build/tools/pipeline.js.map +1 -1
- package/build/tools/reflex.d.ts +2 -1
- package/build/tools/reflex.d.ts.map +1 -1
- package/build/tools/reflex.js +4 -1
- package/build/tools/reflex.js.map +1 -1
- package/build/tools/report.d.ts +2 -1
- package/build/tools/report.d.ts.map +1 -1
- package/build/tools/report.js +13 -5
- package/build/tools/report.js.map +1 -1
- package/build/tools/semantic-model.d.ts +2 -1
- package/build/tools/semantic-model.d.ts.map +1 -1
- package/build/tools/semantic-model.js +60 -23
- package/build/tools/semantic-model.js.map +1 -1
- package/build/tools/warehouse.d.ts +2 -1
- package/build/tools/warehouse.d.ts.map +1 -1
- package/build/tools/warehouse.js +4 -1
- package/build/tools/warehouse.js.map +1 -1
- package/build/tools/workspace.d.ts +2 -1
- package/build/tools/workspace.d.ts.map +1 -1
- package/build/tools/workspace.js +3 -1
- package/build/tools/workspace.js.map +1 -1
- package/build/utils/file-reader.d.ts +9 -0
- package/build/utils/file-reader.d.ts.map +1 -0
- package/build/utils/file-reader.js +67 -0
- package/build/utils/file-reader.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -73,6 +73,109 @@ The server exposes:
|
|
|
73
73
|
- `DELETE /mcp` — Session cleanup
|
|
74
74
|
- `GET /.well-known/oauth-protected-resource` — OAuth metadata
|
|
75
75
|
|
|
76
|
+
### Workspace Safety Guard
|
|
77
|
+
|
|
78
|
+
Control which workspaces allow write operations (create, update, delete) via the `WRITABLE_WORKSPACES` environment variable. Only workspaces matching the configured name patterns will permit CUD (Create, Update, Delete) operations. Read operations are never restricted.
|
|
79
|
+
|
|
80
|
+
> **Default behavior: When `WRITABLE_WORKSPACES` is not set or empty, all workspaces are writable (equivalent to `*`). This is fully backward compatible.**
|
|
81
|
+
|
|
82
|
+
Set comma-separated glob patterns:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
WRITABLE_WORKSPACES=*-Dev,*-Test,Sandbox*
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Wildcard examples:**
|
|
89
|
+
- `*-Dev` matches "Sales-Dev", "Finance-Dev"
|
|
90
|
+
- `Sandbox*` matches "Sandbox-123", "Sandbox-Mike"
|
|
91
|
+
- `Exact-Name` matches only "Exact-Name" (case-insensitive)
|
|
92
|
+
|
|
93
|
+
**Guarded tools (46 total)** — every tool that creates, updates, or deletes workspace items:
|
|
94
|
+
|
|
95
|
+
| Domain | Guarded tools |
|
|
96
|
+
|--------|--------------|
|
|
97
|
+
| Workspace | `workspace_update`, `workspace_delete` |
|
|
98
|
+
| Lakehouse | `lakehouse_create`, `lakehouse_update`, `lakehouse_delete`, `lakehouse_load_table` |
|
|
99
|
+
| Warehouse | `warehouse_create`, `warehouse_update`, `warehouse_delete` |
|
|
100
|
+
| Notebook | `notebook_create`, `notebook_update`, `notebook_delete`, `notebook_update_definition` |
|
|
101
|
+
| Pipeline | `pipeline_create`, `pipeline_update`, `pipeline_delete`, `pipeline_create_schedule`, `pipeline_update_schedule`, `pipeline_delete_schedule` |
|
|
102
|
+
| Semantic Model | `semantic_model_create`, `semantic_model_create_tmdl`, `semantic_model_update`, `semantic_model_delete`, `semantic_model_update_definition`, `semantic_model_update_tmdl` |
|
|
103
|
+
| Report | `report_create`, `report_update`, `report_delete`, `report_clone`, `report_update_definition` |
|
|
104
|
+
| Dataflow | `dataflow_create`, `dataflow_update`, `dataflow_delete` |
|
|
105
|
+
| Eventhouse | `eventhouse_create`, `eventhouse_update`, `eventhouse_delete` |
|
|
106
|
+
| Eventstream | `eventstream_create`, `eventstream_update`, `eventstream_delete`, `eventstream_update_definition` |
|
|
107
|
+
| Reflex | `reflex_create`, `reflex_update`, `reflex_delete` |
|
|
108
|
+
| GraphQL API | `graphql_api_create`, `graphql_api_update`, `graphql_api_delete` |
|
|
109
|
+
|
|
110
|
+
**Not guarded:** Read operations (list, get, get_definition, get_status), query execution (DAX, KQL, SQL, GraphQL), run/refresh/cancel operations, and export operations.
|
|
111
|
+
|
|
112
|
+
**Claude Desktop config with guard:**
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"mcpServers": {
|
|
116
|
+
"fabric": {
|
|
117
|
+
"command": "npx",
|
|
118
|
+
"args": ["-y", "@einlogic/mcp-fabric-api"],
|
|
119
|
+
"env": {
|
|
120
|
+
"WRITABLE_WORKSPACES": "*-Dev,*-Test,Sandbox*"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Claude Code CLI with guard:**
|
|
128
|
+
```bash
|
|
129
|
+
WRITABLE_WORKSPACES="*-Dev,*-Test" claude mcp add fabric -- npx -y @einlogic/mcp-fabric-api
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Error when blocked:**
|
|
133
|
+
```
|
|
134
|
+
Workspace "Production-Analytics" is not in the writable workspaces list. Allowed patterns: *-Dev, *-Test, Sandbox*
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### File Path References
|
|
138
|
+
|
|
139
|
+
Some tools accept large payloads (notebook code, model.bim JSON, TMDL files, report definitions) that may exceed message size limits. Instead of passing content inline, you can write payloads to local files and pass file paths.
|
|
140
|
+
|
|
141
|
+
**Single-content tools** — use `contentFilePath` or `definitionFilePath` instead of inline content:
|
|
142
|
+
|
|
143
|
+
| Tool | File path parameter |
|
|
144
|
+
|------|-------------------|
|
|
145
|
+
| `notebook_update_definition` | `contentFilePath` |
|
|
146
|
+
| `semantic_model_create` | `definitionFilePath` |
|
|
147
|
+
| `semantic_model_update_definition` | `definitionFilePath` |
|
|
148
|
+
| `eventstream_update_definition` | `contentFilePath` |
|
|
149
|
+
|
|
150
|
+
**Multi-file tools** — use `filesDirectoryPath` or `partsDirectoryPath` instead of inline file arrays:
|
|
151
|
+
|
|
152
|
+
| Tool | Directory path parameter | Extension filter |
|
|
153
|
+
|------|------------------------|-----------------|
|
|
154
|
+
| `semantic_model_create_tmdl` | `filesDirectoryPath` | `.tmdl`, `.pbism` |
|
|
155
|
+
| `semantic_model_update_tmdl` | `filesDirectoryPath` | `.tmdl`, `.pbism` |
|
|
156
|
+
| `report_update_definition` | `partsDirectoryPath` | all files |
|
|
157
|
+
|
|
158
|
+
**Example — inline vs file path:**
|
|
159
|
+
```json
|
|
160
|
+
// Inline (may hit size limits)
|
|
161
|
+
{ "content": "# Notebook code\nprint('hello')" }
|
|
162
|
+
|
|
163
|
+
// File path reference
|
|
164
|
+
{ "contentFilePath": "/tmp/notebook-content.py" }
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**TMDL directory structure example:**
|
|
168
|
+
```
|
|
169
|
+
/tmp/my-model/
|
|
170
|
+
model.tmdl
|
|
171
|
+
definition.pbism
|
|
172
|
+
definition/
|
|
173
|
+
tables/
|
|
174
|
+
Sales.tmdl
|
|
175
|
+
Product.tmdl
|
|
176
|
+
relationships.tmdl
|
|
177
|
+
```
|
|
178
|
+
|
|
76
179
|
## Development
|
|
77
180
|
|
|
78
181
|
```bash
|
|
@@ -137,7 +240,7 @@ npm run inspect # Launch MCP Inspector
|
|
|
137
240
|
| `notebook_update` | Update notebook name or description |
|
|
138
241
|
| `notebook_delete` | Delete a notebook |
|
|
139
242
|
| `notebook_get_definition` | Get notebook content (decoded from base64) |
|
|
140
|
-
| `notebook_update_definition` | Update notebook content |
|
|
243
|
+
| `notebook_update_definition` | Update notebook content (supports file path reference) |
|
|
141
244
|
| `notebook_run` | Run a notebook on demand |
|
|
142
245
|
| `notebook_get_run_status` | Get notebook run status |
|
|
143
246
|
| `notebook_cancel_run` | Cancel a running notebook |
|
|
@@ -164,16 +267,16 @@ npm run inspect # Launch MCP Inspector
|
|
|
164
267
|
|------|-------------|
|
|
165
268
|
| `semantic_model_list` | List all semantic models |
|
|
166
269
|
| `semantic_model_get` | Get semantic model details |
|
|
167
|
-
| `semantic_model_create` | Create a semantic model with a BIM/JSON definition (LRO) |
|
|
168
|
-
| `semantic_model_create_tmdl` | Create a semantic model with a TMDL definition (LRO) |
|
|
270
|
+
| `semantic_model_create` | Create a semantic model with a BIM/JSON definition (LRO, supports file path reference) |
|
|
271
|
+
| `semantic_model_create_tmdl` | Create a semantic model with a TMDL definition (LRO, supports directory path reference) |
|
|
169
272
|
| `semantic_model_update` | Update semantic model name or description |
|
|
170
273
|
| `semantic_model_delete` | Delete a semantic model |
|
|
171
274
|
| `semantic_model_refresh` | Trigger a model refresh (Power BI API) |
|
|
172
275
|
| `semantic_model_execute_dax` | Execute a DAX query (Power BI API) |
|
|
173
276
|
| `semantic_model_get_definition` | Get model definition in TMSL/BIM JSON format (LRO) |
|
|
174
277
|
| `semantic_model_get_tmdl` | Get model definition in TMDL format (LRO) |
|
|
175
|
-
| `semantic_model_update_definition` | Update model definition from TMSL/BIM JSON (LRO) |
|
|
176
|
-
| `semantic_model_update_tmdl` | Update model definition from TMDL files (LRO) |
|
|
278
|
+
| `semantic_model_update_definition` | Update model definition from TMSL/BIM JSON (LRO, supports file path reference) |
|
|
279
|
+
| `semantic_model_update_tmdl` | Update model definition from TMDL files (LRO, supports directory path reference) |
|
|
177
280
|
|
|
178
281
|
### Report (10 tools)
|
|
179
282
|
| Tool | Description |
|
|
@@ -187,7 +290,7 @@ npm run inspect # Launch MCP Inspector
|
|
|
187
290
|
| `report_export` | Export report to file format (Power BI API) |
|
|
188
291
|
| `report_get_export_status` | Check report export status |
|
|
189
292
|
| `report_get_definition` | Get report definition in PBIR or PBIR-Legacy format (LRO) |
|
|
190
|
-
| `report_update_definition` | Update report definition from parts (LRO) |
|
|
293
|
+
| `report_update_definition` | Update report definition from parts (LRO, supports directory path reference) |
|
|
191
294
|
|
|
192
295
|
### Dataflow Gen2 (7 tools)
|
|
193
296
|
| Tool | Description |
|
|
@@ -220,7 +323,7 @@ npm run inspect # Launch MCP Inspector
|
|
|
220
323
|
| `eventstream_update` | Update eventstream name or description |
|
|
221
324
|
| `eventstream_delete` | Delete an eventstream |
|
|
222
325
|
| `eventstream_get_definition` | Get eventstream definition (decoded) |
|
|
223
|
-
| `eventstream_update_definition` | Update eventstream definition |
|
|
326
|
+
| `eventstream_update_definition` | Update eventstream definition (supports file path reference) |
|
|
224
327
|
|
|
225
328
|
### Reflex / Activator (6 tools)
|
|
226
329
|
| Tool | Description |
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FabricClient } from "../client/fabric-client.js";
|
|
2
|
+
export declare class WorkspaceGuard {
|
|
3
|
+
private patterns;
|
|
4
|
+
private nameCache;
|
|
5
|
+
constructor();
|
|
6
|
+
isEnabled(): boolean;
|
|
7
|
+
assertWorkspaceAllowed(fabricClient: FabricClient, workspaceId: string): Promise<void>;
|
|
8
|
+
private matchesPattern;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=workspace-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-guard.d.ts","sourceRoot":"","sources":["../../src/core/workspace-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAA6B;;IAS9C,SAAS,IAAI,OAAO;IAId,sBAAsB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5F,OAAO,CAAC,cAAc;CAIvB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class WorkspaceGuard {
|
|
2
|
+
patterns;
|
|
3
|
+
nameCache = new Map();
|
|
4
|
+
constructor() {
|
|
5
|
+
const env = process.env.WRITABLE_WORKSPACES?.trim();
|
|
6
|
+
this.patterns = env
|
|
7
|
+
? env.split(",").map((p) => p.trim()).filter((p) => p.length > 0)
|
|
8
|
+
: [];
|
|
9
|
+
}
|
|
10
|
+
isEnabled() {
|
|
11
|
+
return this.patterns.length > 0;
|
|
12
|
+
}
|
|
13
|
+
async assertWorkspaceAllowed(fabricClient, workspaceId) {
|
|
14
|
+
if (!this.isEnabled())
|
|
15
|
+
return;
|
|
16
|
+
let name = this.nameCache.get(workspaceId);
|
|
17
|
+
if (!name) {
|
|
18
|
+
const response = await fabricClient.get(`/workspaces/${workspaceId}`);
|
|
19
|
+
name = response.data.displayName;
|
|
20
|
+
this.nameCache.set(workspaceId, name);
|
|
21
|
+
}
|
|
22
|
+
for (const pattern of this.patterns) {
|
|
23
|
+
if (this.matchesPattern(name, pattern))
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Workspace "${name}" is not in the writable workspaces list. Allowed patterns: ${this.patterns.join(", ")}`);
|
|
27
|
+
}
|
|
28
|
+
matchesPattern(name, pattern) {
|
|
29
|
+
const regexStr = "^" + pattern.split("*").map(escapeRegExp).join(".*") + "$";
|
|
30
|
+
return new RegExp(regexStr, "i").test(name);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function escapeRegExp(str) {
|
|
34
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=workspace-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-guard.js","sourceRoot":"","sources":["../../src/core/workspace-guard.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAW;IACnB,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C;QACE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,GAAG;YACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACjE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,YAA0B,EAAE,WAAmB;QAC1E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAE9B,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAA0B,eAAe,WAAW,EAAE,CAAC,CAAC;YAC/F,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;gBAAE,OAAO;QACjD,CAAC;QAED,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,+DAA+D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,OAAe;QAClD,MAAM,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC7E,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAqBvD,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CA8BrE"}
|
package/build/server.js
CHANGED
|
@@ -18,29 +18,31 @@ import { registerSqlEndpointTools } from "./tools/sql-endpoint.js";
|
|
|
18
18
|
import { registerAuthTools } from "./tools/auth.js";
|
|
19
19
|
import { SqlClient } from "./client/sql-client.js";
|
|
20
20
|
import { KustoClient } from "./client/kusto-client.js";
|
|
21
|
+
import { WorkspaceGuard } from "./core/workspace-guard.js";
|
|
21
22
|
export function createServer(options) {
|
|
22
23
|
const server = new McpServer({
|
|
23
24
|
name: "mcp-fabric-api",
|
|
24
|
-
version: "1.
|
|
25
|
+
version: "1.3.0",
|
|
25
26
|
});
|
|
26
27
|
const tokenManager = options?.tokenManager ?? new TokenManager();
|
|
27
28
|
const fabricClient = new FabricClient(tokenManager);
|
|
28
29
|
const powerBIClient = new PowerBIClient(tokenManager);
|
|
29
30
|
const sqlClient = new SqlClient(tokenManager);
|
|
30
31
|
const kustoClient = new KustoClient(tokenManager);
|
|
32
|
+
const workspaceGuard = new WorkspaceGuard();
|
|
31
33
|
// Register all domain tools
|
|
32
|
-
registerWorkspaceTools(server, fabricClient);
|
|
33
|
-
registerLakehouseTools(server, fabricClient);
|
|
34
|
-
registerWarehouseTools(server, fabricClient);
|
|
35
|
-
registerNotebookTools(server, fabricClient);
|
|
36
|
-
registerPipelineTools(server, fabricClient);
|
|
37
|
-
registerSemanticModelTools(server, fabricClient, powerBIClient);
|
|
38
|
-
registerReportTools(server, fabricClient, powerBIClient);
|
|
39
|
-
registerDataflowTools(server, fabricClient);
|
|
40
|
-
registerEventhouseTools(server, fabricClient, kustoClient);
|
|
41
|
-
registerEventstreamTools(server, fabricClient);
|
|
42
|
-
registerReflexTools(server, fabricClient);
|
|
43
|
-
registerGraphQLApiTools(server, fabricClient, powerBIClient);
|
|
34
|
+
registerWorkspaceTools(server, fabricClient, workspaceGuard);
|
|
35
|
+
registerLakehouseTools(server, fabricClient, workspaceGuard);
|
|
36
|
+
registerWarehouseTools(server, fabricClient, workspaceGuard);
|
|
37
|
+
registerNotebookTools(server, fabricClient, workspaceGuard);
|
|
38
|
+
registerPipelineTools(server, fabricClient, workspaceGuard);
|
|
39
|
+
registerSemanticModelTools(server, fabricClient, powerBIClient, workspaceGuard);
|
|
40
|
+
registerReportTools(server, fabricClient, powerBIClient, workspaceGuard);
|
|
41
|
+
registerDataflowTools(server, fabricClient, workspaceGuard);
|
|
42
|
+
registerEventhouseTools(server, fabricClient, kustoClient, workspaceGuard);
|
|
43
|
+
registerEventstreamTools(server, fabricClient, workspaceGuard);
|
|
44
|
+
registerReflexTools(server, fabricClient, workspaceGuard);
|
|
45
|
+
registerGraphQLApiTools(server, fabricClient, powerBIClient, workspaceGuard);
|
|
44
46
|
registerSqlEndpointTools(server, fabricClient, sqlClient);
|
|
45
47
|
registerAuthTools(server, tokenManager);
|
|
46
48
|
return server;
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { FabricClient } from "../client/fabric-client.js";
|
|
3
|
-
|
|
3
|
+
import { WorkspaceGuard } from "../core/workspace-guard.js";
|
|
4
|
+
export declare function registerDataflowTools(server: McpServer, fabricClient: FabricClient, workspaceGuard: WorkspaceGuard): void;
|
|
4
5
|
//# sourceMappingURL=dataflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/tools/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/tools/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,QAgIlH"}
|
package/build/tools/dataflow.js
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { formatToolError } from "../core/errors.js";
|
|
3
3
|
import { paginateAll } from "../core/pagination.js";
|
|
4
4
|
import { runOnDemandJob, getJobInstance } from "../core/job-scheduler.js";
|
|
5
|
-
export function registerDataflowTools(server, fabricClient) {
|
|
5
|
+
export function registerDataflowTools(server, fabricClient, workspaceGuard) {
|
|
6
6
|
server.tool("dataflow_list", "List all Dataflow Gen2 items in a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
|
|
7
7
|
try {
|
|
8
8
|
const items = await paginateAll(fabricClient, `/workspaces/${workspaceId}/items?type=DataflowGen2`);
|
|
@@ -30,6 +30,7 @@ export function registerDataflowTools(server, fabricClient) {
|
|
|
30
30
|
description: z.string().optional().describe("Description of the dataflow"),
|
|
31
31
|
}, async ({ workspaceId, displayName, description }) => {
|
|
32
32
|
try {
|
|
33
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
33
34
|
const body = { displayName, type: "DataflowGen2" };
|
|
34
35
|
if (description)
|
|
35
36
|
body.description = description;
|
|
@@ -47,6 +48,7 @@ export function registerDataflowTools(server, fabricClient) {
|
|
|
47
48
|
description: z.string().optional().describe("New description"),
|
|
48
49
|
}, async ({ workspaceId, dataflowId, displayName, description }) => {
|
|
49
50
|
try {
|
|
51
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
50
52
|
const body = {};
|
|
51
53
|
if (displayName !== undefined)
|
|
52
54
|
body.displayName = displayName;
|
|
@@ -64,6 +66,7 @@ export function registerDataflowTools(server, fabricClient) {
|
|
|
64
66
|
dataflowId: z.string().describe("The dataflow ID"),
|
|
65
67
|
}, async ({ workspaceId, dataflowId }) => {
|
|
66
68
|
try {
|
|
69
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
67
70
|
await fabricClient.delete(`/workspaces/${workspaceId}/items/${dataflowId}`);
|
|
68
71
|
return { content: [{ type: "text", text: `Dataflow ${dataflowId} deleted successfully` }] };
|
|
69
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/tools/dataflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/tools/dataflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { FabricClient } from "../client/fabric-client.js";
|
|
3
3
|
import { KustoClient } from "../client/kusto-client.js";
|
|
4
|
-
|
|
4
|
+
import { WorkspaceGuard } from "../core/workspace-guard.js";
|
|
5
|
+
export declare function registerEventhouseTools(server: McpServer, fabricClient: FabricClient, kustoClient: KustoClient, workspaceGuard: WorkspaceGuard): void;
|
|
5
6
|
//# sourceMappingURL=eventhouse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventhouse.d.ts","sourceRoot":"","sources":["../../src/tools/eventhouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"eventhouse.d.ts","sourceRoot":"","sources":["../../src/tools/eventhouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,QA2J9I"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { formatToolError } from "../core/errors.js";
|
|
3
3
|
import { paginateAll } from "../core/pagination.js";
|
|
4
4
|
import { pollOperation, getOperationResult } from "../core/lro.js";
|
|
5
|
-
export function registerEventhouseTools(server, fabricClient, kustoClient) {
|
|
5
|
+
export function registerEventhouseTools(server, fabricClient, kustoClient, workspaceGuard) {
|
|
6
6
|
server.tool("eventhouse_list", "List all eventhouses in a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
|
|
7
7
|
try {
|
|
8
8
|
const eventhouses = await paginateAll(fabricClient, `/workspaces/${workspaceId}/eventhouses`);
|
|
@@ -30,6 +30,7 @@ export function registerEventhouseTools(server, fabricClient, kustoClient) {
|
|
|
30
30
|
description: z.string().optional().describe("Description of the eventhouse"),
|
|
31
31
|
}, async ({ workspaceId, displayName, description }) => {
|
|
32
32
|
try {
|
|
33
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
33
34
|
const body = { displayName };
|
|
34
35
|
if (description)
|
|
35
36
|
body.description = description;
|
|
@@ -52,6 +53,7 @@ export function registerEventhouseTools(server, fabricClient, kustoClient) {
|
|
|
52
53
|
description: z.string().optional().describe("New description"),
|
|
53
54
|
}, async ({ workspaceId, eventhouseId, displayName, description }) => {
|
|
54
55
|
try {
|
|
56
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
55
57
|
const body = {};
|
|
56
58
|
if (displayName !== undefined)
|
|
57
59
|
body.displayName = displayName;
|
|
@@ -69,6 +71,7 @@ export function registerEventhouseTools(server, fabricClient, kustoClient) {
|
|
|
69
71
|
eventhouseId: z.string().describe("The eventhouse ID"),
|
|
70
72
|
}, async ({ workspaceId, eventhouseId }) => {
|
|
71
73
|
try {
|
|
74
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
72
75
|
await fabricClient.delete(`/workspaces/${workspaceId}/eventhouses/${eventhouseId}`);
|
|
73
76
|
return { content: [{ type: "text", text: `Eventhouse ${eventhouseId} deleted successfully` }] };
|
|
74
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventhouse.js","sourceRoot":"","sources":["../../src/tools/eventhouse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"eventhouse.js","sourceRoot":"","sources":["../../src/tools/eventhouse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { FabricClient } from "../client/fabric-client.js";
|
|
3
|
-
|
|
3
|
+
import { WorkspaceGuard } from "../core/workspace-guard.js";
|
|
4
|
+
export declare function registerEventstreamTools(server: McpServer, fabricClient: FabricClient, workspaceGuard: WorkspaceGuard): void;
|
|
4
5
|
//# sourceMappingURL=eventstream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventstream.d.ts","sourceRoot":"","sources":["../../src/tools/eventstream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"eventstream.d.ts","sourceRoot":"","sources":["../../src/tools/eventstream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,QA0KrH"}
|
|
@@ -3,7 +3,8 @@ import { formatToolError } from "../core/errors.js";
|
|
|
3
3
|
import { paginateAll } from "../core/pagination.js";
|
|
4
4
|
import { pollOperation, getOperationResult } from "../core/lro.js";
|
|
5
5
|
import { decodeBase64, encodeBase64 } from "../utils/base64.js";
|
|
6
|
-
|
|
6
|
+
import { resolveContentOrFile } from "../utils/file-reader.js";
|
|
7
|
+
export function registerEventstreamTools(server, fabricClient, workspaceGuard) {
|
|
7
8
|
server.tool("eventstream_list", "List all eventstreams in a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
|
|
8
9
|
try {
|
|
9
10
|
const eventstreams = await paginateAll(fabricClient, `/workspaces/${workspaceId}/eventstreams`);
|
|
@@ -31,6 +32,7 @@ export function registerEventstreamTools(server, fabricClient) {
|
|
|
31
32
|
description: z.string().optional().describe("Description of the eventstream"),
|
|
32
33
|
}, async ({ workspaceId, displayName, description }) => {
|
|
33
34
|
try {
|
|
35
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
34
36
|
const body = { displayName };
|
|
35
37
|
if (description)
|
|
36
38
|
body.description = description;
|
|
@@ -53,6 +55,7 @@ export function registerEventstreamTools(server, fabricClient) {
|
|
|
53
55
|
description: z.string().optional().describe("New description"),
|
|
54
56
|
}, async ({ workspaceId, eventstreamId, displayName, description }) => {
|
|
55
57
|
try {
|
|
58
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
56
59
|
const body = {};
|
|
57
60
|
if (displayName !== undefined)
|
|
58
61
|
body.displayName = displayName;
|
|
@@ -70,6 +73,7 @@ export function registerEventstreamTools(server, fabricClient) {
|
|
|
70
73
|
eventstreamId: z.string().describe("The eventstream ID"),
|
|
71
74
|
}, async ({ workspaceId, eventstreamId }) => {
|
|
72
75
|
try {
|
|
76
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
73
77
|
await fabricClient.delete(`/workspaces/${workspaceId}/eventstreams/${eventstreamId}`);
|
|
74
78
|
return { content: [{ type: "text", text: `Eventstream ${eventstreamId} deleted successfully` }] };
|
|
75
79
|
}
|
|
@@ -102,19 +106,22 @@ export function registerEventstreamTools(server, fabricClient) {
|
|
|
102
106
|
return formatToolError(error);
|
|
103
107
|
}
|
|
104
108
|
});
|
|
105
|
-
server.tool("eventstream_update_definition", "Update the definition of an eventstream (long-running
|
|
109
|
+
server.tool("eventstream_update_definition", "Update the definition of an eventstream (long-running). Accepts raw content inline or a file path reference.", {
|
|
106
110
|
workspaceId: z.string().describe("The workspace ID"),
|
|
107
111
|
eventstreamId: z.string().describe("The eventstream ID"),
|
|
108
|
-
content: z.string().describe("The eventstream definition content (will be base64 encoded)"),
|
|
112
|
+
content: z.string().optional().describe("The eventstream definition content (will be base64 encoded)"),
|
|
113
|
+
contentFilePath: z.string().optional().describe("Path to a file containing the eventstream definition (alternative to inline content)"),
|
|
109
114
|
path: z.string().optional().describe("The definition part path (default: eventstream.json)"),
|
|
110
|
-
}, async ({ workspaceId, eventstreamId, content, path }) => {
|
|
115
|
+
}, async ({ workspaceId, eventstreamId, content, contentFilePath, path }) => {
|
|
111
116
|
try {
|
|
117
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
118
|
+
const resolved = await resolveContentOrFile(content, contentFilePath, "content");
|
|
112
119
|
const body = {
|
|
113
120
|
definition: {
|
|
114
121
|
parts: [
|
|
115
122
|
{
|
|
116
123
|
path: path ?? "eventstream.json",
|
|
117
|
-
payload: encodeBase64(
|
|
124
|
+
payload: encodeBase64(resolved),
|
|
118
125
|
payloadType: "InlineBase64",
|
|
119
126
|
},
|
|
120
127
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventstream.js","sourceRoot":"","sources":["../../src/tools/eventstream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,YAA0B;
|
|
1
|
+
{"version":3,"file":"eventstream.js","sourceRoot":"","sources":["../../src/tools/eventstream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,YAA0B,EAAE,cAA8B;IACpH,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sCAAsC,EACtC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EACxD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,eAAe,WAAW,eAAe,CAAC,CAAC;YAChG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,uCAAuC,EACvC;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,eAAe,WAAW,iBAAiB,aAAa,EAAE,CAAC,CAAC;YACpG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kEAAkE,EAClE;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,GAA4B,EAAE,WAAW,EAAE,CAAC;YACtD,IAAI,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,eAAe,WAAW,eAAe,EAAE,IAAI,CAAC,CAAC;YAC1F,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7H,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6CAA6C,EAC7C;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAC/D,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,WAAW,KAAK,SAAS;gBAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC9D,IAAI,WAAW,KAAK,SAAS;gBAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,eAAe,WAAW,iBAAiB,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,uBAAuB,EACvB;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,YAAY,CAAC,MAAM,CAAC,eAAe,WAAW,iBAAiB,aAAa,EAAE,CAAC,CAAC;YACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,aAAa,uBAAuB,EAAE,CAAC,EAAE,CAAC;QACpG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,8EAA8E,EAC9E;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CACtC,eAAe,WAAW,iBAAiB,aAAa,gBAAgB,CACzE,CAAC;YACF,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAA0B,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzG,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;oBACvB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAsF,CAAC;oBACjH,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;wBACxF,WAAW,EAAE,IAAI,CAAC,WAAW;qBAC9B,CAAC,CAAC,CAAC;oBACJ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjF,CAAC;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,+BAA+B,EAC/B,8GAA8G,EAC9G;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACtG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;QACvI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;KAC7F,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG;gBACX,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,IAAI,IAAI,kBAAkB;4BAChC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC;4BAC/B,WAAW,EAAE,cAAc;yBAC5B;qBACF;iBACF;aACF,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CACtC,eAAe,WAAW,iBAAiB,aAAa,mBAAmB,EAC3E,IAAI,CACL,CAAC;YACF,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { FabricClient } from "../client/fabric-client.js";
|
|
3
3
|
import { PowerBIClient } from "../client/powerbi-client.js";
|
|
4
|
-
|
|
4
|
+
import { WorkspaceGuard } from "../core/workspace-guard.js";
|
|
5
|
+
export declare function registerGraphQLApiTools(server: McpServer, fabricClient: FabricClient, powerBIClient: PowerBIClient, workspaceGuard: WorkspaceGuard): void;
|
|
5
6
|
//# sourceMappingURL=graphql-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-api.d.ts","sourceRoot":"","sources":["../../src/tools/graphql-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"graphql-api.d.ts","sourceRoot":"","sources":["../../src/tools/graphql-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,QA2JlJ"}
|
|
@@ -3,7 +3,7 @@ import { formatToolError } from "../core/errors.js";
|
|
|
3
3
|
import { paginateAll } from "../core/pagination.js";
|
|
4
4
|
import { pollOperation, getOperationResult } from "../core/lro.js";
|
|
5
5
|
import { decodeBase64 } from "../utils/base64.js";
|
|
6
|
-
export function registerGraphQLApiTools(server, fabricClient, powerBIClient) {
|
|
6
|
+
export function registerGraphQLApiTools(server, fabricClient, powerBIClient, workspaceGuard) {
|
|
7
7
|
server.tool("graphql_api_list", "List all GraphQL API items in a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
|
|
8
8
|
try {
|
|
9
9
|
const items = await paginateAll(fabricClient, `/workspaces/${workspaceId}/graphQLApis`);
|
|
@@ -31,6 +31,7 @@ export function registerGraphQLApiTools(server, fabricClient, powerBIClient) {
|
|
|
31
31
|
description: z.string().optional().describe("Description of the GraphQL API"),
|
|
32
32
|
}, async ({ workspaceId, displayName, description }) => {
|
|
33
33
|
try {
|
|
34
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
34
35
|
const body = { displayName };
|
|
35
36
|
if (description)
|
|
36
37
|
body.description = description;
|
|
@@ -53,6 +54,7 @@ export function registerGraphQLApiTools(server, fabricClient, powerBIClient) {
|
|
|
53
54
|
description: z.string().optional().describe("New description"),
|
|
54
55
|
}, async ({ workspaceId, graphqlApiId, displayName, description }) => {
|
|
55
56
|
try {
|
|
57
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
56
58
|
const body = {};
|
|
57
59
|
if (displayName !== undefined)
|
|
58
60
|
body.displayName = displayName;
|
|
@@ -70,6 +72,7 @@ export function registerGraphQLApiTools(server, fabricClient, powerBIClient) {
|
|
|
70
72
|
graphqlApiId: z.string().describe("The GraphQL API ID"),
|
|
71
73
|
}, async ({ workspaceId, graphqlApiId }) => {
|
|
72
74
|
try {
|
|
75
|
+
await workspaceGuard.assertWorkspaceAllowed(fabricClient, workspaceId);
|
|
73
76
|
await fabricClient.delete(`/workspaces/${workspaceId}/graphQLApis/${graphqlApiId}`);
|
|
74
77
|
return { content: [{ type: "text", text: `GraphQL API ${graphqlApiId} deleted successfully` }] };
|
|
75
78
|
}
|