Skip to main content
Glama

SAP Business One MCP Server

by NXr10

SAP Business One MCP Server

SAP Business One MCP Server

Servidor MCP (Model Context Protocol) para integrar SAP Business One con Microsoft Copilot Studio.

##Características

-## Configuración

1. Variables de Entorn## Despliegue en AzureConexión ## Integración con Copilot St## Pruebas del Protocolo MCPdioersistente*## Estructura del Proyecto a SAP Business## TroubleshootingOne Service Layer API

  • Creación de Sales Orders con validación completa
  • Protocolo MCP Streamable compatible con Microsoft Copilot Studio
  • Deployment en Azure Container Apps listo para producción

##Herramientas Disponibles

  1. sap_connect - Conectar a SAP Business One
  2. sap_status - Verificar estado de conexión
  3. sap_create_sales_order - Crear Sales Orders

##Requisitos

  • Python 3.11+
  • SAP Business One con Service Layer habilitado
  • Variables de entorno configuradas

##Configuración

  1. Copiar .env.example a .env:
cp .env.example .env
  1. Configurar variables de entorno en .env:
SAP_BASE_URL=https://your-sap-server:50000/b1s/v2 SAP_COMPANY_DB=YOUR_DB SAP_USERNAME=your_user SAP_PASSWORD=your_password
  1. Instalar dependencias:
pip install -r requirements.txt
  1. Ejecutar servidor:
python server.py

##Integración con Microsoft Copilot Studio

###1. Schema File Usar sap-mcp-schema.yaml como archivo de schema OpenAPI en Copilot Studio.

###2. Crear Custom Connector

  1. En Copilot Studio, ir a ToolsAdd a toolNew toolCustom connector
  2. Seleccionar Import OpenAPI file
  3. Subir el archivo sap-mcp-schema.yaml
  4. Completar la configuración siguiendo la documentación oficial

###3. Configurar Host Actualizar el host en sap-mcp-schema.yaml:

  • Para desarrollo local: localhost:8000
  • Para producción: your-domain.azurecontainerapps.io

##Deployment

###Azure Container Apps

  1. Configurar variables de entorno en Azure:
az containerapp env set-vars --name myapp-env --resource-group myresourcegroup --vars SAP_BASE_URL=https://your-sap-server:50000/b1s/v2 SAP_COMPANY_DB=YOUR_DB SAP_USERNAME=your_user SAP_PASSWORD=your_password
  1. Deploy usando el script:
./deploy-azure.ps1

###Docker

docker build -t sap-mcp-server . docker run -p 8000:8000 --env-file .env sap-mcp-server

##Ejemplo de Uso

###Crear Sales Order

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "sap_create_sales_order", "arguments": { "CardCode": "CUSTOMER_CODE", "DocDueDate": "YYYYMMDD", "DocCurrency": "USD", "DocRate": 1.0, "DocumentLines": [ { "ItemCode": "ITEM_CODE", "Quantity": "1", "TaxCode": "TAX_CODE", "UnitPrice": "100.00" } ] } } }

###Respuesta

{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "Sales Order creada exitosamente: { \"status\": \"success\", \"DocEntry\": 12345, \"DocNum\": 1001, \"CardCode\": \"CUSTOMER_CODE\", \"CardName\": \"Customer Name\", \"DocTotal\": 1000.0, \"DocCurrency\": \"USD\", \"DocRate\": 1.0 }" } ] } }

##Health Check

curl http://localhost:8000/health

##Licencia

MIT License

##Contribuir

  1. Fork el proyecto
  2. Crear feature branch (git checkout -b feature/AmazingFeature)
  3. Commit cambios (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Abrir Pull Request

##Objetivo

Exponer herramientas de SAP Business One Service Layer API mediante el protocolo MCP streamable para que Microsoft Copilot Studio pueda consumirlas como un custom connector.

##Arquitectura

Microsoft Copilot Studio ↓ (HTTPS/JSON-RPC) Azure Container Apps (Public Endpoint) ↓ (Service Layer API) SAP Business One Server

##� Características

###Herramientas MCP Disponibles

  • sap_connect: Conectar a SAP Business One
  • sap_status: Verificar estado de conexión
  • sap_create_sales_order: Crear Sales Orders con validación completa

###Recursos MCP Disponibles

  • sap://status: Estado actual de la conexión SAP

###Endpoints HTTP

  • POST /mcp: Endpoint principal para protocolo MCP streamable
  • GET /health: Verificación de salud del servidor

##🛠️ Configuración

###1. Variables de Entorno

Crea un archivo .env basado en .env.example:

cp .env.example .env

Completa las variables:

# SAP Business One Service Layer SAP_BASE_URL=https://your-sap-server:50000/b1s/v1 SAP_COMPANY_DB=YOUR_COMPANY_DB SAP_USERNAME=your_username SAP_PASSWORD=your-password

###2. Desarrollo Local

# Instalar dependencias pip install -r requirements.txt # Ejecutar servidor python server.py

El servidor estará disponible en http://localhost:8000

###3. Probar Localmente

# Verificar salud del servidor curl http://localhost:8000/health # Probar herramientas MCP curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

##☁️ Despliegue en Azure

###Prerequisitos

  • Azure CLI instalado y configurado
  • Azure Container Registry creado
  • Permisos para crear Container Apps

###Despliegue Automatizado

# Ejecutar script de despliegue .\deploy-azure.ps1 -ResourceGroupName "rg-mcp-sap" ` -ContainerAppEnvironmentName "cae-mcp-sap" ` -ContainerAppName "app-sap-mcp" ` -ContainerRegistryName "acrmcpsap" ` -VNetName "vnet-mcp-sap" ` -SubnetName "subnet-container-apps"

###Configurar Secrets en Azure

# Variables de entorno en Container App az containerapp secret set --name app-sap-mcp --resource-group rg-mcp-sap \ --secrets sap-base-url="https://your-sap:50000/b1s/v1" \ sap-company-db="YOUR_COMPANY_DB" \ sap-username="your_username" \ sap-password="your-password"

##🔌 Integración con Copilot Studio

###1. Crear Custom Connector

  1. Ir a Power Platform Admin Center
  2. Seleccionar Custom ConnectorsNew custom connectorImport from OpenAPI file
  3. Subir el archivo sap-mcp-schema.yaml
  4. Configurar la URL del host con tu Container App:
    https://app-sap-mcp-test.bravewater-b67ade29.eastus.azurecontainerapps.io

###2. Configurar en Copilot Studio

  1. Abrir Copilot Studio
  2. Ir a SettingsGenerative AICustom Actions
  3. Agregar el custom connector creado
  4. Las herramientas SAP aparecerán automáticamente como acciones disponibles

###3. Ejemplo de Uso en Copilot

Usuario: "Conecta a SAP y crea una orden de venta" Copilot ejecutará: 1. sap_connect() - para conectar 2. sap_create_sales_order(CardCode="CUSTOMER", DocumentLines=[...]) - para crear la orden

##🧪 Pruebas del Protocolo MCP

###Ejemplo de Solicitud MCP

{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "sap_create_sales_order", "arguments": { "CardCode": "CUSTOMER_CODE", "DocumentLines": [ { "ItemCode": "ITEM_CODE", "Quantity": "1", "UnitPrice": "100.00" } ] } }, "id": 1 }

###Ejemplo de Respuesta MCP

{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "Sales Order creada exitosamente: DocEntry 12345" } ] } }

##📁 Estructura del Proyecto

MCP-SAP-main/ ├── server.py # Servidor MCP principal con FastAPI ├── sap_client.py # Cliente para SAP Business One Service Layer ├── sap-mcp-schema.yaml # Schema OpenAPI para Custom Connector ├── deploy-azure.ps1 # Script de despliegue en Azure ├── Dockerfile # Imagen de contenedor ├── requirements.txt # Dependencias Python ├── .env.example # Plantilla de configuración ├── azure-container-app.yaml # Configuración de Container App └── README.md # Este archivo

Desarrollo

###Agregar Nueva Herramienta

  1. Definir en handle_list_tools():
Tool( name="nueva_herramienta", description="Descripción de la herramienta", inputSchema={ "type": "object", "properties": { "param1": {"type": "string", "description": "Parámetro"} }, "required": ["param1"] } )
  1. Implementar en handle_call_tool():
elif name == "nueva_herramienta": # Lógica de la herramienta return [TextContent(type="text", text="Resultado")]

##🔍 Troubleshooting

###Problemas Comunes

  1. Error de conexión SAP:
    • Verificar variables de entorno
    • Comprobar conectividad de red
    • Validar credenciales
  2. Container App no responde:
    • Verificar logs: az containerapp logs show --name app-sap-mcp --resource-group rg-mcp-sap
    • Comprobar variables de entorno en Azure
  3. Copilot Studio no encuentra herramientas:
    • Verificar schema OpenAPI
    • Comprobar URL del host en custom connector
    • Validar protocolo mcp-streamable-1.0

###Logs y Debugging

# Ver logs locales python server.py # Logs aparecen en consola # Ver logs en Azure az containerapp logs show --name app-sap-mcp --resource-group rg-mcp-sap --follow # Probar endpoints manualmente curl https://your-container-app.azurecontainerapps.io/health curl -X POST https://your-container-app.azurecontainerapps.io/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Referencias

Contribución

  1. Fork el repositorio
  2. Crear rama feature: git checkout -b feature/nueva-caracteristica
  3. Commit cambios: git commit -am 'Agregar nueva característica'
  4. Push a la rama: git push origin feature/nueva-caracteristica
  5. Crear Pull Request

##📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver archivo LICENSE para más detalles.

##🆘 Soporte

  • Issues: GitHub Issues
  • Documentación: Wiki del proyecto
  • Contacto: Crear un issue para soporte técnico --secrets "sap-username=tu-usuario" "sap-password=tu-password"
##🔧 Configuración Manual ###Crear VNet y Subnet (si no existe) ```bash # Crear VNet az network vnet create \ --resource-group $ResourceGroupName \ --name $VNetName \ --address-prefix 10.0.0.0/16 \ --subnet-name $SubnetName \ --subnet-prefix 10.0.1.0/24 # Delegación para Container Apps az network vnet subnet update \ --resource-group $ResourceGroupName \ --vnet-name $VNetName \ --name $SubnetName \ --delegations Microsoft.App/environments

###Configurar NSG para SAP

# Crear regla para permitir tráfico a SAP az network nsg rule create \ --resource-group $ResourceGroupName \ --nsg-name nsg-containers \ --name AllowSAP \ --priority 100 \ --direction Outbound \ --access Allow \ --protocol Tcp \ --destination-port-ranges 50000 \ --destination-address-prefixes 10.0.0.0/16

##📊 Verificación

###Ver logs de la aplicación

az containerapp logs show \ --name $ContainerAppName \ --resource-group $ResourceGroupName \ --follow

###Verificar conectividad

# Entrar al contenedor para debug az containerapp exec \ --name $ContainerAppName \ --resource-group $ResourceGroupName # Verificar variables de entorno echo $SAP_BASE_URL

##🔐 Seguridad

###Variables de entorno configuradas:

  • SAP_BASE_URL: URL de tu SAP Business One API
  • SAP_COMPANY_DB: Base de datos de la compañía
  • SAP_USERNAME: Usuario SAP
  • SAP_PASSWORD: Contraseña SAP (almacenada como secreto)

###Mejores prácticas:

  • Credenciales almacenadas como secretos de Container Apps
  • VNet isolation para comunicación privada con SAP
  • Contenedor ejecutándose con usuario no-root
  • Recursos limitados (CPU/Memory)

##🛠️ Troubleshooting

###Error de conectividad a SAP

  1. Verificar que SAP esté ejecutándose
  2. Verificar NSG rules
  3. Verificar que las IPs sean correctas
  4. Verificar credenciales

###Error de despliegue

  1. Verificar permisos en Azure
  2. Verificar que el nombre del Container Registry sea único
  3. Verificar que la VNet exista

###Ver logs detallados

az containerapp logs show \ --name $ContainerAppName \ --resource-group $ResourceGroupName \ --type console

##📞 Soporte

Para problemas específicos:

  1. Revisar logs de Container Apps
  2. Verificar conectividad de red
  3. Probar credenciales SAP desde Postman
  4. Verificar configuración de secretos

##🔄 Actualizaciones

Para actualizar la aplicación:

# Rebuild y redeploy az acr build --registry $ContainerRegistryName --image "sap-mcp-server:latest" . # Restart container app az containerapp revision restart \ --name $ContainerAppName \ --resource-group $ResourceGroupName
-
security - not tested
F
license - not found
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Enables interaction with SAP Business One API through Azure Container Apps with VNet connectivity. Provides secure access to SAP data and operations through natural language interface.

  1. SAP Business One MCP Server
    1. 1. Variables de Entorn## Despliegue en AzureConexión ## Integración con Copilot St## Pruebas del Protocolo MCPdioersistente*## Estructura del Proyecto a SAP Business## TroubleshootingOne Service Layer API
    2. Desarrollo
    3. Referencias
    4. Contribución

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    This server provides a convenient API for interacting with Azure DevOps services, enabling AI assistants and other tools to manage work items, code repositories, boards, sprints, and more. Built with the Model Context Protocol, it provides a standardized interface for communicating with Azure DevOps
    Last updated -
    21
    47
    MIT License
  • -
    security
    A
    license
    -
    quality
    A comprehensive server that enables AI applications to interact with Microsoft 365 and Azure AD services through standardized Model Context Protocol interfaces.
    Last updated -
    1
    MIT License
  • -
    security
    A
    license
    -
    quality
    Enables comprehensive integration with Azure AI services including OpenAI, Cognitive Services, Computer Vision, and Face API through a mission-critical MCP server. Provides enterprise-grade reliability with high availability, observability, chaos engineering, and secure multi-region deployment capabilities.
    Last updated -
    MIT License
  • -
    security
    F
    license
    -
    quality
    Enables interaction with SAP systems through RESTful APIs via MCP protocol. Supports calling SAP functions like BAPI with parameters and returns structured responses for SAP data operations.
    Last updated -
    1

View all related MCP servers

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/NXr10/MCP-SAP'

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