business-central-mcp
概要
プロパティ | 値 |
言語 | TypeScript / Node 20+ |
npmパッケージ | |
BCバージョン | BC27、BC28(ワイヤー互換) |
認証 | NavUserPassword(OAuthはロードマップに含まれる) |
ツール | 12 |
テスト | 284 ユニット/プロトコル + 111 統合 |
ライセンス | MIT |
インストール
VSCode
バッジをクリックしてください。VSCodeが開き、サーバーの追加を促し、ユーザーのmcp.jsonに書き込みます。
エントリのenvブロックにBC_BASE_URL、BC_USERNAME、BC_PASSWORDを設定する必要があります。VSCodeが編集用にファイルを開きます。
ワークスペース: .vscode/mcp.jsonを作成します:
{
"servers": {
"business-central": {
"command": "npx",
"args": ["-y", "business-central-mcp"],
"env": {
"BC_BASE_URL": "http://your-bc-server/BC",
"BC_USERNAME": "your-user",
"BC_PASSWORD": "your-password"
}
}
}
}Claude Code
claude mcp add business-central \
-e BC_BASE_URL=http://your-bc-server/BC \
-e BC_USERNAME=you \
-e BC_PASSWORD=secret \
-- npx -y business-central-mcp--scope projectで現在のプロジェクトにスコープします。スコープオプションについてはclaude mcp --helpを参照してください。
Claude Desktop
Releasesから最新の
.dxtをダウンロードします。ダブルクリックします。Claude Desktopが設定→拡張機能を開き、BC URL、ユーザー名、パスワードを要求します。
Claude Desktopを再起動します。
claude_desktop_config.jsonを編集します:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"business-central": {
"command": "npx",
"args": ["-y", "business-central-mcp"],
"env": {
"BC_BASE_URL": "http://your-bc-server/BC",
"BC_USERNAME": "your-user",
"BC_PASSWORD": "your-password"
}
}
}
}Claude Desktopを再起動します。
設定
変数 | 必須 | デフォルト | 説明 |
| はい | — | BCサーバーのベースURL。例: |
| はい | — | NavUserPasswordのユーザー名 |
| はい | — | NavUserPasswordのパスワード |
| いいえ | サーバーデフォルト | プロファイルID。例: |
| いいえ |
| マルチテナント展開のみ。 |
| いいえ |
| セッション開始時にBCに報告されるバージョン。 |
| いいえ |
| HTTPトランスポートのポート(stdioトランスポートでは無視されます)。 |
| いいえ |
|
|
| いいえ |
| ログファイルのディレクトリ。 |
| いいえ |
| セッション状態のディレクトリ。 |
| いいえ |
| 呼び出しごとのタイムアウト(ミリ秒)。ハングしたセッションを強制終了します。 |
| いいえ |
| セッション終了後の再接続試行回数。 |
| いいえ |
| 指数バックオフ再接続の基本遅延(ミリ秒)。 |
できること
ツール | 説明 |
| IDで任意のページを開きます -- リスト、カード、ドキュメント、ロールセンター。ページを |
| 単一セクションを更新します: フィルタ、ページング、スライス、タブ/列の投影。 |
| フィールド値を書き込みます。BCが検証し、確認された値をエコーします。セクション対応(明細、FactBox、ヘッダー)。 |
| ヘッダー/行/ウィザードアクションを実行するか、 |
| 確認プロンプトと要求ページを処理します。 |
| 行の選択、レコードへのドリルダウン、フィールドルックアップ。 |
| Tell Me検索。結果ごとに |
| ページを閉じてサーバーリソースを解放します。 |
| セッション中に別の会社に切り替えます。 |
| 利用可能な会社を検出します。 |
| レポートを実行し、要求ページのパラメータを入力します。 |
| NavigatePage / ウィザードフローを操作します(戻る/次へ/完了/キャンセル)。 |
仕組み
このサーバーはBCの内部WebSocketプロトコルを直接話します -- ブラウザベースのWebクライアントが使用するのと同じプロトコルです。逆コンパイルされたBCサーバーアセンブリからリバースエンジニアリングされました。ODataエンドポイントもSOAPサービスもSeleniumもありません。
セッションごとに1つのWebSocket接続。すべての操作はプロミスキューを通じて直列化されます。BC27とBC28はワイヤー互換です。
LLM (Claude / Copilot / etc.)
|
v MCP (stdio or HTTP)
business-central-mcp
|
v WebSocket + JSON-RPC
BC Web Service Tier (BC27 / BC28)
|
v internal calls
BC Serverbc_open_pageはページをセクションのフラットリストとして返します:
{
"pageContextId": "session:page:21:abc",
"pageType": "Card",
"caption": "Customer Card",
"isModal": false,
"sections": [
{ "sectionId": "header", "kind": "header", "fields": [...], "actions": [...] },
{ "sectionId": "factbox:Customer Statistics", "kind": "factbox", "fields": [...] }
]
}各セクションは独自のコンテンツ形状を持ちます:
カード型(Cardページの
header、factbox、requestPage):fields[]と(headerの場合は)actions[]リスト型(ドキュメントの
lines、リストページのheader、リピーターサブページ):rows[]とtotalRowCountキュータイル(ロールセンターがホストするCardParts):
cues[]で、各タイルのname、value、groupCaption、synopsis、hasAction。bc_execute_action { section, cue }でドリルダウンします。
bc_read_dataは要求されたsectionId(デフォルトは"header")の単一のSectionを返します。FactBoxまたはサブページのセクションIDはbc_open_pageのレスポンスから取得します。
セッション終了後の指数バックオフによる自動再接続
BCのクラッシュ後の約15秒のNTLM認証スロット保持を処理
新しいデータベースでのライセンスポップアップを自動的に閉じる
呼び出しタイムアウトでハングしたセッションを強制終了し、回復をトリガー
セッション中の
LogicalModalityViolationExceptionからの自動回復: モーダルスタックを調整し、透過的に再試行。BCが確認ダイアログを固定した場合はセッションリセットにフォールバック
主要ファイル
ファイル | 目的 |
| npm |
| HTTP MCPトランスポートエントリ |
| MCPツールレジストリ、スキーマ、リクエストハンドラ |
| ツールごとのハンドラ( |
| ページ、データ、アクション、ナビゲーション、検索のビジネスロジック |
| WebSocketトランスポート、ワイヤータイプ、キャプチャ |
| セッションライフサイクル、モーダルスタック、再接続 |
| Claude Desktop拡張機能マニフェスト |
| Claude Desktop用の |
|
|
| 延期された作業(OAuth、Cursor、initウィザード) |
開発
git clone https://github.com/SShadowS/business-central-mcp
cd business-central-mcp
npm install
npm run start:stdio-direct # Run from source
npm test # 284 unit + protocol tests
npm run test:integration # 111 integration tests against real BC (requires running BC server)ロードマップ
OAuth、Cursorサポート、インタラクティブなinitウィザード、およびいくつかのプロトコルギャップ。
完全なリストと優先順位はROADMAP.mdを参照してください。
著者: Torben Leth (sshadows@sshadows.dk) ライセンス: MIT(LICENSEを参照)
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
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for AI dialogue using various LLM models via AceDataCloud
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/masoniqbal777/Business-Central-Mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server