@microsoft/fabric-mcp-darwin-x64 0.0.0-beta.1
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/LICENSE +21 -0
- package/NOTICE.txt +15032 -0
- package/README.md +179 -0
- package/dist/fabmcp +0 -0
- package/index.js +77 -0
- package/package.json +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# <img height="36" width="36" src="https://learn.microsoft.com/fabric/media/fabric-icon.png" alt="Microsoft Fabric Logo" /> Microsoft Fabric MCP Server NPM Package
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
A local, AI-friendly Model Context Protocol (MCP) server that packages Microsoft Fabric's OpenAPI specifications, schema definitions, examples, and curated guidance into a single context layer for AI agents and developer tools.
|
|
6
|
+
|
|
7
|
+
Why this project?
|
|
8
|
+
- Provide a reliable, local-first source of Fabric API context for AI assistants and code generation tools.
|
|
9
|
+
- Reduce the risk of leaking production credentials while enabling rich, example-driven development.
|
|
10
|
+
- Make Fabric API discovery, schema lookup, and best-practice retrieval reproducible and scriptable.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Table of Contents
|
|
15
|
+
- [What Can You Do?](#what-can-you-do)
|
|
16
|
+
- [Getting Started](#getting-started)
|
|
17
|
+
- [Available Tools](#available-tools)
|
|
18
|
+
- [Development and Contributing](#development-and-contributing)
|
|
19
|
+
- [Support](#support)
|
|
20
|
+
- [License](#license)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# What Can You Do?
|
|
25
|
+
|
|
26
|
+
The Fabric MCP Server unlocks practical developer workflows by providing local access to Fabric API context:
|
|
27
|
+
|
|
28
|
+
- Generate or scaffold Fabric resource definitions (Lakehouse, data pipelines, notebooks, reports).
|
|
29
|
+
- Retrieve official OpenAPI specs and JSON schema for validation and code generation.
|
|
30
|
+
- Get example request/response payloads to accelerate integration.
|
|
31
|
+
- Query curated best-practice guidance (pagination, LROs, authentication patterns).
|
|
32
|
+
|
|
33
|
+
<details>
|
|
34
|
+
<summary>Example prompts</summary>
|
|
35
|
+
|
|
36
|
+
- "Create a Lakehouse resource definition with a schema that enforces a string column and a datetime column."
|
|
37
|
+
- "Show me the OpenAPI operations for 'notebook' and give a sample creation body."
|
|
38
|
+
- "List recommended retry/backoff behavior for Fabric APIs when rate-limited."
|
|
39
|
+
- "What are the available Fabric workload types I can work with?"
|
|
40
|
+
- "Generate a data pipeline configuration with sample data sources."
|
|
41
|
+
- "Show me best practices for authenticating with Fabric APIs."
|
|
42
|
+
|
|
43
|
+
</details>
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# Getting Started
|
|
48
|
+
|
|
49
|
+
## Prerequisites
|
|
50
|
+
- .NET 9.x SDK is recommended. Check `global.json` at the repository root for any pinned SDK version.
|
|
51
|
+
- If `global.json` pins a preview SDK not installed locally, either install the requested preview SDK or update `global.json` for local development.
|
|
52
|
+
- An MCP-compatible client (VS Code with an MCP extension, Claude Desktop, etc.).
|
|
53
|
+
|
|
54
|
+
## Installation Steps
|
|
55
|
+
|
|
56
|
+
1. **Clone the repository:**
|
|
57
|
+
```bash
|
|
58
|
+
git clone https://github.com/microsoft/mcp.git
|
|
59
|
+
cd mcp
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
2. **Build the project:**
|
|
63
|
+
```bash
|
|
64
|
+
dotnet build servers/Fabric.Mcp.Server/src/Fabric.Mcp.Server.csproj --configuration Release
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
3. **Locate your executable:**
|
|
68
|
+
The executable `fabmcp` will be created at:
|
|
69
|
+
```
|
|
70
|
+
servers/Fabric.Mcp.Server/src/bin/Release/fabmcp
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
> **Platform Notes:**
|
|
74
|
+
> - **macOS/Linux**: Use the path as-is: `/path/to/repo/servers/Fabric.Mcp.Server/src/bin/Release/fabmcp`
|
|
75
|
+
> - **Windows**: Use backslashes and may need `.exe` extension: `C:\path\to\repo\servers\Fabric.Mcp.Server\src\bin\Release\fabmcp`
|
|
76
|
+
> - For published builds, executables will be in platform-specific subdirectories with `.exe` extension on Windows
|
|
77
|
+
|
|
78
|
+
4. **Configure your MCP client:**
|
|
79
|
+
|
|
80
|
+
Example configuration for VS Code (.vscode/mcp.json):
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"servers": {
|
|
84
|
+
"Microsoft Fabric MCP": {
|
|
85
|
+
"command": "/path/to/executable",
|
|
86
|
+
"args": ["server", "start", "--mode", "all"]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> **Notes:**
|
|
93
|
+
> - Replace `/path/to/executable` with the actual path from step 3
|
|
94
|
+
> - The `--mode all` argument enables all available tools
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## Common Issues
|
|
98
|
+
- **SDK mismatch:** If `dotnet` outputs an SDK resolution error, inspect `global.json` and align local SDKs or update the file.
|
|
99
|
+
- **Path issues:** Always use absolute paths in MCP configuration to avoid path resolution problems.
|
|
100
|
+
|
|
101
|
+
<!-- insert-section: vsix {{## Installation
|
|
102
|
+
|
|
103
|
+
The Fabric MCP Server extension is already installed! Simply start the server to begin using it.
|
|
104
|
+
|
|
105
|
+
### Starting the Server
|
|
106
|
+
|
|
107
|
+
1. Open the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`)
|
|
108
|
+
2. Run **MCP: List Servers**
|
|
109
|
+
3. Find **Fabric MCP Server** in the list and click the **Start** button
|
|
110
|
+
|
|
111
|
+
Once started, the Fabric MCP tools will be available in GitHub Copilot Chat.
|
|
112
|
+
|
|
113
|
+
### Configuration (Optional)
|
|
114
|
+
|
|
115
|
+
You can customize the server behavior in VS Code settings (search for "Fabric MCP"):
|
|
116
|
+
|
|
117
|
+
- **Server Mode**: Control how tools are exposed (`all` by default)
|
|
118
|
+
- **Server Arguments**: Add custom arguments to the server startup
|
|
119
|
+
|
|
120
|
+
Changes require restarting the MCP server from the **MCP: List Servers** view.
|
|
121
|
+
}} -->
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
# Available Tools
|
|
126
|
+
Use the server's CLI to query embedded data and examples. Commands are organized under a `publicapis` command group in code.
|
|
127
|
+
|
|
128
|
+
| Command | Purpose | Implementation |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| `publicapis list` | List supported workload names (e.g. notebook, report) | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/PublicApis/ListWorkloadsCommand.cs |
|
|
131
|
+
| `publicapis get --workload-type <workload>` | Fetch OpenAPI & examples for a workload | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/PublicApis/GetWorkloadApisCommand.cs |
|
|
132
|
+
| `publicapis platform get` | Retrieve platform-level API specs | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/PublicApis/GetPlatformApisCommand.cs |
|
|
133
|
+
| `publicapis bestpractices get --workload-type <workload>` | Retrieve best-practice guidance for a workload | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/BestPractices/GetBestPracticesCommand.cs |
|
|
134
|
+
| `publicapis examples get --workload-type <workload>` | Retrieve example request/response files for a workload | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/BestPractices/GetExamplesCommand.cs |
|
|
135
|
+
| `publicapis itemdefinition get --workload-type <workload>` | Get JSON schema definitions for a workload | tools/Fabric.Mcp.Tools.PublicApi/src/Commands/BestPractices/GetWorkloadDefinitionCommand.cs |
|
|
136
|
+
|
|
137
|
+
> Always verify the available commands in your build via `--help` before scripting against them; command names and availability are code-driven and may change between releases.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
# Development and Contributing
|
|
142
|
+
|
|
143
|
+
We welcome contributions. Please follow the repository's contribution guidelines and the checklist below when preparing a PR.
|
|
144
|
+
|
|
145
|
+
**Contributor checklist**
|
|
146
|
+
- Create a focused branch for your changes.
|
|
147
|
+
- Run a local build and unit tests for affected projects.
|
|
148
|
+
- Update `CHANGELOG.md` for user-visible changes.
|
|
149
|
+
- Run `eng` validation scripts where applicable (spelling, linters).
|
|
150
|
+
- Provide a clear PR description and link relevant issues.
|
|
151
|
+
|
|
152
|
+
See [CONTRIBUTING](https://github.com/microsoft/mcp/blob/main/CONTRIBUTING.md) for full guidance.
|
|
153
|
+
|
|
154
|
+
<!-- insert-section: vsix {{Interested in contributing to the Fabric MCP Server? Visit the [GitHub repository](https://github.com/microsoft/mcp) to get started.
|
|
155
|
+
|
|
156
|
+
See [CONTRIBUTING](https://github.com/microsoft/mcp/blob/main/CONTRIBUTING.md) for full contribution guidelines.
|
|
157
|
+
}} -->
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
# Support
|
|
162
|
+
If you encounter issues:
|
|
163
|
+
1. Search existing issues.
|
|
164
|
+
2. If none match, file a new issue with:
|
|
165
|
+
- OS and `.NET` SDK version (`dotnet --info`).
|
|
166
|
+
- The command used to start the server.
|
|
167
|
+
- Server logs and MCP client config (redact secrets).
|
|
168
|
+
- Steps to reproduce.
|
|
169
|
+
<!-- insert-section: vsix {{ - Your OS and VS Code version
|
|
170
|
+
- Server logs from the **MCP: List Servers** view
|
|
171
|
+
- Steps to reproduce the issue
|
|
172
|
+
}} -->
|
|
173
|
+
|
|
174
|
+
For troubleshooting steps, see [TROUBLESHOOTING](https://github.com/microsoft/mcp/blob/main/servers/Fabric.Mcp.Server/TROUBLESHOOTING.md).
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
# License
|
|
179
|
+
This project is licensed under the MIT License — see the [LICENSE](https://github.com/microsoft/mcp/blob/main/LICENSE) file for details.
|
package/dist/fabmcp
ADDED
|
Binary file
|
package/index.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const path = require('path')
|
|
4
|
+
const fs = require('fs')
|
|
5
|
+
const childProcess = require('child_process')
|
|
6
|
+
|
|
7
|
+
// Check if DEBUG environment variable is set
|
|
8
|
+
const isDebugMode = process.env.DEBUG && (
|
|
9
|
+
process.env.DEBUG.toLowerCase() === 'true' ||
|
|
10
|
+
process.env.DEBUG === '*'
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
// Helper function for debug logging
|
|
14
|
+
function debugLog(...args) {
|
|
15
|
+
if (isDebugMode) {
|
|
16
|
+
console.error(...args)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Run the platform-specific executable with the given arguments
|
|
22
|
+
* @param {string[]} args Arguments to pass to the executable
|
|
23
|
+
* @returns {Promise<number>} Returns a Promise that resolves to the exit code
|
|
24
|
+
*/
|
|
25
|
+
function runExecutable(args = []) {
|
|
26
|
+
debugLog('\nPlatform package starting')
|
|
27
|
+
debugLog('All args:')
|
|
28
|
+
args.forEach((val, index) => {
|
|
29
|
+
debugLog(`${index}: ${val}`)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
const packageJson = require('./package.json')
|
|
34
|
+
const execName = Object.values(packageJson.bin)[0]
|
|
35
|
+
debugLog('Found executable in package.json:', execName)
|
|
36
|
+
|
|
37
|
+
// The platform-specific executable should be in the same folder
|
|
38
|
+
const execPath = path.join(__dirname, execName)
|
|
39
|
+
debugLog('Executable path:', execPath)
|
|
40
|
+
|
|
41
|
+
if (!fs.existsSync(execPath)) {
|
|
42
|
+
console.error(`Executable "${execPath}" not found.`)
|
|
43
|
+
return Promise.resolve(1)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
debugLog(`Starting ${execPath}`) // Only logs in debug mode
|
|
47
|
+
|
|
48
|
+
const child = childProcess.spawn(execPath, args, {
|
|
49
|
+
stdio: 'inherit',
|
|
50
|
+
shell: false
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
child.on('error', (err) => {
|
|
55
|
+
console.error(`Error executing package: ${err.message}`)
|
|
56
|
+
resolve(1)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
child.on('exit', (code) => {
|
|
60
|
+
resolve(code || 0)
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
} catch (err) {
|
|
64
|
+
console.error(`Error running executable: ${err.message}`)
|
|
65
|
+
return Promise.resolve(1)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Check if this file is being run directly
|
|
70
|
+
if (require.main === module) {
|
|
71
|
+
// Run the executable with command line args and exit with its code
|
|
72
|
+
runExecutable(process.argv.slice(2))
|
|
73
|
+
.then(code => process.exit(code))
|
|
74
|
+
} else {
|
|
75
|
+
// Export the function for consumers to use
|
|
76
|
+
module.exports = { runExecutable }
|
|
77
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@microsoft/fabric-mcp-darwin-x64",
|
|
3
|
+
"version": "0.0.0-beta.1",
|
|
4
|
+
"description": "Microsoft Fabric MCP Server - Model Context Protocol implementation for Fabric, for darwin on x64",
|
|
5
|
+
"author": "Microsoft",
|
|
6
|
+
"homepage": "https://github.com/Microsoft/mcp/blob/main/servers/Fabric.Mcp.Server#readme",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"fabric",
|
|
10
|
+
"mcp",
|
|
11
|
+
"model-context-protocol"
|
|
12
|
+
],
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/microsoft/mcp/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/microsoft/mcp.git"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20.0.0"
|
|
22
|
+
},
|
|
23
|
+
"main": "./index.js",
|
|
24
|
+
"bin": {
|
|
25
|
+
"fabmcp-darwin-x64": "./dist/fabmcp"
|
|
26
|
+
},
|
|
27
|
+
"os": [
|
|
28
|
+
"darwin"
|
|
29
|
+
],
|
|
30
|
+
"cpu": [
|
|
31
|
+
"x64"
|
|
32
|
+
]
|
|
33
|
+
}
|