Labsco
MCP SERVER

Business Central MCP Lab

by javiarmesto

Five working FastMCP tools over the Dynamics 365 Business Central REST API — a course lab, with two documented paths that no longer work.

Summary
A working example you finish yourself.

Five tools that really do call Business Central, plus a REST twin with Swagger for checking credentials outside a client — that is a genuine starting point for putting MCP in front of a Microsoft REST API. Take it as teaching material rather than a product: the pattern is sound, and the two routes it hands you are the parts you have to work around.

What it is

A server over the Microsoft Dynamics 365 Business Central REST API, written as a numbered lab in a training course. The tools are real FastMCP tools against the official endpoints, and the same operations are served a second time as a FastAPI REST app with Swagger documentation — a useful way to check your credentials with no MCP client in the loop.

What you get
  • Customers listed from your Business Central tenant, bounded by a limit
  • One customer's full record fetched by id
  • The item list, bounded by a limit
  • Sales orders, bounded by a limit
  • A customer created from the conversation, with display name and email
  • The same five operations over HTTP with OpenAPI documentation, plus a request file covering every one of them
  • A setup script that checks your environment variables and connectivity to Entra ID and Business Central before you debug anything else
Requirements

You supply the connection: an Entra ID app registration with tenant id, client id and client secret, plus your Business Central environment and company. Two things the README documents no longer hold, and both will stop you. The launch command it gives, `python -m bc_server.BusinessCentralMCP`, fails — there is no `bc_server` package in the repository at HEAD; the server module sits at the repository root alongside its config loader, HTTP client and setup script, so point your client at the module where it actually is. And the Azure App Service URL the README advertises as live no longer resolves, so the hosted route is gone and this runs locally. Business Central rate-limits its own APIs; the repository shows the retry-and-backoff pattern for the throttling and timeout responses you will meet under load.