business-central-mcp-server
business-central-mcp-server
Dynamics 365 Business Central(온라인) 데이터를 MCP 클라이언트(Claude Code, Claude Desktop 등)에 노출하는 MCP 서버입니다. 환경, 회사, 표준 v2.0 API 또는 사용자 지정 AL API를 통해 접근 가능한 모든 엔터티를 다룹니다.
api.businesscentral.dynamics.com과 통신하며, 동일한 대상에 대한 Entra 토큰을 사용합니다. 위임된(delegated) 인증(대화형 / cli / azure-powershell)을 사용하면 앱 등록이나 관리자 동의가 필요 없습니다 — 로그인한 사용자로 작동하며, 해당 사용자의 Business Central 권한 집합에 의해 제한됩니다.
도구
읽기(항상 활성화)
도구 | 목적 |
| 테넌트의 BC 환경(프로덕션 + 샌드박스)을 나열합니다. |
| 환경의 회사(법인)를 나열합니다. ID는 엔터티 도구에 사용됩니다. |
| API 경로의 엔터티 집합(customers, items, salesInvoices, ...)을 나열합니다. |
| 엔터티 집합에 대한 OData 쿼리 — |
| ID(GUID)로 단일 레코드를 가져옵니다. |
AL 확장에서 게시된 사용자 지정 API는 api_route: "{publisher}/{group}/{version}"을 통해 모든 곳에서 접근할 수 있습니다.
문서 내보내기
Business Central은 생성된 문서와 업로드된 파일을 JSON 필드가 아닌 OData 미디어 스트림으로 제공합니다. export_file은 해당 바이트를 가져와 디스크에 씁니다. 도구는 콘텐츠 대신 경로, 크기, SHA-256을 반환하므로 큰 PDF가 모델의 컨텍스트에 들어가지 않습니다. BC에서만 읽지만 로컬 파일 시스템에 쓰기 때문에 쓰기 계층에 등록됩니다 — 사용하려면 BC_MCP_MODE=write로 설정하세요.
먼저 미디어 링크를 확인한 다음 다운로드하세요:
// get_entity — confirm the invoice has a renderable PDF
{ "entity_set": "salesInvoices", "record_id": "<guid>", "sub_path": "pdfDocument" }
// export_file — write the bytes out
{
"entity_set": "salesInvoices",
"record_id": "<guid>",
"sub_path": "pdfDocument/pdfDocumentContent",
"output_path": "./exports"
}유용한 미디어 경로: salesInvoices, salesCreditMemos, purchaseInvoices의 pdfDocument/pdfDocumentContent; attachments의 content; items 및 employees의 picture.
output_path는 파일 또는 디렉터리일 수 있습니다 — 디렉터리(또는 끝에 구분 기호)는 레코드와 감지된 콘텐츠 유형에서 파일 이름을 파생합니다. 생략하면 BC_EXPORT_DIR로, 그 다음 작업 디렉터리로 대체됩니다. overwrite: true를 전달하지 않는 한 기존 파일은 절대 덮어쓰지 않으며, max_bytes(기본 64MiB)를 초과하는 다운로드는 아무것도 쓰기 전에 거부됩니다.
쓰기(BC_MCP_MODE=write)
도구 | 목적 |
| 레코드(customer, item, sales order 등)를 삽입합니다. |
| 레코드의 필드를 PATCH합니다. |
| 바인딩된 작업( |
| 문서(인보이스 PDF, 첨부 파일, 사진)를 로컬 파일로 다운로드합니다. |
모든 쓰기 호출은 타임스탬프, 도구, 대상, 호출자 ID와 함께 stderr에 감사 로그로 기록됩니다. 이것들은 실제 ERP 데이터를 변경합니다 — 문서를 전기하면 단순히 삭제할 수 없는 원장 항목이 생성됩니다. 실험하는 동안 BC_DEFAULT_ENVIRONMENT를 샌드박스로 지정하세요.
파괴적(BC_MCP_MODE=write 및 BC_MCP_ALLOW_DELETE=true)
도구 | 목적 |
| 레코드를 영구 삭제합니다. 2단계 dry_run → confirm_token → 적용. |
파괴적 계층은 기본적으로 꺼져 있습니다. 활성화되면 각 호출은 먼저 계획입니다: dry_run=true(기본값)는 제거될 레코드와 일회용 confirm_token을 반환합니다. dry_run=false와 해당 토큰을 사용한 두 번째 호출만 삭제를 수행하며, If-Match etag로 보호됩니다.
Related MCP server: Microsoft Business Central MCP Server
Claude Desktop에 설치
최신 릴리스에서 business-central-mcp-server-<version>.mcpb를 다운로드하여 엽니다. 그것이 전체 설치입니다 — 클론, npm install, Node가 필요 없습니다. Claude Desktop에는 자체 Node 런타임이 포함되어 있으며 번들에는 종속성이 포함되어 있습니다.
설치 대화 상자에서 수집하는 항목:
필드 | 필수 | 참고 |
Entra 테넌트 ID | 예 | Business Central이 있는 테넌트 GUID입니다. |
내보내기 폴더 | 예 |
|
로그인 방법 | 아니요 | 기본값은 |
서버 모드 | 아니요 |
|
레코드 삭제 허용 | 아니요 | 기본적으로 꺼져 있습니다. 쓰기 모드가 필요합니다. 없으면 무시됩니다. |
기본 환경 | 아니요 | 모든 호출에서 |
기본 회사 ID | 아니요 | 모든 호출에서 |
클라이언트 ID / 비밀 | 아니요 | 서비스 주체 로그인 전용입니다. 비밀은 OS 자격 증명 관리자가 보관합니다. |
토큰 범위 / API 기본 | 아니요 | 소버린 클라우드 또는 임베디드 ISV 배포 전용입니다. |
기본 interactive 로그인을 사용하는 경우 클라이언트 ID와 비밀을 비워 두세요. 서버는 공용 Azure CLI 클라이언트로 대체되고 브라우저를 열며 로그인한 사용자로 해당 사용자의 Business Central 권한 집합 아래에서 작동합니다. 앱 등록이나 관리자 동의를 준비할 필요가 없습니다.
브라우저 프롬프트는 Claude Desktop을 다시 시작할 때마다 다시 나타납니다. 토큰은 메모리에만 보관됩니다. 영구 저장하려면 네이티브 자격 증명 캐시 모듈과 플랫폼별 별도 번들이 필요합니다.
직접 번들 빌드
npm ci
npm run build:mcpb # writes dist/business-central-mcp-server-<version>.mcpb
npm run verify:mcpb # unpacks it and boots the server the way Desktop wouldbuild:mcpb는 매니페스트 버전이 package.json과 일치하지 않거나 선언된 도구 목록이 서버가 실제로 등록하는 것과 일치하지 않는 번들을 생성하지 않습니다.
설정(Claude Code 및 기타 MCP 클라이언트)
cd business-central-mcp-server
npm installMCP 클라이언트에 등록하세요. 예: .claude.json 항목(위임 인증, 읽기 전용):
{
"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"
}
}
}
}레코드 생성/업데이트 및 바인딩된 작업 호출을 허용하려면 "BC_MCP_MODE": "write"로 설정하세요. 삭제도 허용하려면 "BC_MCP_ALLOW_DELETE": "true"를 추가하세요.
단일 회사에서 작업하고 모든 호출에서 company_id를 생략하려면 BC_DEFAULT_COMPANY_ID를 list_companies의 값으로 설정하세요.
호출에서 output_path를 생략할 때 export_file이 쓰는 위치를 선택하려면 BC_EXPORT_DIR을 설정하세요.
지원되는 모든 인증 모드를 포함한 전체 환경 변수 목록은 .env.example을 참조하세요.
인증 참고 사항
위임(권장):
interactive,device-code,cli또는azure-powershell. 앱 등록이 필요 없습니다. 호출자는 로그인한 사용자로 작동하며 해당 사용자의 BC 권한 집합 및 회사 액세스로 제한됩니다.서비스 주체: 비대화형이지만, 데이터 플레인이 수락하기 전에 SP가 Business Central 내부에서 Entra 애플리케이션(Entra 애플리케이션 페이지, 권한 집합 할당 포함)으로 등록되어야 합니다.
list_environments는 관리 센터 검색 API를 사용하며, 추가로 BC 관리 센터 액세스가 필요합니다. 다른 도구는 환경 이름을 직접 전달하면 그것 없이도 작동합니다.
요구 사항
대상 테넌트에서 Business Central에 라이선스가 있는 Entra ID.
소스에서 실행하는 경우 Node.js >= 20. Claude Desktop 번들에는 그러한 요구 사항이 없습니다. Desktop이 런타임을 제공합니다.
라이선스
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
Provide seamless access to Appfolio Property Manager Reporting API through a standardized MCP serv…
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Authenticated, user-scoped MCP connectors for 30+ business systems.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables MCP clients to interact with Microsoft Dynamics 365 Business Central entities, providing tools to get schemas, list, create, update, and delete records.6MIT
- 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
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients to access and manage Microsoft Dynamics 365 Business Central entities, such as creating sales orders, via a modern async MCP server.MIT
- AlicenseAqualityCmaintenanceMCP server for Microsoft Dynamics 365 Business Central that enables AI assistants to query and manage Business Central data via full CRUD operations.630MIT
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/user-vik/business-central-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server