Business Central MCP
An MCP server for interacting with Microsoft Business Central, built with FastMCP and FastAPI.
MCP_BusinessCentral - Servidor Model Context Protocol 🚀
Este proyecto implementa un servidor MCP para Microsoft Business Central, usando FastMCP y FastAPI, integrable con Claude Desktop y otros clientes AI.
🌐 Servidor Online Disponible
🎉 El servidor está desplegado y operativo en Azure App Service:
- URL: https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net
- Documentación API: https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/docs
- Estado: ✅ 100% funcional con datos reales de Business Central
- Endpoints disponibles: GET /customers, /items, /orders, POST /customers
📋 Para usar el servidor desplegado: Consulta el archivo test-mcp-api.http con ejemplos de todas las operaciones.
📋 ¿Qué es MCP?
El Model Context Protocol (MCP) es un estándar abierto que permite a clientes AI acceder a herramientas, datos y servicios externos de forma segura y estructurada. MCP define una arquitectura cliente-servidor donde:
- MCP Host: Cliente AI (Claude, Copilot, etc.)
- MCP Client: Conector MCP en el host
- MCP Server: Este proyecto (Python) expone herramientas y lógica de negocio
- Transporte: JSON-RPC sobre stdin/stdout (local) o HTTP/SSE (remoto)
Más información: MCP servers en Microsoft Learn
🔒 Autenticación y Seguridad
- Se recomienda usar Microsoft Entra ID (Azure AD) y OAuth2 para entornos de producción.
- Consulta la guía de autenticación para Business Central.
Ejemplo: Autenticación OAuth2 con Entra ID
import httpx
def get_bc_token(tenant_id, client_id, client_secret, scope):
url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
data = {
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
"scope": scope
}
response = httpx.post(url, data=data)
response.raise_for_status()
return response.json()["access_token"]
Más información: Guía de autenticación
⚠️ Manejo de límites y errores
- Business Central impone límites de uso (rate limits) en sus APIs. Si recibes errores 429 (Too Many Requests) o 504 (Gateway Timeout), implementa lógica de reintentos y backoff.
- Más información: Límites de API en Business Central.
Ejemplo: Manejo de errores 429 y 504 en llamadas a la API
import httpx
import time
def call_bc_api_with_retry(url, headers, max_retries=5):
retries = 0
backoff = 2
while retries < max_retries:
response = httpx.get(url, headers=headers)
if response.status_code == 429:
wait = backoff ** retries
print(f"Rate limit alcanzado. Reintentando en {wait}s...")
time.sleep(wait)
retries += 1
elif response.status_code == 504:
print("Timeout de la API. Reintentando...")
time.sleep(backoff)
retries += 1
else:
return response
raise Exception("No se pudo completar la petición tras varios intentos")
Más información: Límites de API en Business Central
🏅 Buenas prácticas de integración
- Usa siempre los endpoints REST oficiales de Business Central para la integración.
- Desacopla la lógica de negocio del transporte MCP.
- Documenta claramente las herramientas expuestas y sus parámetros siguiendo el estándar MCP.
- Consulta la documentación de APIs REST de Business Central.
🏗️ Estructura del Proyecto
📁 MCP_BusinessCentral/
├── requirements.txt # Dependencias Python
├── README.md # Documentación principal
├── .env # Variables de entorno (no se incluye en repo)
├── .venv/ # Entorno virtual Python
├── .github/copilot-instructions.md
├── .vscode/tasks.json # Tareas de VS Code
├── task1.txt # (Ejemplo o pruebas)
└── 📁 bc_server/ # Paquete principal
├── BusinessCentralMCP.py # Servidor MCP (JSON-RPC) para BC
├── http_server.py # API REST (FastAPI) con OpenAPI/Swagger
├── setup_guide.py # Script de validación de entorno y credenciales
├── client.py # Cliente HTTP para la API de BC
├── config.py # Carga y validación de configuración
└── __init__.py
🎯 Servidores y APIs Implementados
1. BusinessCentralMCP.py - Servidor MCP (JSON-RPC)
Expone herramientas para interactuar con Business Central vía JSON-RPC:
- get_customers(limit): Lista clientes
- get_customer_details(customer_id): Detalle de un cliente
- get_items(limit): Lista artículos
- get_sales_orders(limit): Lista órdenes de venta
- create_customer(...): Crea un nuevo cliente
2. http_server.py - API REST (FastAPI)
Expone los mismos métodos anteriores vía HTTP REST, con documentación Swagger/OpenAPI.
3. setup_guide.py - Validación de entorno
Script para comprobar variables de entorno y conectividad con Azure AD y Business Central.
🛠️ Tecnologías Utilizadas
- FastMCP: Framework para servidores MCP (JSON-RPC)
- FastAPI: API REST moderna con documentación automática
- httpx: Cliente HTTP asíncrono
- Pydantic: Validación y serialización de datos
- python-dotenv: Gestión de variables de entorno
🚀 Instalación y Puesta en Marcha
💻 Entorno Local
1. Crear entorno virtual
python -m venv .venv
.venv\Scripts\Activate.ps1
2. Instalar dependencias
pip install -r requirements.txt
3. Validar entorno y credenciales
python bc_server/setup_guide.py
4. Lanzar el servidor MCP (JSON-RPC)
python -m bc_server.BusinessCentralMCP
5. Lanzar la API REST (FastAPI)
uvicorn bc_server.http_server:app --reload --host 0.0.0.0 --port 8000
Accede a la documentación interactiva en: http://localhost:8000/docs
☁️ Despliegue en Azure App Service
¿Quieres el servidor disponible online? Consulta la Guía Completa de Despliegue que incluye:
- Proceso paso a paso para Azure App Service
- Solución a todos los problemas encontrados
- Configuración de variables de entorno
- Scripts de automatización
- Suite de testing completa
Resultado: Servidor 100% operativo en Azure con integración real a Business Central.
🧪 Testing del Servidor Desplegado
El archivo test-mcp-api.http contiene una suite completa de tests para validar todas las funcionalidades:
### Health Check
GET https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/health
### Listar Clientes
GET https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/customers?limit=5
### Crear Cliente
POST https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/customers
Content-Type: application/json
{
"displayName": "Cliente Test",
"email": "[email protected]"
}
Usar REST Client extension de VS Code para ejecutar los tests directamente desde el editor.
🔧 Integración con Claude Desktop
- Localiza el archivo de configuración de Claude Desktop:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
- Añade una entrada para el servidor MCP de Business Central, por ejemplo:
{ "mcpServers": { "businesscentral-mcp": { "command": "C:/ruta/completa/.venv/Scripts/python.exe", "args": ["-m", "bc_server.BusinessCentralMCP"] } } } - Reinicia Claude Desktop para que detecte el nuevo servidor MCP.
🛠️ Herramientas Disponibles (BusinessCentralMCP)
| Herramienta | Descripción | Parámetros principales |
|---|---|---|
| get_customers | Lista clientes de Business Central | limit (int) |
| get_customer_details | Detalle de un cliente por ID | customer_id (str) |
| get_items | Lista artículos | limit (int) |
| get_sales_orders | Lista órdenes de venta | limit (int) |
| create_customer | Crea un nuevo cliente | displayName, email, ... (ver código) |
Consulta la documentación Swagger en /docs si usas la API REST.
🧪 Testing y Desarrollo
- Claude Desktop: Configura el archivo de Claude Desktop y reinicia para probar las herramientas MCP.
- Modo desarrollo: Usa los scripts de la carpeta
bc_serverpara pruebas y debugging. - API REST: Ejecuta
uvicorn bc_server.http_server:app --reloady prueba los endpoints enhttp://localhost:8000/docs. - VS Code Task: Usa la tarea "Run Python Script" para lanzar scripts rápidamente.
🎯 Casos de Uso Demostrados
- Integración MCP con Business Central
- Exposición de datos de clientes, artículos y órdenes
- Creación de clientes desde herramientas AI
- API REST y JSON-RPC para integración flexible
📚 Referencias oficiales y recursos útiles
📖 Documentación del Proyecto
| Recurso | Descripción |
|---|---|
| Guía de Despliegue Azure | Proceso completo para llevar el servidor a producción |
| Suite de Tests | Validación completa de endpoints con REST Client |
| Configuración MCP | Servidor JSON-RPC para integración con AI clients |
| API REST | Endpoints HTTP con documentación OpenAPI |
🌐 Enlaces Oficiales de Microsoft
- MCP servers en Microsoft Learn
- APIs REST de Business Central
- Desarrollar apps conectadas a Business Central
- Límites de API en Business Central
- Documentación MCP Oficial
- FastMCP GitHub
- Claude Desktop
- Pydantic Docs
- Blog TechSphereDynamics
| Recurso | Enlace |
|---|---|
| MCP servers en Microsoft Learn | https://learn.microsoft.com/en-us/azure/api-management/export-rest-mcp-server#about-mcp-servers |
| APIs REST de Business Central | https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/api-overview |
| Autenticación y apps conectadas | https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-connect-apps |
| Límites de API | https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/dynamics-rate-limits |
| Documentación MCP Oficial | https://modelcontextprotocol.io/llms-full.txt |
| FastMCP GitHub | https://github.com/jlowin/fastmcp |
| Claude Desktop | https://claude.ai/desktop |
| Pydantic Docs | https://docs.pydantic.dev/ |
| Blog TechSphereDynamics | https://techspheredynamics.com |
¡Desarrollado con visión y buen rollo! 😉
Para cualquier duda, revisa los comentarios en el código o consulta la documentación oficial de MCP.
Verwandte Server
Kone.vc
SponsorMonetize your AI agent with contextual product recommendations
MCP Zotero
Interact with your Zotero library for managing references and citations.
Prompt Book Server
Connects to Notion databases to manage, search, and retrieve AI prompts across multiple collections.
agentic-store-mcp
Power up your AI agents with 31 production-ready tools. Features local-first Python analysis, real-time SearXNG search, and a secure local proxy to sanitize prompts. Built for developers who value performance and privacy. Install once, use everywhere.
Todoist MCP
Manage your Todoist tasks and projects directly from your LLM.
ClearPolicy
ClearPolicy is a document signing and compliance tracking tool for organizations. Once connected, your AI assistant can import documents, send signature requests, track who has and hasn't signed, and manage your contacts — all by prompt.
Neural Memory
Persistent memory for AI agents — 55 MCP tools, spreading activation recall, neuroscience-inspired consolidation
MCP Invoice Parser
Parses invoice data, uploads it to Google Sheets, and answers queries by fetching information from the sheet.
Claude Desktop MCP
An MCP server for integrating with the Claude Desktop application on macOS. Requires the Claude Desktop app to be installed and configured.
VMware vSphere MCP Server
An MCP Server that acts as a standardized interface exposing VMware vCenter functionalities as Tools directly consumable by AI models
Google Sheets
Integrate with Google Sheets to read, write, and manage spreadsheet data.