Skip to main content
Glama

D365 F&O MCP Server

26 AI tools that know every X++ class, table, form, and EDT in your D365FO codebase

License: MIT Node.js TypeScript Tests

Grounded AI development for Dynamics 365 Finance & Operations — works with GitHub Copilot and Claude Code

Install in VS Code Install in VS Code Insiders Add to Cursor

One-click install connects to an already-deployed server — VS Code asks for the URL, Cursor installs a placeholder to edit. Visual Studio & Claude Code: see Quick Start.


Why

AI assistants excel at C#, Python, and JavaScript. X++ is different: your D365FO codebase is private, deeply customized, and invisible to every model — so AI confidently generates code that doesn't compile.

This server pre-indexes your entire D365FO installation (580 000+ symbols across standard, ISV, and custom models) and exposes it as 26 specialized MCP tools. Every signature, every CoC wrapper, every label, every form pattern — verified against your real metadata before the AI writes a single line.

Solution Architecture

Task

Without this server

With this server

Method signatures

Guessed → compile errors

Exact, from your codebase

Existing CoC wrappers

Manual AOT search

extension_info(mode="coc") in < 50 ms

New forms

Hand-written XML, broken patterns

Cloned from reference forms, validated against the pattern catalog

Labels

Hardcoded strings

Right @SYS/@MODULE key found instantly

Security chains

Hours of manual tracing

Role → Duty → Privilege → Entry Point in one call

Generated code

Hallucinated fields and types

Every reference proven against the index, gated before write


Related MCP server: MCP X++ Server

Capabilities

Feature

Description

🔍 Full-codebase intelligence

580K+ symbols indexed: classes, tables, forms, EDTs, enums, labels (20M+ rows), security artifacts — FTS5 search in < 10 ms

🛡️ Grounded generation

Fail-closed gates: prepare issues grounding tokens, validate_code(mode="references") proves every identifier, validate_code(mode="syntax") enforces best practices — hallucinated code never reaches disk

🧩 Form pattern engine

Complete catalog of Microsoft form patterns and sub-patterns: recommends the right pattern, clones reference forms with datasource re-binding, deterministically expands patterns that have no reference form, auto-repairs a form's missing required controls, validates structure and blocks invalid writes

✍️ Safe metadata writes

C# bridge uses Microsoft's own IMetadataProvider — no string-replacement XML corruption, automatic .rnrproj registration, one-call undo

🏗️ SDLC integration

MSBuild compilation with structured diagnostics, DB sync, xppbp best practices, SysTestRunner — all from chat

📐 X++ knowledge base

Queryable rules: select grammar, CoC authoring, financial dimensions, the posting engine (LedgerVoucher), number sequences, SysExtension, Electronic Reporting, AX2012→D365FO migration — prevents deprecated APIs

Pattern-grounded form development

Forms are the hardest artifact to generate correctly — each pattern dictates required containers, ordering, and allowed sub-patterns. The form pattern engine makes it a guided pipeline:

flowchart LR
    A["object_patterns<br/>(domain=form, action=analyze)"] --> B["object_patterns<br/>(domain=form, action=spec)"]
    B --> C["generate_object<br/>objectType=form, cloneFrom"]
    C --> D["object_patterns<br/>(domain=form, action=validate) FP001–FP010"]
    D -->|clean| E["d365fo_file<br/>(action=create) write + project"]
    D -->|errors| C

Structural violations (wrong order, missing container, disallowed control) block the write — recommendations only warn. Mined pattern statistics from your own environment ground every suggestion in reality.


Quick Start

Pick your path:

Path

Who

Install effort

A — Azure client

Team member, server already deployed

.mcp.json only — 2 minutes

B — Hybrid (recommended for teams)

Azure search + local writes on your VM

Clone + build, no indexing

C/E — Local

Single developer, everything on the VM

Clone + build + index (~15 min)

Full walkthrough with all scenarios: docs/QUICK_START.md

After cloning and npm install, the management CLI walks you through everything else — scenario selection, C# bridge build, .env configuration, index build — and prints the .mcp.json block to paste:

git clone https://github.com/dynamics365ninja/d365fo-mcp-server.git K:\d365fo-mcp-server
cd K:\d365fo-mcp-server
npm install
npm run setup        # first-time setup wizard
npm run doctor       # health check — verifies Node, build, index, bridge

Day-to-day management runs through the same CLI (npx d365fo-mcp or npm run cli --): start, update, index, and instance add/list/run/rebuild/upgrade for multi-instance setups. Every command works non-interactively with arguments, or asks with predefined choices when run bare.

Manual setup

# Local / hybrid install (on the D365FO VM)
git clone https://github.com/dynamics365ninja/d365fo-mcp-server.git K:\d365fo-mcp-server
cd K:\d365fo-mcp-server
npm install
cd bridge\D365MetadataBridge; dotnet build -c Release; cd ..\..   # C# bridge — required for writes
npm run build

# Local only — build the metadata index (skip for hybrid)
copy .env.example .env            # set PACKAGES_PATH, CUSTOM_MODELS
npm run extract-metadata
npm run build-database

UDE / Power Platform Tools? Run npm run select-config instead of editing PACKAGES_PATH.

Connect GitHub Copilot

  1. Enable MCP servers in Copilot at github.com/settings/copilot/features

  2. Visual Studio → Tools → Options → GitHub → CopilotEnable MCP server integration in agent mode

  3. Create %USERPROFILE%\.mcp.json:

{
  "servers": {
    "d365fo-azure": { "url": "https://your-server.azurewebsites.net/mcp/" },
    "d365fo-local": {
      "command": "node",
      "args": ["K:\\d365fo-mcp-server\\dist\\index.js"],
      "env": {
        "MCP_SERVER_MODE": "write-only",
        "D365FO_SOLUTIONS_PATH": "K:\\repos\\MySolution\\projects",
        "D365FO_WORKSPACE_PATH": "K:\\AosService\\PackagesLocalDirectory\\YourPackage\\YourModel"
      }
    }
  }
}
  1. Copy the instruction files into a parent folder of your solutions (one copy covers everything beneath it):

Copy-Item -Path ".github" -Destination "C:\source\repos\" -Recurse

All options: docs/MCP_CONFIG.md

Connect Claude Code

claude mcp add-json --scope user d365fo-mcp-tools '{"type":"http","url":"https://your-server.azurewebsites.net/mcp/","alwaysLoad":true}'
Copy-Item "K:\d365fo-mcp-server\CLAUDE.template.md" "C:\source\repos\CLAUDE.md"

Stdio variant and troubleshooting: docs/CLAUDE_CODE_SETUP.md

Verify

Open the AI chat (Copilot Agent Mode / Claude Code) and ask:

What tables contain "CustAccount" field?

A search tool call returning results from your codebase = you're connected.


Azure Deployment

One shared instance for the whole team — the metadata index lives in Blob Storage and downloads automatically on startup.

Deploy to Azure

Deployment guide: docs/SETUP_AZURE.md · CI/CD automation: docs/PIPELINES.md


Documentation

License

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
17hResponse time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynamics365ninja/d365fo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server