business-central-mcp-server
Exposes Dynamics 365 Business Central data to MCP clients via standard v2.0 API or custom AL APIs, supporting read, write, and destructive operations with multiple authentication modes.
README
business-central-mcp-server
An MCP server that exposes Dynamics 365 Business Central (online) data to an MCP client (Claude Code, Claude Desktop, etc.) — environments, companies, and any entity reachable through the standard v2.0 API or a custom AL API.
It talks to api.businesscentral.dynamics.com using an Entra token for that
same audience. With delegated auth (interactive / cli / azure-powershell)
it needs no app registration and no admin consent — it operates as the
signed-in user, constrained by that user's Business Central permission sets.
Tools
Read (always on)
| Tool | Purpose |
|---|---|
list_environments |
List BC environments (production + sandboxes) in the tenant. |
list_companies |
List companies (legal entities) in an environment; ids feed the entity tools. |
list_entity_sets |
List the entity sets on an API route (customers, items, salesInvoices, ...). |
query_entities |
OData query over an entity set — $filter/$select/$orderby/$expand, paged. |
get_entity |
Single record by id (GUID), including its @odata.etag. |
Custom APIs published from AL extensions are reachable everywhere via
api_route: "{publisher}/{group}/{version}".
Write (BC_MCP_MODE=write)
| Tool | Purpose |
|---|---|
create_entity |
Insert a record (customer, item, sales order, ...). |
update_entity |
PATCH fields on a record, If-Match etag concurrency handled for you. |
invoke_bound_action |
Call a bound action — post, ship, cancel, ... (Microsoft.NAV.*). |
Every write call is audit-logged to stderr with timestamp, tool, target, and
caller identity. These mutate real ERP data — posting a document creates
ledger entries that cannot simply be deleted. Point BC_DEFAULT_ENVIRONMENT
at a sandbox while experimenting.
Destructive (BC_MCP_MODE=write and BC_MCP_ALLOW_DELETE=true)
| Tool | Purpose |
|---|---|
delete_entity |
Permanently delete a record. Two-step dry_run → confirm_token → apply. |
The destructive tier is off by default. When enabled, each call is a plan
first: dry_run=true (the default) returns the record that would be removed
plus a single-use confirm_token; only a second call with dry_run=false and
that token performs the delete, guarded by an If-Match etag.
Setup
cd business-central-mcp-server
npm install
Register it with your MCP client. Example .claude.json entry (delegated auth,
read-only):
{
"mcpServers": {
"business-central": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/business-central-mcp-server/index.js"],
"env": {
"AZURE_TENANT_ID": "<your-entra-tenant-id>",
"BC_AUTH_MODE": "interactive",
"BC_MCP_MODE": "read",
"BC_DEFAULT_ENVIRONMENT": "Production"
}
}
}
}
To allow creating/updating records and invoking bound actions, set
"BC_MCP_MODE": "write". To also allow deletion, add
"BC_MCP_ALLOW_DELETE": "true".
Set BC_DEFAULT_COMPANY_ID to a value from list_companies if you work in a
single company and want to omit company_id on every call.
See .env.example for the full list of environment variables,
including all supported auth modes.
Auth notes
- Delegated (recommended):
interactive,device-code,cli, orazure-powershell. No app registration needed; the caller acts as the signed-in user, limited by that user's BC permission sets and company access. - Service principal: non-interactive, but the SP must be registered as an Entra application inside Business Central (Entra Applications page, with permission sets assigned) before the data plane will accept it.
list_environmentsuses the admin-center discovery API, which additionally requires BC admin-center access. The other tools work without it if you pass environment names directly.
Requirements
- Node.js >= 20
- An Entra identity licensed for Business Central in the target tenant.
License
MIT — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。