Skip to main content
Glama
javiarmesto

Business Central MCP Server

by javiarmesto
connector-setup-guide.md15 kB
# 🔧 Guía de Configuración del Conector en Copilot Studio Esta guía te llevará paso a paso para crear y configurar el conector personalizado de Business Central en Microsoft Copilot Studio. ## 📋 TL;DR - **Tiempo estimado**: 30-45 minutos - **Prerrequisitos**: Licencia Copilot Studio, servidor MCP desplegado - **Resultado**: Conector operativo listo para usar en agentes conversacionales - **Método**: Importación de definición OpenAPI + configuración visual --- ## 🎯 Prerrequisitos ### Licencias y Accesos Requeridos - ✅ **Microsoft Copilot Studio** con licencia activa - ✅ **Power Platform** - Entorno con permisos de administrador - ✅ **Servidor MCP desplegado** - URL operativa en Azure - ✅ **Credenciales de Business Central** - Configuradas en Azure App Service ### Verificaciones Previas ```http # 1. Verificar que el servidor esté operativo GET https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/health # 2. Confirmar esquema OpenAPI disponible GET https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/openapi.json # 3. Probar endpoint de ejemplo GET https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/customers?limit=3 ``` --- ## 🚀 Paso 1: Acceder a Copilot Studio ### 1.1 Navegar al Portal 1. Ir a **[Microsoft Copilot Studio](https://copilotstudio.microsoft.com/)** 2. Iniciar sesión con credenciales corporativas 3. Seleccionar el **entorno apropiado** (Desarrollo/Producción) ### 1.2 Verificar Permisos - **System Administrator** o **System Customizer** en Power Platform - **Copilot Studio User** como mínimo - **Environment Maker** para crear recursos --- ## 🔌 Paso 2: Crear el Conector Personalizado MCP ### 2.1 Proceso Oficial Microsoft para MCP Según la [documentación oficial de Microsoft](https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-extend-action-mcp), el proceso para MCP es específico: 1. **Crear un servidor MCP** ✅ (Ya tienes esto desplegado) 2. **Crear conector personalizado MCP** basado en esquema YAML específico 3. **Consumir vía Copilot Studio** agregando herramientas desde el conector MCP 4. **Publicar el conector** (opcional) para uso multi-tenant ### 2.2 Acceder a la Creación de Conector MCP **Método Correcto Según Microsoft**: 1. En Copilot Studio, ir a **"Agents"** en navegación izquierda 2. Seleccionar tu agente de la lista 3. Ir a página **"Tools"** de tu agente 4. Seleccionar **"Add a tool"** 5. Seleccionar **"New tool"** 6. Seleccionar **"Custom connector"** → Te lleva a Power Apps 7. En Power Apps: **"New custom connector"** 8. Seleccionar **"Import OpenAPI file"** ### 2.3 Importar Definición para MCP **⚠️ Diferencia Crítica para MCP**: Microsoft requiere esquema YAML específico compatible con Power Platform. **Opción A: Usar Esquema Power Platform Compatible (Recomendado)** 1. Usar el archivo `business-central-power-platform.yaml` 2. Seleccionar **"Upload file"** 3. Subir el archivo YAML optimizado para Power Platform 4. Hacer clic en **"Import"** **Opción B: Esquema MCP Streamable Puro (Avanzado)** 1. Usar el archivo `business-central-mcp-streamable.yaml` 2. ⚠️ **Nota**: Puede requerir ajustes adicionales para compatibilidad **Si encuentras errores de validación OpenAPI**: - Usar `business-central-power-platform.yaml` que está optimizado para Power Platform - Este esquema mantiene funcionalidad MCP pero es compatible con validación de Microsoft ### 2.4 Configurar Información Básica MCP - **Connector Name**: `Business Central MCP` - **Description**: `Conector MCP para integrar Business Central vía servidor MCP con transporte Streamable` - **Host**: `mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net` - **Base URL**: `/` (raíz) **⚠️ Diferencias Clave para MCP**: - **Protocolo**: `x-ms-agentic-protocol: mcp-streamable-1.0` - **Endpoint único**: `/mcp` (no múltiples endpoints REST) - **Comunicación**: JSON-RPC sobre HTTP POST - **Herramientas**: Expuestas automáticamente por el servidor MCP --- ## 🔐 Paso 3: Configurar Autenticación MCP ### 3.1 Opciones de Autenticación para MCP **Para Desarrollo/Testing:** - Seleccionar **"No authentication"** - El servidor MCP maneja la autenticación internamente - Útil para pruebas iniciales y desarrollo **Para Producción (Recomendado):** - Seleccionar **"API Key"** - **Parameter label**: `API Key Business Central MCP` - **Parameter name**: `X-API-Key` - **Parameter location**: `Header` ### 3.2 Implementar Validación API Key en Servidor MCP Para producción, modifica tu servidor MCP para validar la API Key: ```python # En bc_server/BusinessCentralMCP.py - Servidor MCP principal import os from typing import Optional class BusinessCentralMCPServer: def __init__(self): self.api_key = os.getenv("API_KEY") async def validate_request(self, headers: dict) -> bool: """Validar API Key en requests MCP""" if not self.api_key: return True # Sin validación en desarrollo provided_key = headers.get("X-API-Key") return provided_key == self.api_key async def handle_call(self, request, headers: dict): """Manejar llamadas MCP con validación""" if not await self.validate_request(headers): raise Exception("API Key inválida o faltante") # Procesar solicitud MCP normalmente return await self.process_mcp_request(request) ``` **Configurar en Azure App Service**: - Variable: `API_KEY` - Valor: `bc-mcp-secret-2025-v1` (usar clave segura) --- ## ✅ Paso 4: Validar Herramientas MCP ### 4.1 Herramientas Detectadas Automáticamente Con MCP, las herramientas se detectan automáticamente desde el servidor: | Herramienta MCP | Descripción | Parámetros | |-----------------|-------------|------------| | `get_customers` | Consultar clientes | `limit` (opcional) | | `get_customer_details` | Detalle específico cliente | `customer_id` | | `create_customer` | Crear nuevo cliente | `displayName`, `email`, etc. | | `get_items` | Catálogo productos | `limit` (opcional) | | `get_sales_orders` | Órdenes de venta | `limit` (opcional) | | `health_check` | Estado servidor | Ninguno | ### 4.2 Configuración Automática vs Manual **✅ Ventaja MCP**: Las herramientas se configuran automáticamente - **Nombres**: Heredados del servidor MCP - **Descripciones**: Definidas en el servidor - **Parámetros**: Validación automática - **Actualizaciones**: Dinámicas cuando cambia el servidor **Personalización Opcional**: - **Visibility**: Marcar herramientas principales como `Important` - **Friendly Names**: Ajustar nombres para usuarios finales - **Grouping**: Organizar por categorías (Clientes, Productos, Ventas) --- ## 🧪 Paso 5: Probar el Conector ### 5.1 Ejecutar Pruebas Básicas 1. Ir a la pestaña **"Test"** 2. Hacer clic en **"+ New connection"** 3. Si usas API Key, introducir la clave 4. Hacer clic en **"Create connection"** ### 5.2 Probar Operaciones **Prueba 1: Health Check** - Operación: `healthCheck` - Parámetros: Ninguno - Resultado esperado: `{"status": "ok"}` **Prueba 2: Listar Clientes** - Operación: `getCustomers` - Parámetros: `limit = 3` - Resultado esperado: Array con datos de clientes **Prueba 3: Crear Cliente (Opcional)** - Operación: `createCustomer` - Body: ```json { "displayName": "Cliente Test Conector", "email": "test.conector@example.com" } ``` ### 5.3 Validar Respuestas ✅ **Conexión exitosa**: Status 200/201 ✅ **Datos válidos**: Estructura JSON correcta ✅ **Errores controlados**: Mensajes informativos en fallos --- ## 🎨 Paso 6: Personalizar para Copilot ### 6.1 Configurar Política de Datos 1. Ir a **"Data"** > **"Data policies"** 2. Clasificar el conector según sensibilidad: - **Business**: Para datos internos de la empresa - **Confidential**: Si incluye información sensible - **General**: Para datos no críticos ### 6.2 Configurar Descripciones Semánticas Para mejorar la comprensión del AI, enriquecer descripciones: **Para `getCustomers`:** ``` Busca y obtiene información de clientes registrados en Business Central. Útil para consultas como "buscar cliente", "información de empresa", "datos de contacto". Permite limitar resultados para búsquedas eficientes. ``` **Para `createCustomer`:** ``` Registra un nuevo cliente en Business Central con datos básicos. Requiere al menos nombre de la empresa. Útil cuando el usuario dice "crear cliente", "registrar empresa", "dar de alta". ``` ### 6.3 Configurar Triggers Semánticos Para cada operación, agregar **palabras clave** que el AI reconocerá: | Operación | Triggers Sugeridos | |-----------|-------------------| | `getCustomers` | buscar cliente, información empresa, contacto, cliente, empresa | | `createCustomer` | crear cliente, registrar empresa, nuevo cliente, alta | | `getCustomerById` | detalle cliente, información específica, datos de | | `getItems` | productos, artículos, catálogo, inventario, stock | | `getSalesOrders` | órdenes, ventas, pedidos, facturación | --- ## 🚀 Paso 7: Guardar y Publicar ### 7.1 Guardar Configuración 1. Hacer clic en **"Save"** en la parte superior 2. Confirmar que no hay errores de validación 3. Esperar confirmación de guardado ### 7.2 Publicar el Conector 1. Hacer clic en **"Publish"** 2. Seleccionar **versión** (ej: `1.0.0`) 3. Agregar **notas de versión**: ``` v1.0.0 - Conector inicial Business Central MCP - 6 operaciones principales implementadas - Integración con datos reales de BC - Soporte para consultas y creación ``` 4. Confirmar publicación --- ## 🤖 Paso 8: Integrar con Agente ### 8.1 Crear Nuevo Agente 1. Ir a **"Copilots"** > **"Create"** 2. Elegir **"New copilot"** 3. Configurar: - **Name**: `Asistente Business Central` - **Description**: `Ayuda con consultas y gestión de datos de Business Central` - **Language**: `Spanish (Spain)` ### 8.2 Agregar el Conector 1. En el agente, ir a **"Actions"** 2. Hacer clic en **"+ Add action"** 3. Seleccionar **"Connector"** 4. Buscar `Business Central MCP` 5. Seleccionar las operaciones deseadas ### 8.3 Configurar Prompts de Sistema ``` Eres un asistente especializado en Microsoft Business Central. Puedes ayudar con: - Buscar información de clientes y empresas - Consultar el catálogo de productos - Revisar órdenes de venta - Registrar nuevos clientes Cuando el usuario pregunte sobre clientes, empresas o contactos, usa getCustomers. Para consultas de productos o inventario, usa getItems. Para información de ventas o pedidos, usa getSalesOrders. Si necesitan registrar un cliente nuevo, usa createCustomer. Siempre proporciona respuestas claras y estructuradas en español. ``` --- ## 🔍 Paso 9: Testing Final ### 9.1 Conversaciones de Prueba **Prueba 1: Consulta de Cliente** ``` 👤 Usuario: "¿Puedes buscar información de la empresa Fabrikam?" 🤖 Copilot: [Ejecuta getCustomers] "Encontré información de Fabrikam Inc..." ``` **Prueba 2: Catálogo de Productos** ``` 👤 Usuario: "¿Qué productos tenemos disponibles?" 🤖 Copilot: [Ejecuta getItems] "Aquí tienes nuestro catálogo..." ``` **Prueba 3: Crear Cliente** ``` 👤 Usuario: "Necesito registrar una nueva empresa llamada TechCorp" 🤖 Copilot: [Solicita datos] "¿Puedes proporcionarme email y dirección?" ``` ### 9.2 Validar Integración Completa ✅ **Conexiones funcionando**: Sin errores de conectividad ✅ **Datos correctos**: Información real de Business Central ✅ **Flujo natural**: Conversaciones fluidas ✅ **Manejo de errores**: Respuestas apropiadas en fallos --- ## 🎯 Próximos Pasos ### Mejoras Inmediatas - [ ] **Configurar más operaciones** (actualizar, eliminar) - [ ] **Refinar prompts** para mejores respuestas - [ ] **Agregar validaciones** de entrada - [ ] **Implementar logging** detallado ### Integración Avanzada - [ ] **Power Automate flows** para automatizaciones - [ ] **Power Apps integrations** para interfaces visuales - [ ] **Teams integration** para colaboración - [ ] **SharePoint connectors** para documentación ### Monitorización - [ ] **Usage analytics** en Power Platform - [ ] **Performance monitoring** del servidor MCP - [ ] **Error tracking** y alertas - [ ] **User feedback** y mejoras --- ## 🆘 Troubleshooting ### Problemas Comunes | Error | Causa | Solución | |-------|-------|----------| | `Connection timeout` | Servidor no responde | Verificar URL y estado Azure App Service | | `401 Unauthorized` | API Key incorrecta | Revisar configuración de autenticación | | `404 Not Found` | Endpoint incorrecto | Validar URLs en definición YAML | | `500 Internal Error` | Error servidor MCP | Revisar logs Azure y variables entorno | | **`Parsing error: Operation can have only one body parameter`** | **Esquema YAML incompatible** | **Usar `business-central-power-platform.yaml`** | | **`ValidationError: The input OpenAPI file is not valid`** | **Formato OpenAPI incorrecto** | **Usar esquema optimizado para Power Platform** | ### Errores Específicos de MCP **Error: "Operation can have only one body parameter"** - **Causa**: El esquema YAML tiene múltiples parámetros de cuerpo - **Solución**: Usar `business-central-power-platform.yaml` que está optimizado para Power Platform - **Detalle**: OpenAPI 2.0 solo permite un parámetro body por operación **Error: "The input OpenAPI file is not valid for OpenAPI specification"** - **Causa**: Extensiones MCP no reconocidas por validador Power Platform - **Solución**: El esquema `business-central-power-platform.yaml` mantiene funcionalidad MCP pero es compatible - **Alternativa**: Eliminar extensiones específicas MCP del YAML original ### Logs y Diagnóstico **Logs del Conector:** 1. Copilot Studio > Connectors > Business Central MCP 2. Pestaña "Analytics" 3. Revisar llamadas recientes y errores **Logs del Servidor:** ```bash az webapp log tail --name mcp-bc-javi --resource-group rg-mcp-bc ``` **Validación Manual:** ```bash # Probar conexión directa curl -X GET "https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/health" # Con API Key curl -X GET "https://mcp-bc-javi-chb7bue4evbkeyb0.westeurope-01.azurewebsites.net/customers?limit=3" \ -H "X-API-Key: your-secret-key" ``` --- ## 📚 Referencias | Recurso | URL | |---------|-----| | Copilot Studio Connectors | https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-custom-connectors | | Power Platform Connectors | https://learn.microsoft.com/en-us/connectors/custom-connectors/ | | OpenAPI 3.0 Specification | https://swagger.io/specification/ | | Power Platform Admin Center | https://admin.powerplatform.microsoft.com/ | --- **🎉 ¡Conector configurado exitosamente!** Tu agente conversacional ya puede hablar directamente con Business Central. ¡Es hora de crear conversaciones inteligentes! 🚀

Latest Blog Posts

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/javiarmesto/Lab3_1_MCP_BusinessCentral'

If you have feedback or need assistance with the MCP directory API, please join our Discord server