@einlogic/mcp-fabric-api 1.3.0 → 2.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.
- package/README.md +74 -47
- package/build/core/workspace-guard.d.ts +1 -1
- package/build/core/workspace-guard.d.ts.map +1 -1
- package/build/core/workspace-guard.js +7 -4
- package/build/core/workspace-guard.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +3 -1
- package/build/server.js.map +1 -1
- package/build/tools/eventstream.d.ts.map +1 -1
- package/build/tools/eventstream.js +18 -11
- package/build/tools/eventstream.js.map +1 -1
- package/build/tools/graphql-api.d.ts.map +1 -1
- package/build/tools/graphql-api.js +18 -10
- package/build/tools/graphql-api.js.map +1 -1
- package/build/tools/lakehouse.d.ts.map +1 -1
- package/build/tools/lakehouse.js +86 -2
- package/build/tools/lakehouse.js.map +1 -1
- package/build/tools/notebook.js +1 -1
- package/build/tools/notebook.js.map +1 -1
- package/build/tools/reflex.d.ts.map +1 -1
- package/build/tools/reflex.js +18 -10
- package/build/tools/reflex.js.map +1 -1
- package/build/tools/report.d.ts.map +1 -1
- package/build/tools/report.js +17 -20
- package/build/tools/report.js.map +1 -1
- package/build/tools/semantic-model.d.ts.map +1 -1
- package/build/tools/semantic-model.js +50 -60
- package/build/tools/semantic-model.js.map +1 -1
- package/build/tools/variable-library.d.ts +5 -0
- package/build/tools/variable-library.d.ts.map +1 -0
- package/build/tools/variable-library.js +155 -0
- package/build/tools/variable-library.js.map +1 -0
- package/build/utils/file-reader.d.ts +2 -0
- package/build/utils/file-reader.d.ts.map +1 -1
- package/build/utils/file-reader.js +19 -2
- package/build/utils/file-reader.js.map +1 -1
- package/build/utils/file-utils.d.ts +11 -0
- package/build/utils/file-utils.d.ts.map +1 -0
- package/build/utils/file-utils.js +84 -0
- package/build/utils/file-utils.js.map +1 -0
- package/package.json +29 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { readFile, writeFile, readdir, mkdir, stat } from "fs/promises";
|
|
2
|
+
import { resolve, relative, extname, dirname, join } from "path";
|
|
3
|
+
export async function readContentFromFile(filePath) {
|
|
4
|
+
const absolutePath = resolve(filePath);
|
|
5
|
+
const fileStat = await stat(absolutePath);
|
|
6
|
+
if (!fileStat.isFile()) {
|
|
7
|
+
throw new Error(`Path is not a file: ${absolutePath}`);
|
|
8
|
+
}
|
|
9
|
+
return readFile(absolutePath, "utf-8");
|
|
10
|
+
}
|
|
11
|
+
export async function readFilesFromDirectory(dirPath, extensions) {
|
|
12
|
+
const absolutePath = resolve(dirPath);
|
|
13
|
+
const dirStat = await stat(absolutePath);
|
|
14
|
+
if (!dirStat.isDirectory()) {
|
|
15
|
+
throw new Error(`Path is not a directory: ${absolutePath}`);
|
|
16
|
+
}
|
|
17
|
+
const entries = [];
|
|
18
|
+
const lowerExtensions = extensions?.map((e) => e.toLowerCase());
|
|
19
|
+
async function walk(dir) {
|
|
20
|
+
const items = await readdir(dir, { withFileTypes: true });
|
|
21
|
+
for (const item of items) {
|
|
22
|
+
const fullPath = resolve(dir, item.name);
|
|
23
|
+
if (item.isDirectory()) {
|
|
24
|
+
await walk(fullPath);
|
|
25
|
+
}
|
|
26
|
+
else if (item.isFile()) {
|
|
27
|
+
if (lowerExtensions && !lowerExtensions.includes(extname(item.name).toLowerCase())) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const relPath = relative(absolutePath, fullPath).replace(/\\/g, "/");
|
|
31
|
+
const content = await readFile(fullPath, "utf-8");
|
|
32
|
+
entries.push({ path: relPath, content });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
await walk(absolutePath);
|
|
37
|
+
if (entries.length === 0) {
|
|
38
|
+
const filterMsg = extensions ? ` matching extensions: ${extensions.join(", ")}` : "";
|
|
39
|
+
throw new Error(`No files found in directory: ${absolutePath}${filterMsg}`);
|
|
40
|
+
}
|
|
41
|
+
return entries;
|
|
42
|
+
}
|
|
43
|
+
export async function writeContentToFile(filePath, content) {
|
|
44
|
+
const absolutePath = resolve(filePath);
|
|
45
|
+
await mkdir(dirname(absolutePath), { recursive: true });
|
|
46
|
+
await writeFile(absolutePath, content, "utf-8");
|
|
47
|
+
return absolutePath;
|
|
48
|
+
}
|
|
49
|
+
export async function writeFilesToDirectory(dirPath, files) {
|
|
50
|
+
const absolutePath = resolve(dirPath);
|
|
51
|
+
const written = [];
|
|
52
|
+
for (const file of files) {
|
|
53
|
+
const fullPath = join(absolutePath, file.path);
|
|
54
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
55
|
+
await writeFile(fullPath, file.content, "utf-8");
|
|
56
|
+
written.push(file.path);
|
|
57
|
+
}
|
|
58
|
+
return written;
|
|
59
|
+
}
|
|
60
|
+
export async function resolveContentOrFile(content, filePath, fieldName) {
|
|
61
|
+
if (content && filePath) {
|
|
62
|
+
throw new Error(`Provide either '${fieldName}' or '${fieldName}FilePath', not both`);
|
|
63
|
+
}
|
|
64
|
+
if (filePath) {
|
|
65
|
+
return readContentFromFile(filePath);
|
|
66
|
+
}
|
|
67
|
+
if (content) {
|
|
68
|
+
return content;
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Either '${fieldName}' or '${fieldName}FilePath' must be provided`);
|
|
71
|
+
}
|
|
72
|
+
export async function resolveFilesOrDirectory(files, dirPath, extensions) {
|
|
73
|
+
if (files && files.length > 0 && dirPath) {
|
|
74
|
+
throw new Error("Provide either 'files' or a directory path, not both");
|
|
75
|
+
}
|
|
76
|
+
if (dirPath) {
|
|
77
|
+
return readFilesFromDirectory(dirPath, extensions);
|
|
78
|
+
}
|
|
79
|
+
if (files && files.length > 0) {
|
|
80
|
+
return files;
|
|
81
|
+
}
|
|
82
|
+
throw new Error("Either 'files' or a directory path must be provided");
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@einlogic/mcp-fabric-api",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
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
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -29,6 +29,34 @@
|
|
|
29
29
|
"@types/node": "^22.0.0",
|
|
30
30
|
"typescript": "^5.7.0"
|
|
31
31
|
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"mcp",
|
|
34
|
+
"mcp-server",
|
|
35
|
+
"model-context-protocol",
|
|
36
|
+
"microsoft-fabric",
|
|
37
|
+
"fabric",
|
|
38
|
+
"power-bi",
|
|
39
|
+
"powerbi",
|
|
40
|
+
"semantic-model",
|
|
41
|
+
"lakehouse",
|
|
42
|
+
"warehouse",
|
|
43
|
+
"pipeline",
|
|
44
|
+
"dataflow",
|
|
45
|
+
"notebook",
|
|
46
|
+
"eventhouse",
|
|
47
|
+
"eventstream",
|
|
48
|
+
"graphql",
|
|
49
|
+
"ai",
|
|
50
|
+
"claude",
|
|
51
|
+
"llm",
|
|
52
|
+
"data-engineering",
|
|
53
|
+
"data-analytics",
|
|
54
|
+
"azure",
|
|
55
|
+
"onelake",
|
|
56
|
+
"tmdl",
|
|
57
|
+
"dax",
|
|
58
|
+
"kql"
|
|
59
|
+
],
|
|
32
60
|
"license": "AGPL-3.0",
|
|
33
61
|
"engines": {
|
|
34
62
|
"node": ">=18.0.0"
|