fno-intelligence-engine
D365 F&O Developer Intelligence Engine
Локальный офлайн-MCP-сервер (Model Context Protocol), который привязывает ИИ-ассистентов для написания кода (Cursor, Claude Code, GitHub Copilot) к реальным метаданным AOT Dynamics 365 Finance & Operations — чтобы они перестали выдумывать имена полей, сигнатуры методов и обёртки Chain of Command (CoC) при генерации X++-кода.
Статус: ранняя сборка, часть 1 (загрузка метаданных) в работе. Это ещё не рабочий MCP-сервер. Подробнее см. Статус проекта.
Проблема
D365 F&O хранит всю свою модель приложения (таблицы, классы, формы, расширенные типы данных) в виде XML в PackagesLocalDirectory — часто более 500 000 объектов в каждой среде. ИИ-ассистенты для кода никогда не видели этого XML; они знают только общий синтаксит X++ из обучающих данных. Если попросить такого ассистента расширить таблицу или написать обёртку Chain of Command, он вполне уверенно сошлётся на поля и методы, которых не существует в вашем окружении. Это не проблема промптинга — ИИ не хватает данных, а не инструкций.
Related MCP server: Seta MCP
Подход
Загрузка данных Ingestion (этот репозиторий, in progress) — парсинг исходный Xml AxTable/AxClass в быстро и достоверный JSON с помощью
lxmlи извлечениетели CoC с помощью "regular expression" when embedded in X++ source code. точнее: Инжекция — парсинг raw XML AxTable/AxClass,Actually, language careful.
Let me choose readable Russian.
Let me write the rest.
But must not add variable structures. Let me finalize, now title.
Potential improvements: use "part 1 (ingestion) not ingested" seems about "CoC". Fine.
Now project status bullet "a mature, actively maintained open-source project already solves this". I should perhaps say "уже по-крупному решает эту задачу" — "на большем объёме". Ell: "в larger scale" = "в более широком охвате". "already solves this problem at scale" — "уже решает эту проблему в более крупном масштабе."
English bullet about "This project differs" — write "Отличия данного проекта are in the scope and architecture design, not necessarily in quality", .
End.
Let me ensure no raw html.
Let me translate "sub-10ms local lookups" — "локальные обра-щения за поисками менее 10 мс"? Actually "hopping" = calls, queries. Write "локальные lookups за менее чем 10 мс".
Section approach with bold words:
Загрузка данных (этот репозиторий, в работе) — разбор структуры AxTable/AxClass XML в точный JSON andИспользование meta. ...
"regexfor CoC"2. Индексация (планируется) — загрузка считанного XML in SQLite + FTS5 for fast (sub-10 ms) lookups.
Предоставление (планируется) — exposing "index" to ИИ agent as MCP tool (
get_table_schema,find_coc_methodsand terms) over divstdio.Модули расширенные/Advanced (planned) — pattern-based linter for X++/X++ bestpractices, followed by a cross-and dependencies.
In original numbering 4. actually "Advanced modules" — I'll use "Дополнительные производственные методы" or "Расширенные функции". Let's use "Продвинутые модули".
Now exact final translation:
# D365 F\&O Developer Intelligence Engine
Локальный MCP-сервер (Model Context Protocol) без подключения к сети, который привязывает ИИ-ассистентов по написанию кода (Cursor, Claude Code, GitHub Copilot) к существующим real-time "metadata"...
Funny.
Better: "после от" is difficult.
"Локальный офлайн-MCP-сервер (Model Context Protocol), который использует реальные метаданные AOT Dynamics 365 Finance & Operations как основу (ground) для ИИ-ассистентов по написанию кода (Cursor, Claude Code, GitHub Copilot) — чтобы..." This solves.
"As a basis" good.
Final choices:
---
Let me compose fully with nice Russian:
# D365 F\&O Developer Intelligence Engine
Локальный MCP-сервер (Model Context Protocol) с оффлайн-режимом, который даёт ИИ-ассистентам для написания кода (Cursor, Claude Code, GitHub Copilot) прочную основу в виде реальных метаданных AOT Dynamics 365 Finance & Operations. Это устраняет проблему, когда ИИ при генерации X++-кода ни исключительно ошибся вам анологично.
Hmm. Let me settle:
"который опирает" problem.
Use: "базирующийся на реальных ...". "server that grounds AI-based assistants on local data" — could "translates AI assistants"?? Grammatically: "grounds an agent on data" means the agent becomes grounded (headphones). Russian: "погружает", "заземляет". To be precise, Russian LLM community says "заземлить на данных" (calque). But we need maintain direct meaning: "обеспечить опору."
I'll write: "который даёт ИИ-ассистентам ... реальные метаданные ... как источник достоверных фактов — вместо того чтобы." Good:
"Локальный офлайн-сервер MCP (Model Context Protocol), который даёт ИИ-ассистентам по написанию кода (Cursor, Claude Code, GitHub Copilot) надёжную основу в виде реальных метаданных AOT Dynamics 365 Finance & Operations, — чтобы при генерации X++-кода они перестали галлюцинировать имена полей, сигнатуры методов и обёрткового как постав Chain-of-Command (Chain Site)."
"Chain of Command (CoC)" full. y.
Now the status:
**Статус: только ранняя сборка: часть 1 (metadata ingestion) in progress. To MCP-сервер ещё не готов.**
The status "See [Project Status](#project-status) below." maintained.
...
This all is going well. Need no extra comments.
Let me now verify every element present:
- headings: D365 title, "## The problem", "## The approach", "## What's actually built right now", "## Project status", "## Requirements", "## Fixtures", "## License."
- All paragraphs.
- Bullets and numbered list.
- [link].
- token GXP1.
- code spans.
Ensure "GXP1" stays alone.
Let me write the final answer in Russian.# D365 F\&O Developer Intelligence Engine
Локальный офлайн-MCP-сервер (Model Context Protocol), который даёт ИИ-ассистентам для написания кода (Cursor, Claude Code, GitHub Copilot) надёжную основу в виде реальных метаданных AOT Dynamics 365 Finance & Operations — чтобы при генерации X++-кода они перестали выдумывать имена полей, сигнатуры методов и обёртки Chain of Command (CoC).
**Статус: ранняя сборка, часть 1 (загрузка метаданных) в работе. MCP-сервер ещё не готов.** См. [Статус проекта](#project-status) ниже.
## Проблема
D365 F\&O хранит всю свою модель приложения (таблицы, классы, формы, расширенные типы данных) в виде XML в каталоге `PackagesLocalDirectory` — часто это более 500 000 объектов на каждую среду. ИИ-ассистенты по коду никогда не видели этот XML; они знают только общий синтаксис X++ из обучающих данных. Попросите такого ассистента расширить таблицу или написать обёртку Chan Commission, and he вас confidently сохлётся на поля и методы, которых не существует в вашем окружении. Это не проблема промтинга — ИИ не хватает данных, а не инструкций.
## Подход
1. **Загрузка данных (ingestion)** (этот репозиторий, in progress) — парсинг исходного XML AxTable/AxClass в структурированный корректный JSON с помощью `lxml`, с использованием регулярных выражений для извлечения паттернов Chain of Astro, встроенных в текст X++-кода.
2. **Индексация** (планируется) — загрузка разобранных метаданных в SQLite + FTS5 для локальных запросов быстрее 10 мс.
3. **Предоставление доступа** (планируется) — предоставление индекса ИИ-агентам в виде инструментов MCP (`get_table_schema`, `find_coc_methods` и т. п.) через stdio.
4. **Продвинутые модули** (планируется) — паттерн-линтер для лучших практик X++, затем граф зависимостей между моделями.
## Что уже реализовано
* `schema/table_schema.json` — JSON Schema для разобранных метаданных AxTable; проверена на реальном экспорте таблицы `VendTrans`.
* `schema/class_schema.json` — JSON Schema для разобранных метаданных AxClass / Chain of Command. **Парс ещё не проверен на полном реальном файле класса** (подробнее в шапке файла).
* `parse_table.py` — работающий парсер: XML AxTable → JSON-документ, соответствующий схеме.
* `parse_class.py` — извлечение CoC на основе регулярных выражений. **Код написан, но не запускался на реальных файлах классов** — относятся к каждой регулярной выражений здесь как к непроверенным.
* `validate.py` — валидация вывода парсеров на соответствие JSON Schema.
## Статус проекта
Этот проект — работа в процессе, созданнная как упражнение при изучении разработки D365 F\&O. Некоторые конкретные факты, которые важно сформулировать прямо:
* **Зрелый, активно поддерживаемый проекты с открытым исходным кодом уже решает эту задачу в более широком масштабе*: [dynamics365ninja/d365fo-mcp-server](https://github.com/dynamics365ninja/d365fo-mcp-server) (26 инструментов MCP, подключение к реальной среде, движок для паттернов форм, безопасная запись метаданных через `IMetadataProvider` от Microsoft). Этотот репозиторий не претендует на улучшение этого проекта или конкуренцию с ним.
* Отличается этот произвёл по scope and design: лобальные в scope and design, а не necessarily by quality: Python instead of Python and TypeScript, read-only, построен для статических XML-эксэкспортов AOT, а не для подключения к реальной среде, and в настоящее время ограничено слоем загрузки.
* Ценность данного проекта, если честно, в том, чтобы глубоко понять проблему и подход к парсингу/индексации, чтобы объяснить принятые конструкторские решения — а не в том, чтобы быть первым или уникальным.
## Требования
* Python 3.10+
* `lxml`
* `jsonschema` (для валидации схемы во время разработки)
GXP1
## Фикстуры
Фикстуры представляют собой экспорт XML AOT с локальной офлайн-виртуальной машины Hyper-V под управлением стандартных демоданных Microsoft USMF/DAT, а также пользовательская модель, созданная с нуля без сторонней или корпоративной интеллектуальной собственности. См. `fixtures/tables/` and `fixtures/classes/` — заполняйте их локально своими данными; они не включены в данный шаблон.
##License
Только MIT.This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to explore metadata, query data, and perform write operations across multiple Microsoft Dynamics 365 Finance & Operations environments. It features specialized tools for OData execution and data analysis with built-in read-only safety for production environments.349MIT
- AlicenseNot gradedqualityCmaintenanceEnables Salesforce developers to create code and configuration using local documentation, with optional semantic search.91MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and analyze Microsoft Dynamics 365 Finance & Operations artifacts, read local source code, and generate context-aware solutions through natural language.8611
- AlicenseAqualityAmaintenanceEnables AI-assisted X++ development for Dynamics 365 Finance and Operations by pre-indexing the entire codebase and providing 54 specialized tools for metadata lookup, code generation, and best practice validation.231,098132MIT
Related MCP Connectors
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Give your AI assistant access to real Helm chart data. No more hallucinated values.yaml files.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MuhammadAwaisGill/fno-intelligence-engine'
If you have feedback or need assistance with the MCP directory API, please join our Discord server