fno-intelligence-engine

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.

Category
Visit Server

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

  1. 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.
  2. Indexing (planned) — load parsed metadata into SQLite + FTS5 for sub-10ms local lookups.
  3. Exposure (planned) — expose the index to AI agents as MCP tools (get_table_schema, find_coc_methods, etc.) over stdio.
  4. 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 real VendTrans table export
  • schema/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 JSON
  • parse_class.py — regex-based CoC extractor. Written but not yet run against real class bytes — treat every regex here as unproven
  • validate.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+
  • lxml
  • jsonschema (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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured