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.
Prerequisites
Node.js 22+ — nodejs.org (LTS recommended)
Related MCP server: Business Central MCP Server
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.
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:
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.
Latest Blog Posts
- 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