A read-only MCP server by CData that enables LLMs to query live data from Dynamics 365. Requires the CData JDBC Driver for Dynamics 365.
CData's Model Context Protocol (MCP) Server for Dynamics 365
:heavy_exclamation_mark: This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for Dynamics 365 (beta).
We created this read-only MCP Server to allow LLMs (like Claude Desktop) to query live data Dynamics 365 supported by the CData JDBC Driver for Dynamics 365.
CData JDBC Driver connects to Dynamics 365 by exposing them as relational SQL models.
This server wraps that driver and makes Dynamics 365 data available through a simple MCP interface, so LLMs can retrieve live information by asking natural language questions — no SQL required.
git clone https://github.com/cdatasoftware/dynamics-365-mcp-server-by-cdata.git
cd dynamics-365-mcp-server-by-cdata
mvn clean install
This creates the JAR file: CDataMCP-jar-with-dependencies.jarlib
folder in the installation directory, typically:
C:\Program Files\CData\CData JDBC Driver for Dynamics 365\
/Applications/CData JDBC Driver for Dynamics 365/
java -jar cdata.jdbc.dyanmics365.jar --license
Run the command java -jar cdata.jdbc.dyanmics365.jar
to open the Connection String utility.
Configure the connection string and click "Test Connection"
Note: If the data sources uses OAuth, you will need to authenticate in your browser.
Once successful, copy the connection string for use later.
.prp
file for your JDBC connection (e.g. dynamics-365.prp
) using the following properties and format:
Prefix=dyanmics365
ServerName=CDataDyanmics365
ServerVersion=1.0
DriverPath=PATH\TO\cdata.jdbc.dyanmics365.jar
DriverClass=cdata.jdbc.dyanmics365.Dyanmics365Driver
JdbcUrl=jdbc:dyanmics365:InitiateOAuth=GETANDREFRESH;
Tables=
Create the config file for Claude Desktop ( claude_desktop_config.json) to add the new MCP server, using the format below. If the file already exists, add the entry to the mcpServers
in the config file.
Windows
{
"mcpServers": {
"{classname_dash}": {
"command": "PATH\\TO\\java.exe",
"args": [
"-jar",
"PATH\\TO\\CDataMCP-jar-with-dependencies.jar",
"PATH\\TO\\dynamics-365.prp"
]
},
...
}
}
Linux/Mac
{
"mcpServers": {
"{classname_dash}": {
"command": "/PATH/TO/java",
"args": [
"-jar",
"/PATH/TO/CDataMCP-jar-with-dependencies.jar",
"/PATH/TO/dynamics-365.prp"
]
},
...
}
}
If needed, copy the config file to the appropriate directory (Claude Desktop as the example). Windows
cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
Linux/Mac
cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json'
Run or refresh your client (Claude Desktop).
Note: You may need to fully exit or quit your Claude Desktop client and re-open it for the MCP Servers to appear.
java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/Salesforce.prp
Note: The server uses
stdio
so can only be used with clients that run on the same machine as the server.
Once the MCP Server is configured, the AI client will be able to use the built-in tools to read, write, update, and delete the underlying data. In general, you do not need to call the tools explicitly. Simply ask the client to answer questions about the underlying data system. For example:
The list of tools available and their descriptions follow:
In the definitions below, {servername}
refers to the name of the MCP Server in the config file (e.g. {classname_dash}
above).
{servername}_get_tables
- Retrieves a list of tables available in the data source. Use the {servername}_get_columns
tool to list available columns on a table. The output of the tool will be returned in CSV format, with the first line containing column headers.{servername}_get_columns
- Retrieves a list of columns for a table. Use the {servername}_get_tables
tool to get a list of available tables. The output of the tool will be returned in CSV format, with the first line containing column headers.{servername}_run_query
- Execute a SQL SELECT queryIf you are scripting out the requests sent to the MCP Server instead of using an AI Client (e.g. Claude), then you can refer to the JSON payload examples below – following the JSON-RPC 2.0 specification - when calling the available tools.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dynamics_365_get_tables",
"arguments": {}
}
}
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "dynamics_365_get_columns",
"arguments": {
"table": "Account"
}
}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "dynamics_365_run_query",
"arguments": {
"sql": "SELECT * FROM [Account] WHERE [IsDeleted] = true"
}
}
}
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Provides read-only access to Apache Iceberg tables using Apache Impala.
Enables persistent knowledge storage for Claude using a knowledge graph with multiple database backends like PostgreSQL and SQLite.
An MCP server for NocoDB, the open-source Airtable alternative. It allows interaction with your NocoDB instance via API.
A read-only MCP server for querying live data from Square using the CData JDBC Driver.
Search and query patient Electronic Health Record (EHR) data using SMART on FHIR.
A modular server providing unified access to multiple astronomical datasets, including astroquery services and DESI data sources.
Query Onchain data, like ERC20 tokens, transaction history, smart contract state.
Unofficial server for accessing Open Targets platform data for gene-drug-disease associations research.
Integrate with the Grist API to manage relational spreadsheets and data. Requires a Grist API key.
Access blockchain data like balances, tokens, and NFTs from Blockscout APIs. Supports multi-chain and progress notifications.