fno-intelligence-engine
Enables AI coding assistants to ground on real D365 F&O AOT metadata locally and offline, preventing hallucinated X++ field names and Chain of Command signatures.
README
D365 F&O Developer Intelligence Engine
A local, offline MCP (Model Context Protocol) server that grounds AI coding assistants (Cursor, Claude Code, GitHub Copilot) on real Dynamics 365 Finance & Operations AOT metadata — so they stop hallucinating field names, method signatures, and Chain of Command (CoC) wrappers when generating X++ code.
Status: early build, Part 1 (metadata ingestion) in progress. Not yet a working MCP server. See Project Status below.
The problem
D365 F&O stores its entire application model (tables, classes, forms,
extended data types) as XML under PackagesLocalDirectory — often
500,000+ objects per environment. AI coding assistants have never seen
this XML; they only know generic X++ syntax from training. Ask one to
extend a table or write a Chain of Command wrapper, and it will
confidently reference fields and methods that don't exist in your
environment. This isn't a prompting problem — the AI is missing data,
not instructions.
The approach
- Ingestion (this repo, in progress) — parse raw AxTable/AxClass XML
into structured, correct JSON using
lxml, with regex extraction for Chain of Command patterns embedded in X++ source text. - Indexing (planned) — load parsed metadata into SQLite + FTS5 for sub-10ms local lookups.
- Exposure (planned) — expose the index to AI agents as MCP tools
(
get_table_schema,find_coc_methods, etc.) over stdio. - Advanced modules (planned) — a pattern-based X++ best-practices linter, then a cross-model dependency graph.
What's actually built right now
schema/table_schema.json— JSON Schema for parsed AxTable metadata, validated against a realVendTranstable exportschema/class_schema.json— JSON Schema for parsed AxClass / Chain of Command metadata. Not yet validated against a full real class file (see file header for details)parse_table.py— working parser: AxTable XML → schema-conformant JSONparse_class.py— regex-based CoC extractor. Written but not yet run against real class bytes — treat every regex here as unprovenvalidate.py— validates parser output against the JSON Schema
Project status
This project is a work in progress, built as a learning exercise while studying D365 F&O development. Some concrete facts worth stating plainly:
- A mature, actively maintained open-source project already solves this
problem at a larger scope: dynamics365ninja/d365fo-mcp-server
(26 MCP tools, live environment connection, form pattern engine, safe
metadata writes via Microsoft's
IMetadataProvider). This repo does not claim to improve on it or compete with it. - This project differs in scope and design, not necessarily in quality: Python instead of TypeScript, read-only and built against static AOT XML exports rather than a live environment connection, and currently limited to the ingestion layer only.
- The value of this project, honestly stated, is in understanding the problem and the parsing/indexing approach deeply enough to explain the design decisions — not in being first or unique.
Requirements
- Python 3.10+
lxmljsonschema(for schema validation during development)
pip install lxml jsonschema
Fixtures
Fixtures are AOT XML exports from a local, offline Hyper-V VM running
Microsoft's standard USMF/DAT demo data, plus a custom model built from
scratch with no third-party or organizational IP. See
fixtures/tables/ and fixtures/classes/ — populate these locally with
your own exports; they are not included in this template.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.