origo-bc-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@origo-bc-mcp-serverlist my recent sales orders from Business Central"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
origo-bc-mcp-server
Origo Business Central MCP server — connects AI clients (VS Code Copilot, Claude Desktop, etc.) to Business Central via the Cloud Events API.
Features
Area | Tools | Description |
Discovery |
| Auth check and tenant/environment/company selection |
Table metadata |
| AL table/field schema introspection |
Data records |
| Read/write any BC table via Cloud Events |
Search |
| Full-text search across common master data |
Totals & aging |
| Aggregations without pulling raw rows |
Message types |
| Generic access to any BC Cloud Event message type |
Queue |
| Manage async Cloud Event queue tasks |
Translations |
| Multi-language field translation management |
Integration timestamps |
| Track last-sync watermarks for external integrations |
Memory & config |
| Persistent notes/config stored in BC's Cloud Event Config Store |
Incoming documents |
| Upload and process incoming document attachments |
Crypto |
| AES-256-GCM encryption and base64 helpers |
Business events |
| Manage |
API/OData testing |
| Discover, inspect, and test any BC API v2.0 or custom API page endpoint — full CRUD (GET/POST/PATCH/DELETE), |
Skills |
| Bundled reference docs for the Cloud Events API |
Related MCP server: business-central-mcp
Prerequisites
Node.js 22+ — nodejs.org (LTS recommended)
Install
npm install -g github:businesscentralal/origo-bc-mcpVerify:
origo-bc-mcp-server --helpSetup
Run the interactive setup wizard:
origo-bc-mcp-server setupThe wizard walks you through:
Connection type (SaaS or on-prem)
Credentials (client secret, refresh token, or web service key)
Secret storage (DPAPI on Windows, Keychain on macOS)
Connection validation
MCP client configuration (
mcp.jsonfor VS Code)Desktop shortcut (optional)
Configuration is stored in ~/.origo-bc-mcp/local.settings.json (macOS/Linux) or %USERPROFILE%\.origo-bc-mcp\local.settings.json (Windows).
Managing connections
Add a connection
Add a new connection without running the full setup wizard:
origo-bc-mcp-server add production
origo-bc-mcp-server add sandbox
origo-bc-mcp-server add # prompts for nameThis asks for connection details, validates, saves to local.settings.json, and registers the MCP entry in VS Code's mcp.json.
List connections
origo-bc-mcp-server remove # lists available connections without removing anythingRemove a connection
origo-bc-mcp-server remove productionRemoves the named connection from local.settings.json and its entry from VS Code's mcp.json. Prompts for confirmation.
Create a desktop shortcut
origo-bc-mcp-server shortcut # shortcut for default server
origo-bc-mcp-server shortcut production # shortcut for a named connectionCreates a double-clickable shortcut on your Desktop to start the server:
Windows:
.lnkfile (opens cmd)macOS:
.commandfile (executable shell script)Linux:
.desktopfile
Clean all config
origo-bc-mcp-server cleanRemoves the entire local.settings.json, all origo-bc-* entries from VS Code's mcp.json, and all desktop shortcuts. Use this to start fresh. Prompts for confirmation.
Server modes (full vs lite)
By default the server runs in full mode — all tool groups from the Features table above are registered (~75 tools). This is best for capable models (GPT-4o, Claude Sonnet, etc.) that handle large tool sets well.
Lite mode registers a reduced set (~26 tools) built around invoke_message_type as a universal entry point, plus data records, aging, period breakdown, crypto, memory, and the Cloud Events skill doc. Use this for local/smaller LLMs that get confused or slow down with too many tool definitions. The API endpoint testing tools (bc_list_api_endpoints, bc_get_api_metadata, bc_api_request) are not included in lite mode.
Enable lite mode with an environment variable:
MCP_LITE=1 origo-bc-mcp-server # macOS/Linux
$env:MCP_LITE="1"; origo-bc-mcp-server # Windows PowerShellThe startup banner confirms which mode is active:
origo-bc-mcp listening on :3000 (development, LITE)
LITE MODE: reduced tool set for local LLMsTo use lite mode with a named connection or PM2, set MCP_LITE=1 in that process's environment (e.g. ecosystem.config.cjs env block for a second PM2 app entry).
Start the server
origo-bc-mcp-serverExpected output:
origo-bc-mcp listening on :3000 (development)
MCP endpoint: http://localhost:3000/mcp
Dashboard: http://localhost:3000/dashboard
Health: http://localhost:3000/healthzDashboard
The server includes a web dashboard at /dashboard:
Real-time logs — SSE stream with filtering, auto-scroll, clear
Active sessions — connected MCP clients
Server stats — uptime, memory, PID, Node version
Debug toggle — enable/disable
MCP_DEBUGat runtime without restartSetup UI (
/dashboard/setup) — manage connections, Basic Auth credentials, validate endpointsRestart / Stop — PM2-aware controls (in Docker containers)
The dashboard is protected by Basic Auth credentials. On first start with no config, it's open to allow initial setup.
Custom port
PORT=3001 origo-bc-mcp-server # macOS/Linux
$env:PORT="3001"; origo-bc-mcp-server # Windows PowerShellVerify
Check server health:
curl http://localhost:3000/healthzValidate BC connections:
origo-bc-mcp-server verify # all connections
origo-bc-mcp-server verify production # specific connectionCLI reference
origo-bc-mcp-server [command] [options]
Commands:
setup Guided wizard to configure connections and VS Code mcp.json
add [name] Add a single connection (streamlined)
verify [name] Validate a connection (default: all connections)
remove <name> Remove a specific connection (or list available)
shortcut [name] Create a desktop shortcut to start the server
clean Remove ALL connections, config, and shortcuts
init Create ~/.origo-bc-mcp/local.settings.json from template
Options:
--config <path> Start with a specific local.settings.json
-h, --help Show helpConfigure an MCP client
The setup wizard writes VS Code's mcp.json automatically. For other clients, add:
{
"servers": {
"origo-bc-mcp": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Basic <base64-encoded username:password>"
}
}
}
}Generate the Basic auth value:
echo -n 'username:password' | base64 # macOS/Linux
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("username:password")) # WindowsThe credentials are the basicAuth.username and basicAuth.password from your local.settings.json.
Update
npm install -g github:businesscentralal/origo-bc-mcpYour local.settings.json is preserved across updates.
Uninstall
Remove the npm package
npm uninstall -g origo-bc-mcp-serverRemove configuration files
Windows (PowerShell):
# Remove local settings
Remove-Item "$env:USERPROFILE\.origo-bc-mcp" -Recurse -Force -ErrorAction SilentlyContinue
# Remove MCP entries from VS Code (or use 'origo-bc-mcp-server clean' before uninstalling)macOS/Linux:
rm -rf ~/.origo-bc-mcpRemove VS Code MCP entries
Either run origo-bc-mcp-server clean before uninstalling, or manually edit your VS Code mcp.json:
Windows:
%APPDATA%\Code\User\mcp.jsonmacOS:
~/Library/Application Support/Code/User/mcp.jsonLinux:
~/.config/Code/User/mcp.json
Remove any "origo-bc-*" entries from the "servers" object.
Remove desktop shortcut (if created)
Delete the "Origo BC MCP" shortcut from your Desktop manually.
Remove stored secrets
If you used DPAPI or Keychain during setup, the encrypted values are embedded in the config files (already deleted above). Environment variables you set manually (e.g. BC_DEV_CLIENT_SECRET) should be removed separately:
# Windows — remove a user-level env var
[Environment]::SetEnvironmentVariable('BC_DEV_CLIENT_SECRET', $null, 'User')# macOS — remove Keychain entry
security delete-generic-password -a mcp-encrypted-conn -s origo-bc-mcp-default-secretTroubleshooting
Problem | Solution |
| Restart terminal; check npm global bin is in PATH: |
| Install Node.js 22+ |
| Verify connection settings — run |
| Check credentials — run |
Port 3000 in use | Use a different port (see above) |
SSL errors against on-prem BC |
|
Custom config path
origo-bc-mcp-server --config /path/to/local.settings.jsonOr set MCP_LOCAL_SETTINGS_PATH environment variable.
Develop
cp .env.example .env # fill in BC_CLIENT_ID/SECRET, MCP_ENCRYPTION_KEY, ...
npm install
npm run dev # tsx watch
# or
npm run build && npm startSmoke check:
curl localhost:3000/healthz
curl localhost:3000/.well-known/oauth-protected-resourceBasic auth
Basic auth secures MCP endpoints and the dashboard. It works in all environments (local dev, Docker, production). Configure it in one of three ways:
Dashboard Setup UI — open
/dashboard/setup, fill in credentials (recommended for Docker)Environment variables — set
MCP_ADMIN_USER+MCP_ADMIN_PASSWORDat startupConfig file — set
basicAuthinlocal.settings.json:
cp config/local.settings.example.json config/local.settings.json
# edit: basicAuth.username/password + devConnection
npm run devThen call the server with Basic credentials:
curl -u admin:yourpass -X POST localhost:3000/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'The same credentials protect the web dashboard at /dashboard.
The Basic-auth connection is locked to its configured tenant (it cannot cross
tenants), exactly like x-origo-token.
devConnection supports two shapes:
On-prem (
onPrem: true+baseUrl,onPremTenant,user,key,companyId,companyName) — Basic auth against an on-prem BC REST base URL. Mirrors the legacyBC_ONPREM_*mode.bc_list_companiesreturns the configured company; data calls useBasic base64(user:key)against{baseUrl}/api/origo/cloudevent/v1.0/...?tenant=....SaaS (
tenantId,clientId,clientSecretorrefreshToken) — Entra.
On-prem data calls (message types) are wired during tool migration; the connection, auth header (
onPremAuthHeader) and company listing are in place.
Status & continuation
Scaffold + dual auth + tenant access guard + discovery tools are in place and
compile/run. Next: migrate the ~40+ BC tools from the legacy server (api/mcp/tools/*)
into src/tools/, then deploy to dev via Azure DevOps.
docs/PROJECT-STATUS.md— full state, decisions, tool-migration inventory, open questions, resume checklist.docs/RESUME-PROMPT.md— ready-to-paste prompt to continue the work later.docs/local-dev.md— how to start the server locally (Basic auth, on-prem/SaaS).docs/devops-setup.md— cross-tenant deploy setup.
Local install
Run with Docker
The included Dockerfile builds a production image with PM2 for automatic restarts. Configuration is stored in a /data volume inside the container and managed through the web dashboard.
Step 1: Build the image
docker build -t origo-bc-mcp https://github.com/businesscentralal/origo-bc-mcp.gitStep 2: Run the container
Mount a local folder for persistent config storage:
docker run -d --name origo-bc-mcp --restart unless-stopped -p 3000:3000 -v "E:\Docker Storage\origo-bc-mcp:/data" -e MCP_ENCRYPTION_KEY=<64-hex-chars> -e MCP_ADMIN_USER=admin -e MCP_ADMIN_PASSWORD=<your-password> -e OLLAMA_PROXY_TARGET=http://<ollama-host>:11434 origo-bc-mcpdocker run -d --name origo-bc-mcp --restart unless-stopped -p 3000:3000 -v /path/to/origo-bc-mcp-data:/data -e MCP_ENCRYPTION_KEY=<64-hex-chars> -e MCP_ADMIN_USER=admin -e MCP_ADMIN_PASSWORD=<your-password> -e OLLAMA_PROXY_TARGET=http://<ollama-host>:11434 origo-bc-mcp
MCP_ENCRYPTION_KEYencrypts connection secrets (passwords, client secrets) at rest in the volume. Generate one with:openssl rand -hex 32
MCP_ADMIN_USER/MCP_ADMIN_PASSWORDsecure the dashboard on first boot. Without these, the dashboard is open until you configure Basic Auth in the setup UI.
Step 3: Configure via the dashboard
Open http://localhost:3000/dashboard/setup in your browser.
On first launch (no config exists), the dashboard is open. Add your first connection and enable Basic Auth — subsequent visits will require login.
The setup page lets you:
Add SaaS (Entra) or On-Premises BC connections
Validate connections (test button confirms access and lists companies)
Configure Basic Auth credentials (used for both MCP access and dashboard login)
Remove connections
Step 4: Connect your MCP client
Point your MCP client (VS Code Copilot, Claude Desktop, Open WebUI, etc.) at:
http://localhost:3000/mcpWith Basic Auth header using the credentials you configured in the dashboard.
Dashboard login
The dashboard is protected by the same Basic Auth credentials configured in Setup. If you haven't configured Basic Auth yet, the dashboard is open (to allow first-time setup).
Environment variables
Variable | Default | Description |
|
| Directory for |
| — | Bootstrap admin username (sets Basic Auth on first start if no config exists) |
| — | Bootstrap admin password (pair with |
| — | 64 hex characters for AES-256-GCM encryption of secrets at rest |
|
| Public URL for the server |
|
| Listen port |
| — | Set to |
|
| Ollama server URL for the |
Generating MCP_ENCRYPTION_KEY
The key must be exactly 64 hex characters (32 bytes). Generate one with any of these:
# OpenSSL (Linux/macOS/Git Bash)
openssl rand -hex 32
# Node.js (any platform)
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# PowerShell (Windows)
-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) })Store the key securely — if you lose it, secrets encrypted with it cannot be recovered.
Docker Compose example
services:
mcp:
build: https://github.com/businesscentralal/origo-bc-mcp.git
ports:
- "3000:3000"
volumes:
- ./mcp-data:/data
environment:
- MCP_ENCRYPTION_KEY=${MCP_ENCRYPTION_KEY}
- MCP_ADMIN_USER=${MCP_ADMIN_USER:-admin}
- MCP_ADMIN_PASSWORD=${MCP_ADMIN_PASSWORD}
restart: unless-stoppedHealth check
curl http://localhost:3000/healthzInstall from tarball
The server is published to the Azure Artifacts feed BC-PTE-CloudEvents for
local dev/test on Windows and macOS. If you download the package artifact as a
tarball, use the cross-platform setup guide:
The older feed-based guides are still available if you want npm to install directly from Azure Artifacts:
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connects AI assistants to CloudQuell multi-cloud and AI cost, savings, anomaly, and budget data.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI clients to interact with Microsoft Dynamics 365 Business Central through MCP, providing access to customers, items, sales orders, and allowing creation of new records via natural language.2-
- AlicenseAqualityAmaintenanceGive AI assistants direct access to Microsoft Dynamics 365 Business Central via native WebSocket protocol.145738MIT
- AlicenseAqualityDmaintenanceModel Context Protocol (MCP) server for Microsoft Dynamics 365 Business Central. Provides AI assistants with direct access to Business Central data through properly formatted API v2.0 calls.6308MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to directly access and interact with Microsoft Dynamics 365 Business Central using native WebSocket protocol.1457MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/businesscentralal/origo-bc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server