Business Central got a native MCP server in the 2025 release wave 2. It means you can point an AI agent straight at your BC data — customers, items, sales orders, etc.
At first the only agent that could use it was the one built into Copilot Studio. Then support for third-party agents arrived, and Microsoft published a setup for the Claude Code CLI — documented here.
But would same config work in Claude Desktop? No.
This blog describes the setup that actually works in Claude Desktop, start to finish: the Entra app, the BC MCP server, and the connection — including the three things that are easy to get wrong.
Every step below was tested end to end on a MacBook. It, theoretically, should also work on Windows.
Part 1 — Register the Entra app
Claude Desktop signs into Business Central through Microsoft Entra, so we need an app registration. In the Azure portal, go to App registrations → New registration.
- Name: BC MCP – Claude Desktop (call it whatever you like).
- Supported account types: Accounts in any organizational directory (Multiple organizations).
Multitenant is important here. The OAuth discovery resolves to the /common/ authority, and multitenant is what lets /common/ accept your sign-in cleanly.
You do not need a client secret. This is a public desktop client using PKCE — leave “Client credentials” empty.
Add the redirect URI
Open Authentication → Add a platform → Mobile and desktop applications, then add this exact custom redirect URI:
http://localhost:33418/oauth/callback
Grant API permissions
Go to API permissions → Add a permission and add two delegated permissions:
- Dynamics 365 Business Central → Financials.ReadWrite.All (“Access Dynamics 365 Business Central as the signed-in user”).
- Microsoft Graph → User.Read (“Sign in and read user profile”).
Then click Grant admin consent. Both should flip to a green “Granted” state.
Before you leave, copy two values from the Overview page — you’ll need them in Part 3: the Application (client) ID and the Directory (tenant) ID.
Part 2 — Turn on the MCP server in Business Central
Now the BC side. In Business Central, search for Model Context Protocol and open the MCP Server Configuration list. Create a configuration, make it Active, and under Available Tools add the APIv2 objects you want reachable — ticking Allow Read (and optionally Create/Modify/Delete) per object. Give the configuration a name; mine is Standard, and that name becomes a header in Part 3, so remember it.
Microsoft documents all the server-side options in full here: Configure the Business Central MCP server.
Part 3 — Connect Claude Desktop
Claude Desktop reaches the BC MCP server through mcp-remote, a small local bridge that handles the HTTP transport and the Microsoft sign-in.
Step 1 — Install mcp-remote:
npm install -g mcp-remote@latest
Step 2 — Add the server to claude_desktop_config.json:
{
"mcpServers": {
"businesscentral": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.businesscentral.dynamics.com",
"33418",
"--transport",
"http-only",
"--header",
"TenantId: 16af2714-047c-4787-b904-fd6d1fad967e",
"--header",
"EnvironmentName: sandbox",
"--header",
"Company: Cronus Auto",
"--header",
"ConfigurationName: Standard",
"--static-oauth-client-info",
"{\"client_id\": \"f5885580-34f5-449f-82d1-1a76b388aa98\"}"
]
}
}
}
Swap in your own values:
TenantId(Directory ID from Part 1)EnvironmentName(mine issandbox),Company(mine isCronus Auto)ConfigurationName(theStandardconfig from Part 2)client_id(Application ID from Part 1).- Keep
33418right after the URL — it must match the port in the redirect URI you registered in Part 1.
Step 3 — Restart and sign in.
Fully quit Claude Desktop and reopen it. On reload, Claude Desktop asks you to sign in to Business Central to start the MCP server — a browser window opens for Microsoft sign-in. Approve it, and businesscentral comes up green (actually blue 😅 ) with its tools loaded.
Now let’s actually get some data
Let’s pull real BC data.
Do this in a regular Claude chat — not in Cowork. Your
businesscentralserver lives inclaude_desktop_config.jsonand runs locally on your machine throughmcp-remote. A normal Claude Desktop chat runs on that same machine, so it can reach it. Cowork runs in an isolated cloud environment that never sees your local config — so the BC tools simply won’t be there. Use the regular chat for this.
In a Claude Desktop chat, I asked:
List the first 10 customers from Business Central — show name, number, and city.
The agent called the BC MCP server, Business Central returned the rows, and Claude formatted them.
Three things to watch for
If you remember nothing else:
- Claude Code config ≠ Claude Desktop config.
type: http+oauthgets silently skipped by the desktop app. Bridge withmcp-remote. - Old mcp-remote breaks on Entra’s PKCE metadata. Always
npm install -g mcp-remote@latest. - The callback path is
/oauth/callback, and the port must be pinned. Registerhttp://localhost:33418/oauth/callbackin Entra, and put33418right after the URL in your config.
None of these are in the official doc, because the official doc is about the CLI. That gap is exactly why I wrote this blog.
Enjoy!


