
Research
/Security News
Popular npm Packages in the keyv and Cacheable Namespaces Compromised in Active Supply Chain Attack
Popular npm packages keyv and cacheable compromised.
fo-semantic-mcp
Advanced tools
Model Context Protocol server providing semantic search over Dynamics 365 F&O artifacts.
🚀 Model Context Protocol server for Microsoft Dynamics 365 Finance & Operations development
Supercharge your AI coding assistant with deep F&O knowledge. This MCP server enables AI agents in Cursor IDE, Claude Desktop, and VS Code to search 50,000+ F&O artifacts, read local source code, and find relevant examples for your development tasks.
🤖 What it provides: When building F&O extensions, your AI assistant can:
✅ Semantic Search - Find F&O artifacts using natural language ✅ 166,000+ Artifacts - Tables, Forms, Classes, EDTs, Enums, Data Entities, Queries, Security, Menu Items ✅ Detail Lookup - Get full structural data: form control trees, table fields/relations/indexes, entity mappings, security chains ✅ Full Cross-References - Complete uses/usedBy lists for every artifact (untruncated) ✅ AI Descriptions - Understand artifact purpose without reading XML ✅ Local File Access - Read actual F&O XML files for complete analysis ✅ Rich Metadata - Business domains, modules, configuration keys, usage context ✅ Multi-Platform - Works on Windows, macOS, Linux with Node.js ✅ MCP Compatible - Works with Cursor IDE, Claude Desktop, VS Code, Claude Code
search_FO_artifactsSearch Microsoft D365 F&O standard artifacts semantically. Returns artifact metadata including:
fo-development-assistant (Claude Desktop only)A complete 6-step development workflow for F&O customizations:
Note: The prompt workflow is user-invoked and works in Claude Desktop. In Cursor IDE, you can guide the AI through similar steps manually.
Ensure you have Node.js installed:
Get your API key from: https://www.xplusplus.ai/
Visit our website to view available plans and pricing.
Choose the installation method that works best for you:
No installation needed! Your MCP client will automatically fetch the latest version when started.
Cursor IDE (~/.cursor/mcp.json or %USERPROFILE%\.cursor\mcp.json):
{
"mcpServers": {
"fo-semantic-mcp": {
"command": "npx",
"args": ["-y", "fo-semantic-mcp"],
"env": {
"FOINDEX_API_KEY": "your_api_key_here",
"FO_LOCAL_ASSETS_PATH": "C:\\Users\\YourName\\AppData\\Local\\Microsoft\\Dynamics365\\10.0.xxxx\\PackagesLocalDirectory"
}
}
}
}
Claude Desktop (~/AppData/Roaming/Claude/claude_desktop_config.json on Windows):
{
"mcpServers": {
"fo-semantic-mcp": {
"command": "npx",
"args": ["-y", "fo-semantic-mcp"],
"env": {
"FOINDEX_API_KEY": "your_api_key_here",
"FO_LOCAL_ASSETS_PATH": "C:\\Users\\YourName\\AppData\\Local\\Microsoft\\Dynamics365\\10.0.xxxx\\PackagesLocalDirectory"
}
}
}
}
VS Code (similar to Cursor IDE configuration above)
Benefits of npx:
macOS/Linux users: Use forward slashes in paths:
{
"env": {
"FOINDEX_API_KEY": "your_api_key_here",
"FO_LOCAL_ASSETS_PATH": "/Users/yourname/.local/Microsoft/Dynamics365/10.0.xxxx/PackagesLocalDirectory"
}
}
Install the package globally on your system:
npm install -g fo-semantic-mcp
Then configure your MCP client:
Cursor IDE / Claude Desktop / VS Code:
{
"mcpServers": {
"fo-semantic-mcp": {
"command": "fo-semantic-mcp",
"env": {
"FOINDEX_API_KEY": "your_api_key_here",
"FO_LOCAL_ASSETS_PATH": "C:\\Users\\YourName\\AppData\\Local\\Microsoft\\Dynamics365\\10.0.xxxx\\PackagesLocalDirectory"
}
}
}
}
When to use global installation:
To update:
npm update -g fo-semantic-mcp
Download and run from a local directory:
C:\tools\fo-semantic-mcp)npm install in the extracted folderThen configure using the full path:
{
"mcpServers": {
"fo-semantic-mcp": {
"command": "node",
"args": ["C:\\tools\\fo-semantic-mcp\\dist\\server.js"],
"env": {
"FOINDEX_API_KEY": "your_api_key_here",
"FO_LOCAL_ASSETS_PATH": "C:\\Users\\YourName\\AppData\\Local\\Microsoft\\Dynamics365\\10.0.xxxx\\PackagesLocalDirectory"
}
}
}
}
macOS/Linux paths use forward slashes: /path/to/fo-semantic-mcp/dist/server.js
When to use manual installation:
Completely restart Cursor IDE, Claude Desktop, or VS Code to load the MCP server.
| Variable | Description | Default | Required |
|---|---|---|---|
FOINDEX_API_KEY | Your API key from xplusplus.ai | - | ✅ Yes |
FO_LOCAL_ASSETS_PATH | Path to F&O PackagesLocalDirectory | - | Recommended |
FO_SEARCH_DEFAULT_THRESHOLD | Relevance filter (0-1) | No threshold | No |
FO_SEARCH_TIMEOUT_MS | Request timeout (milliseconds) | 10000 | No |
FO_SEARCH_DEFAULT_LIMIT | Default result limit | 10 | No |
FO_SEARCH_MAX_LIMIT | Maximum result limit | 50 | No |
The FO_LOCAL_ASSETS_PATH enables reading actual F&O XML source files. This is optional but highly recommended for full analysis capabilities.
Windows:
C:\Users\[YourName]\AppData\Local\Microsoft\Dynamics365\[version]\PackagesLocalDirectory
PowerShell command to find it:
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Dynamics365\" -Recurse -Filter "PackagesLocalDirectory" | Select-Object FullName
macOS/Linux: Depends on your F&O development setup. Common locations:
~/.local/Microsoft/Dynamics365/[version]/PackagesLocalDirectory
~/Library/Application Support/Microsoft/Dynamics365/[version]/PackagesLocalDirectory
Note: If FO_LOCAL_ASSETS_PATH is not configured, the server will still work for semantic search but won't be able to read local XML files.
"Find customer tables in D365"
"Show me sales order forms"
"Search for pricing calculation classes"
"Find inventory transaction data entities"
You can filter by artifact type for more focused results:
"Find all tables related to inventory management"
"Show me forms that use the CustTable datasource"
"Search for classes that implement pricing logic"
"Find data entities for financial reporting"
Use the fo-development-assistant prompt for guided F&O development workflows. Simply type /fo-development-assistant to activate the structured workflow.
Ask your AI assistant to search F&O artifacts, then guide it through a workflow:
See it in action! Check out our Real-Life Demo showing how an AI agent uses the MCP server to complete a full D365 F&O customization task - from natural language request to working code.
Task: "Create a new field 'External name' on vendor group table and add it to form general tab"
What you'll see:
Symptom: MCP server appears in your client but tools don't show up
Solutions:
FOINDEX_API_KEY is set correctly (no quotes in JSON, no extra spaces)npx fo-semantic-mcp directly in terminal to verify installationSymptom: "Request timeout" or "Connection refused" errors
Solutions:
https://search.xplusplus.ai"FO_SEARCH_TIMEOUT_MS": "30000" (30 seconds)Symptom: Can search artifacts but can't read XML source files
Solutions:
FO_LOCAL_ASSETS_PATH points to correct directory"C:\\Users\\..."Symptom: "npx: command not found" or npm errors
Solutions:
node --versionnpm --versionnpm install -g npm@latestTo check your installed version:
# For global installation
npm list -g fo-semantic-mcp
# For npx (shows latest available)
npm view fo-semantic-mcp version
To force specific version with npx:
{
"command": "npx",
"args": ["-y", "fo-semantic-mcp@2.0.7"]
}
Search by exact name + artifact type to get complete structural metadata beyond what semantic search returns.
search_fo_artifacts("SalesTable", filters: { foName: "SalesTable" }, artifact_types: ["Table"])
search_fo_artifacts("SalesTable", filters: { foName: "SalesTable" }, artifact_types: ["Form"])
What you get per artifact type:
| Type | Structural Data |
|---|---|
| Table | All fields (with EDT, type, mandatory), FK relations with field-level constraints, indexes with fields, table group, primary index |
| Form | Complete control tree (see below), data sources with table bindings, form pattern |
| Data Entity | Field-to-source mappings, data sources, staging table |
| Query | Hierarchical data source joins, ranges, order by |
| EDT | Base type, extends chain, reference table, string size |
| Enum | All values with integer values and labels |
| Security | Privilege entry points, duty-to-privilege chains, role-to-duty chains |
| Class | Extends/extensionOf, event handlers, method signatures |
| Menu Item | Target object, label, config key |
| All types | Full cross-references — complete uses and usedBy lists (no longer truncated) |
Detail lookup on a Form returns the complete UI control hierarchy in a compact, readable text format:
0 Design [Design]
1 ActionPaneHeader [ActionPane]
2 SalesOrder [ActionPaneTab]
3 NewGroup [ButtonGroup]
3 SalesOrderProcess [ButtonGroup]
1 NavigationList [Group]
2 QuickFilterControl [Control]
1 MainTab [Tab]
2 TabPageDetails [TabPage]
3 HeaderView [Group]
4 TabHeaderGeneral [TabPage]
5 GroupCustomer [Group]
Use this to understand form layout, find the right control group for extensions, and identify where to add new controls.
Every detail lookup now includes complete uses and usedBy arrays — the full list of artifacts that reference or are referenced by the target. Previously these were truncated for large artifacts like SalesTable (19,000+ references).
npm install -g or npxThis software is licensed for commercial use. See LICENSE file for details.
Built by the team behind FO-Index - the comprehensive knowledge base for Microsoft Dynamics 365 Finance & Operations development.
Our Mission: Accelerate D365 F&O development by making Microsoft's vast standard artifact library searchable and understandable through AI.
Ready to enhance your F&O development? Get your API key and start today! 🎯
FAQs
Model Context Protocol server providing semantic search over Dynamics 365 F&O artifacts.
We found that fo-semantic-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.

Security News
/Company News
Socket has joined the new Composer and Packagist sponsorship program as a launch sponsor, supporting the team that keeps PHP's package ecosystem secure.