Business Central MCP Server

Business Central MCP Server

Enables 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.

Category
访问服务器

README

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

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": "test@example.com"
}

Usar REST Client extension de VS Code para ejecutar los tests directamente desde el editor.

🔧 Integración con Claude Desktop

  1. 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
  2. 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"]
        }
      }
    }
    
  3. 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_server para pruebas y debugging.
  • API REST: Ejecuta uvicorn bc_server.http_server:app --reload y prueba los endpoints en http://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

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.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选