If you work in D365 Finance & Operations, this gives your AI assistant direct access to X++ code search, object metadata, relation graphs, and extension discovery across your entire AOT. It also wires up Azure DevOps for querying work items, creating tasks, analyzing PRs, and posting comments. Beyond lookup, you get code generation for templates, queries, and unit tests, plus security tracing that follows role and license chains. The package includes a separate D365FO data proxy that uses Azure CLI auth to hit live environment endpoints, so you can cross reference knowledge base results with real table data and forms. Useful when you need to trace upgrade impact, find callers, or connect custom code to ADO work items without leaving your editor.
npx launcher for the ALM XPP MCP cloud server - a D365 Finance & Operations AI Agent with 34 tools.
npx almxppmcp --api-key YOUR_TOKEN
or set the environment variable:
export ALMXPPMCP_API_KEY=YOUR_TOKEN
npx almxppmcp
.vscode/mcp.json{
"servers": {
"almxppmcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
}
}
}
.cursor/mcp.json{
"mcpServers": {
"almxppmcp": {
"command": "npx",
"args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
}
}
}
claude_desktop_config.json{
"mcpServers": {
"almxppmcp": {
"command": "npx",
"args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
}
}
}
Tip: replace
YOUR_TOKENwith the token shown on your dashboard. Set it as an env var to avoid hard-coding it:{ "mcpServers": { "almxppmcp": { "command": "npx", "args": ["-y", "almxppmcp"], "env": { "ALMXPPMCP_API_KEY": "YOUR_TOKEN" } } } }
| Variable | Description |
|---|---|
ALMXPPMCP_API_KEY | Your API token (alternative to --api-key) |
ALMXPPMCP_SERVER_URL | Override the MCP endpoint (default: https://api.almxpp.com/mcp) |
Use the bundled almxppmcp-d365fo-proxy when you want a second MCP server dedicated to the live D365FO environment data layer.
It now supports both modes:
This is intentionally separate from almxppmcp:
almxppmcp: KB, custom code, relations, Azure DevOps, generationalmxppmcp-d365fo-proxy: live D365FO environment MCP endpoint over Azure CLI authaz account get-access-tokenmcp-session-id across requeststext/event-stream responsesRequired environment variables:
| Variable | Description |
|---|---|
D365FO_MCP_URL | Full remote MCP URL, for example https://your-env.sandbox.operations.dynamics.com/mcp |
D365FO_RESOURCE | D365FO resource URL, for example https://your-env.sandbox.operations.dynamics.com |
D365FO_TENANT_ID | Optional tenant override for Azure CLI token acquisition |
Example VS Code MCP configuration:
{
"servers": {
"almxppmcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "almxppmcp"],
"env": {
"ALMXPPMCP_API_KEY": "YOUR_TOKEN"
}
},
"d365fo-data": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "almxppmcp", "almxppmcp-d365fo-proxy"],
"env": {
"D365FO_MCP_URL": "https://YOUR-ENV.sandbox.operations.dynamics.com/mcp",
"D365FO_RESOURCE": "https://YOUR-ENV.sandbox.operations.dynamics.com"
}
}
}
}
Required environment variables:
| Variable | Description |
|---|---|
D365FO_PROXY_URL | Hosted ALM XPP proxy endpoint, for example https://www.almxpp.com/api/d365fo/mcp |
D365FO_PROXY_API_KEY | ALM XPP API token used to call the hosted proxy |
D365FO_MCP_URL | Optional but recommended per-user target environment URL |
D365FO_RESOURCE | Optional but recommended per-user resource URL |
In multi-user scenarios, keep the environment URL in each user's MCP config (not in ACA global variables). The launcher forwards these values to the cloud bridge per request.
Example VS Code MCP configuration:
{
"servers": {
"d365fo-data": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "almxppmcp", "almxppmcp-d365fo-proxy"],
"env": {
"D365FO_PROXY_URL": "https://www.almxpp.com/api/d365fo/mcp",
"D365FO_PROXY_API_KEY": "YOUR_ALMXPP_TOKEN",
"D365FO_MCP_URL": "https://YOUR-ENV.sandbox.operations.dynamics.com/mcp",
"D365FO_RESOURCE": "https://YOUR-ENV.sandbox.operations.dynamics.com"
}
}
}
}
az loginAllowed MCP clients04b07795-8ddb-461a-bbee-02f9e1bf7b46Note:
Use the two MCP servers together:
almxppmcp to identify the table, entity, relations, custom extensions, and related work itemsd365fo-data to inspect the real environment data, forms, or custom actionsSee npm/examples/vscode-mcp.d365fo-data.json, npm/examples/vscode-mcp.d365fo-data.cloud.json, and docs/D365FO_DATA_ENVIRONMENT_SETUP.md for ready-to-use setups.
The server exposes 34 tools across 6 categories:
| Category | Tools |
|---|---|
| Discovery | search_d365_code, get_object_details, list_objects, get_relation_graph, find_related_objects |
| References & Impact | find_references, find_extensions, find_callers |
| Code Generation | generate_xpp_template, generate_query, generate_d365_solution, generate_unit_test |
| Quality & Validation | validate_best_practices, detect_performance_issues, validate_aot_pattern, explain_code_complexity, suggest_refactoring |
| Security & Licensing | trace_security_chain, trace_role_license_tree, generate_security_governance_report |
| Azure DevOps | ado_query_workitems, ado_create_task, ado_list_prs, ado_analyze_pr_impact, ado_post_comment, ado_post_pr_comment, ado_changelog_from_prs, ado_analyze_workitem, ado_estimate_effort, ado_auto_test_scenario, ado_gap_fit_analysis, ado_knowledge_gap_detector, ado_sprint_capacity |
See the dashboard for the full tool list.
MIT
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp