Microsoft Dynamics 365 Finance & Operations client and MCP server with CRUD operations, metadata search, database query capabilities, and label retrieval
The server provides 18 tools with mostly complete schemas and reasonable descriptions. Strengths: all tools have input schemas with types and descriptions, tool names follow verb_noun convention (d365fo_get_*, d365fo_query_*, d365fo_create_*, etc.), and descriptions are present for all tools. Weaknesses: descriptions are generic and brief (many 50-100 chars), lack context about WHEN to use each tool vs alternatives, output schemas are not documented, no error recovery guidance, and several tools expose domain-specific complexity (composite keys, OData filter syntax, SQL queries) that agents must understand. The tool set is well-organized by concern (connection, CRUD, database, labels, metadata, performance) but could benefit from richer descriptions and explicit output schema documentation. Parameter descriptions are adequate but sparse, many lack examples of valid formats or constraints (e.g., 'filter' param accepts OData-like syntax but the description reads more like a tutorial than a formal constraint).
Create a new record in a D365 Finance & Operations data entity.
Delete a record from a D365 Finance & Operations data entity.
Execute a SELECT query against the D365FO metadata database to get insights from cached metadata.
Get comprehensive schema information for the D365FO metadata database.
Get a specific record from a D365FO data entity.
Get the detailed schema for a specific D365 F&O data entity, including properties, keys, and available actions.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields are returned.
Descriptions lack actionable context about WHEN to use each tool vs alternatives. E.g., search_entities vs get_entity_schema both discover entity metadata but the distinction is unclear.
No error recovery guidance. Tools offer no hints about what to do if a call fails (e.g., 'Entity not found, try d365fo_search_entities() to find the correct name').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Get D365FO environment information and version details.
Get label text by label ID.
Get multiple labels in a single request.
Get current FastMCP server configuration and feature status.
Get FastMCP server performance statistics and health metrics.
Get detailed information about a specific database table including column definitions, constraints, indexes, statistics, sample data, and relationships.
Query D365FO data entities with simplified filtering capabilities.
Reset server performance statistics.
Search for available OData actions in D365 F&O.
Search for D365 F&O data entities using simple keyword-based search.
Test connection to D365FO environment.
Update an existing record in a D365 Finance & Operations data entity.
Complex domain syntax (OData filters, SQL queries, composite keys) exposed in parameters without sufficient constraint documentation. LLMs must reason about syntax instead of following clear rules.
No pagination limit enforcement documented. Tools like d365fo_query_entities accept 'top' parameter but do not state max acceptable values or risks of large result sets.
Return value chaining not documented. No indication whether response IDs can be reused in follow-up tool calls (e.g., does d365fo_query_entities return entity keys that d365fo_get_entity_record expects?).