Skip to main content

d365-dmf-mcp

MCP server that imports CSV files into Dynamics 365 F&O via Data Management (DMF). It runs locally and authenticates as the user signed in to the Azure CLI.

Setup on Windows

  1. Install uv and the Azure CLI.

    winget install astral-sh.uv Microsoft.AzureCLI
    
  2. Sign in with the account that has access to D365 (if there is no az session, the server falls back to an interactive browser login):

    az login --tenant <entra-tenant-id>
    
  3. Register the server with Claude Code (runs the published package via uvx; see .mcp.json.example):

    claude mcp add d365-dmf `
      -e DMF_AZURE_TENANT_ID=<entra-tenant-id> `
      -e DMF_BASE_URL=https://<env>.sandbox.operations.eu.dynamics.com `
      -- uvx d365-dmf-mcp
    

    Other MCP clients: copy the block from .mcp.json.example into the client's MCP config. To run from a local checkout instead, use uvx --from C:\path\to\d365-dmf-mcp d365-dmf-mcp.

Tools

Only the tenant and environment URL are config. Everything else is passed per call.

  • import_data(definition_group, company, files, format="CSV"): import one or more files into a data project and wait for the result. files is a list of {entity, file_path}; entity is the DMF entity name as shown in D365 (e.g. Customer groups) and the file (.csv or .xlsx) has the entity's field names (e.g. CUSTOMERGROUPID) in its first row. The server generates the package manifest, looks up each entity's target and the dependency order from D365, and creates the data project if it doesn't exist. format is free text (CSV, EXCEL, or any CSV/Excel-based D365 source format on the environment, e.g. CSV-Unicode).
  • export_data(output_dir, definition_group, company): run an existing export data project and save its files.
  • create_data_project(name, description=""): create an empty import data project (optional; import_data does this itself).
  • list_data_projects(name_filter="", operation_type=""): browse existing data projects.
  • list_project_entities(definition_group): the entities in a project, with format and execution order.
  • search_entities(query, limit=50): search the DMF entity catalogue by name, target entity or module.
  • get_entity_fields(entity): the column names (data file header), types, lengths and required flags for an entity.
  • get_execution_status(execution_id): check the status of an execution, with errors if it failed.

Notes

  • Composite and XML-based entities are not supported.
  • Optional env vars: DMF_POLL_INTERVAL_SECONDS (default 5), DMF_POLL_TIMEOUT_SECONDS (default 300).

Metadata

Release files for d365-dmf-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for d365-dmf-mcp 0.2.0
File Size Uploaded Provenance Actions
d365_dmf_mcp-0.2.0.tar.gz 91.2 kB Without provenance Details for d365_dmf_mcp-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for d365-dmf-mcp 0.2.0
File Interpreter ABI Platform Actions
d365_dmf_mcp-0.2.0-py3-none-any.whl Python 3 none any Details for d365_dmf_mcp-0.2.0-py3-none-any.whl

Total release size: 101.8 kB

Release files / d365_dmf_mcp-0.2.0.tar.gz

Download URL d365_dmf_mcp-0.2.0.tar.gz
Size 91.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f9cfc46c1e295eb9e56c3fe6004da2b95d5ba4b9b9376a1f1bf0d057b7b5d7de
BLAKE2b-256 checksum
How to use checksums
b16bb1ff5af7ceeac60bc69330482da358390bfcea28858207ba54f1a9f711ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / d365_dmf_mcp-0.2.0-py3-none-any.whl

Download URL d365_dmf_mcp-0.2.0-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bbbe16611c7af82c3bd943ec7aa19e94416188c64ca3704addd373849362371b
BLAKE2b-256 checksum
How to use checksums
d0de8f53976e954cbac2a634fe9a4d997aabba0e2eed2f4acfa7cf65cc1fdf5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for d365-dmf-mcp 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page