@einlogic/mcp-fabric-api 1.0.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.
Files changed (107) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +241 -0
  3. package/build/auth/oauth-handler.d.ts +14 -0
  4. package/build/auth/oauth-handler.d.ts.map +1 -0
  5. package/build/auth/oauth-handler.js +32 -0
  6. package/build/auth/oauth-handler.js.map +1 -0
  7. package/build/auth/token-manager.d.ts +15 -0
  8. package/build/auth/token-manager.d.ts.map +1 -0
  9. package/build/auth/token-manager.js +61 -0
  10. package/build/auth/token-manager.js.map +1 -0
  11. package/build/client/fabric-client.d.ts +24 -0
  12. package/build/client/fabric-client.d.ts.map +1 -0
  13. package/build/client/fabric-client.js +91 -0
  14. package/build/client/fabric-client.js.map +1 -0
  15. package/build/client/powerbi-client.d.ts +15 -0
  16. package/build/client/powerbi-client.d.ts.map +1 -0
  17. package/build/client/powerbi-client.js +62 -0
  18. package/build/client/powerbi-client.js.map +1 -0
  19. package/build/core/errors.d.ts +14 -0
  20. package/build/core/errors.d.ts.map +1 -0
  21. package/build/core/errors.js +33 -0
  22. package/build/core/errors.js.map +1 -0
  23. package/build/core/job-scheduler.d.ts +7 -0
  24. package/build/core/job-scheduler.d.ts.map +1 -0
  25. package/build/core/job-scheduler.js +20 -0
  26. package/build/core/job-scheduler.js.map +1 -0
  27. package/build/core/lro.d.ts +9 -0
  28. package/build/core/lro.d.ts.map +1 -0
  29. package/build/core/lro.js +35 -0
  30. package/build/core/lro.js.map +1 -0
  31. package/build/core/pagination.d.ts +3 -0
  32. package/build/core/pagination.d.ts.map +1 -0
  33. package/build/core/pagination.js +27 -0
  34. package/build/core/pagination.js.map +1 -0
  35. package/build/core/types.d.ts +86 -0
  36. package/build/core/types.d.ts.map +1 -0
  37. package/build/core/types.js +2 -0
  38. package/build/core/types.js.map +1 -0
  39. package/build/index.d.ts +3 -0
  40. package/build/index.d.ts.map +1 -0
  41. package/build/index.js +85 -0
  42. package/build/index.js.map +1 -0
  43. package/build/server.d.ts +7 -0
  44. package/build/server.d.ts.map +1 -0
  45. package/build/server.js +42 -0
  46. package/build/server.js.map +1 -0
  47. package/build/tools/auth.d.ts +4 -0
  48. package/build/tools/auth.d.ts.map +1 -0
  49. package/build/tools/auth.js +119 -0
  50. package/build/tools/auth.js.map +1 -0
  51. package/build/tools/dataflow.d.ts +4 -0
  52. package/build/tools/dataflow.d.ts.map +1 -0
  53. package/build/tools/dataflow.js +100 -0
  54. package/build/tools/dataflow.js.map +1 -0
  55. package/build/tools/eventhouse.d.ts +4 -0
  56. package/build/tools/eventhouse.d.ts.map +1 -0
  57. package/build/tools/eventhouse.js +80 -0
  58. package/build/tools/eventhouse.js.map +1 -0
  59. package/build/tools/eventstream.d.ts +4 -0
  60. package/build/tools/eventstream.d.ts.map +1 -0
  61. package/build/tools/eventstream.js +135 -0
  62. package/build/tools/eventstream.js.map +1 -0
  63. package/build/tools/graphql-api.d.ts +5 -0
  64. package/build/tools/graphql-api.d.ts.map +1 -0
  65. package/build/tools/graphql-api.js +124 -0
  66. package/build/tools/graphql-api.js.map +1 -0
  67. package/build/tools/lakehouse.d.ts +4 -0
  68. package/build/tools/lakehouse.d.ts.map +1 -0
  69. package/build/tools/lakehouse.js +138 -0
  70. package/build/tools/lakehouse.js.map +1 -0
  71. package/build/tools/notebook.d.ts +4 -0
  72. package/build/tools/notebook.d.ts.map +1 -0
  73. package/build/tools/notebook.js +186 -0
  74. package/build/tools/notebook.js.map +1 -0
  75. package/build/tools/pipeline.d.ts +4 -0
  76. package/build/tools/pipeline.d.ts.map +1 -0
  77. package/build/tools/pipeline.js +214 -0
  78. package/build/tools/pipeline.js.map +1 -0
  79. package/build/tools/reflex.d.ts +4 -0
  80. package/build/tools/reflex.d.ts.map +1 -0
  81. package/build/tools/reflex.js +101 -0
  82. package/build/tools/reflex.js.map +1 -0
  83. package/build/tools/report.d.ts +5 -0
  84. package/build/tools/report.d.ts.map +1 -0
  85. package/build/tools/report.js +191 -0
  86. package/build/tools/report.js.map +1 -0
  87. package/build/tools/semantic-model.d.ts +5 -0
  88. package/build/tools/semantic-model.d.ts.map +1 -0
  89. package/build/tools/semantic-model.js +225 -0
  90. package/build/tools/semantic-model.js.map +1 -0
  91. package/build/tools/sql-endpoint.d.ts +4 -0
  92. package/build/tools/sql-endpoint.d.ts.map +1 -0
  93. package/build/tools/sql-endpoint.js +44 -0
  94. package/build/tools/sql-endpoint.js.map +1 -0
  95. package/build/tools/workspace.d.ts +4 -0
  96. package/build/tools/workspace.d.ts.map +1 -0
  97. package/build/tools/workspace.js +84 -0
  98. package/build/tools/workspace.js.map +1 -0
  99. package/build/utils/base64.d.ts +3 -0
  100. package/build/utils/base64.d.ts.map +1 -0
  101. package/build/utils/base64.js +7 -0
  102. package/build/utils/base64.js.map +1 -0
  103. package/build/utils/tmdl.d.ts +13 -0
  104. package/build/utils/tmdl.d.ts.map +1 -0
  105. package/build/utils/tmdl.js +21 -0
  106. package/build/utils/tmdl.js.map +1 -0
  107. package/package.json +35 -0
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { formatToolError } from "../core/errors.js";
3
+ import { paginateAll } from "../core/pagination.js";
4
+ export function registerSqlEndpointTools(server, fabricClient) {
5
+ server.tool("sql_endpoint_list", "List all SQL endpoints in a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
6
+ try {
7
+ const endpoints = await paginateAll(fabricClient, `/workspaces/${workspaceId}/sqlEndpoints`);
8
+ return { content: [{ type: "text", text: JSON.stringify(endpoints, null, 2) }] };
9
+ }
10
+ catch (error) {
11
+ return formatToolError(error);
12
+ }
13
+ });
14
+ server.tool("sql_endpoint_get", "Get details of a specific SQL endpoint, including connection string", {
15
+ workspaceId: z.string().describe("The workspace ID"),
16
+ sqlEndpointId: z.string().describe("The SQL endpoint ID"),
17
+ }, async ({ workspaceId, sqlEndpointId }) => {
18
+ try {
19
+ const response = await fabricClient.get(`/workspaces/${workspaceId}/sqlEndpoints/${sqlEndpointId}`);
20
+ return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] };
21
+ }
22
+ catch (error) {
23
+ return formatToolError(error);
24
+ }
25
+ });
26
+ server.tool("sql_endpoint_get_connection_string", "Get the TDS connection string for a SQL endpoint", {
27
+ workspaceId: z.string().describe("The workspace ID"),
28
+ sqlEndpointId: z.string().describe("The SQL endpoint ID"),
29
+ }, async ({ workspaceId, sqlEndpointId }) => {
30
+ try {
31
+ const response = await fabricClient.get(`/workspaces/${workspaceId}/sqlEndpoints/${sqlEndpointId}`);
32
+ const properties = response.data.properties;
33
+ const connectionString = properties?.connectionString;
34
+ if (!connectionString) {
35
+ return { content: [{ type: "text", text: "No connection string available for this SQL endpoint. The endpoint may still be provisioning." }] };
36
+ }
37
+ return { content: [{ type: "text", text: JSON.stringify({ connectionString }, null, 2) }] };
38
+ }
39
+ catch (error) {
40
+ return formatToolError(error);
41
+ }
42
+ });
43
+ }
44
+ //# sourceMappingURL=sql-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-endpoint.js","sourceRoot":"","sources":["../../src/tools/sql-endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { FabricClient } from "../client/fabric-client.js";
3
+ export declare function registerWorkspaceTools(server: McpServer, fabricClient: FabricClient): void;
4
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,QAuGnF"}
@@ -0,0 +1,84 @@
1
+ import { z } from "zod";
2
+ import { formatToolError } from "../core/errors.js";
3
+ import { paginateAll } from "../core/pagination.js";
4
+ export function registerWorkspaceTools(server, fabricClient) {
5
+ server.tool("workspace_list", "List all accessible Fabric workspaces", {}, async () => {
6
+ try {
7
+ const workspaces = await paginateAll(fabricClient, "/workspaces");
8
+ return { content: [{ type: "text", text: JSON.stringify(workspaces, null, 2) }] };
9
+ }
10
+ catch (error) {
11
+ return formatToolError(error);
12
+ }
13
+ });
14
+ server.tool("workspace_get", "Get details of a specific workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
15
+ try {
16
+ const response = await fabricClient.get(`/workspaces/${workspaceId}`);
17
+ return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] };
18
+ }
19
+ catch (error) {
20
+ return formatToolError(error);
21
+ }
22
+ });
23
+ server.tool("workspace_create", "Create a new Fabric workspace", {
24
+ displayName: z.string().describe("Display name for the workspace"),
25
+ description: z.string().optional().describe("Description of the workspace"),
26
+ capacityId: z.string().optional().describe("Capacity ID to assign"),
27
+ }, async ({ displayName, description, capacityId }) => {
28
+ try {
29
+ const body = { displayName };
30
+ if (description)
31
+ body.description = description;
32
+ if (capacityId)
33
+ body.capacityId = capacityId;
34
+ const response = await fabricClient.post("/workspaces", body);
35
+ return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] };
36
+ }
37
+ catch (error) {
38
+ return formatToolError(error);
39
+ }
40
+ });
41
+ server.tool("workspace_update", "Update a workspace's name or description", {
42
+ workspaceId: z.string().describe("The workspace ID"),
43
+ displayName: z.string().optional().describe("New display name"),
44
+ description: z.string().optional().describe("New description"),
45
+ }, async ({ workspaceId, displayName, description }) => {
46
+ try {
47
+ const body = {};
48
+ if (displayName !== undefined)
49
+ body.displayName = displayName;
50
+ if (description !== undefined)
51
+ body.description = description;
52
+ const response = await fabricClient.patch(`/workspaces/${workspaceId}`, body);
53
+ return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] };
54
+ }
55
+ catch (error) {
56
+ return formatToolError(error);
57
+ }
58
+ });
59
+ server.tool("workspace_delete", "Delete a workspace", { workspaceId: z.string().describe("The workspace ID") }, async ({ workspaceId }) => {
60
+ try {
61
+ await fabricClient.delete(`/workspaces/${workspaceId}`);
62
+ return { content: [{ type: "text", text: `Workspace ${workspaceId} deleted successfully` }] };
63
+ }
64
+ catch (error) {
65
+ return formatToolError(error);
66
+ }
67
+ });
68
+ server.tool("workspace_list_items", "List all items in a workspace, optionally filtered by type", {
69
+ workspaceId: z.string().describe("The workspace ID"),
70
+ type: z.string().optional().describe("Filter by item type (e.g., Lakehouse, Notebook, Pipeline)"),
71
+ }, async ({ workspaceId, type }) => {
72
+ try {
73
+ let path = `/workspaces/${workspaceId}/items`;
74
+ if (type)
75
+ path += `?type=${type}`;
76
+ const items = await paginateAll(fabricClient, path);
77
+ return { content: [{ type: "text", text: JSON.stringify(items, null, 2) }] };
78
+ }
79
+ catch (error) {
80
+ return formatToolError(error);
81
+ }
82
+ });
83
+ }
84
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function encodeBase64(content: string): string;
2
+ export declare function decodeBase64(encoded: string): string;
3
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,7 @@
1
+ export function encodeBase64(content) {
2
+ return Buffer.from(content, "utf-8").toString("base64");
3
+ }
4
+ export function decodeBase64(encoded) {
5
+ return Buffer.from(encoded, "base64").toString("utf-8");
6
+ }
7
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface TmdlFile {
2
+ path: string;
3
+ content: string;
4
+ }
5
+ export interface DefinitionPart {
6
+ path: string;
7
+ payload: string;
8
+ payloadType: string;
9
+ }
10
+ export declare function decodeTmdlParts(parts: DefinitionPart[]): TmdlFile[];
11
+ export declare function encodeTmdlParts(files: TmdlFile[]): DefinitionPart[];
12
+ export declare function formatTmdlOutput(files: TmdlFile[]): string;
13
+ //# sourceMappingURL=tmdl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmdl.d.ts","sourceRoot":"","sources":["../../src/utils/tmdl.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAQnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAMnE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,21 @@
1
+ export function decodeTmdlParts(parts) {
2
+ return parts.map((part) => ({
3
+ path: part.path,
4
+ content: part.payloadType === "InlineBase64"
5
+ ? Buffer.from(part.payload, "base64").toString("utf-8")
6
+ : part.payload,
7
+ }));
8
+ }
9
+ export function encodeTmdlParts(files) {
10
+ return files.map((file) => ({
11
+ path: file.path,
12
+ payload: Buffer.from(file.content, "utf-8").toString("base64"),
13
+ payloadType: "InlineBase64",
14
+ }));
15
+ }
16
+ export function formatTmdlOutput(files) {
17
+ return files
18
+ .map((file) => `--- ${file.path} ---\n${file.content}`)
19
+ .join("\n\n");
20
+ }
21
+ //# sourceMappingURL=tmdl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmdl.js","sourceRoot":"","sources":["../../src/utils/tmdl.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EACL,IAAI,CAAC,WAAW,KAAK,cAAc;YACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,OAAO;KACnB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9D,WAAW,EAAE,cAAc;KAC5B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;SACtD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@einlogic/mcp-fabric-api",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for Microsoft Fabric REST APIs — enables data engineers and data analysts to use AI assistants beyond Copilot to build and manage Fabric components",
5
+ "type": "module",
6
+ "main": "build/index.js",
7
+ "bin": {
8
+ "mcp-fabric-api": "build/index.js"
9
+ },
10
+ "files": [
11
+ "build"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "start": "node build/index.js",
16
+ "dev": "tsc --watch",
17
+ "inspect": "npx @modelcontextprotocol/inspector build/index.js",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "dependencies": {
21
+ "@azure/identity": "^4.13.0",
22
+ "@modelcontextprotocol/sdk": "^1.26.0",
23
+ "express": "^4.21.0",
24
+ "zod": "^3.24.0"
25
+ },
26
+ "devDependencies": {
27
+ "@types/express": "^4.17.0",
28
+ "@types/node": "^22.0.0",
29
+ "typescript": "^5.7.0"
30
+ },
31
+ "license": "AGPL-3.0",
32
+ "engines": {
33
+ "node": ">=18.0.0"
34
+ }
35
+ }