SAP Business One MCP Server

SAP Business One MCP Server

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.

Category
访问服务器

README

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

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选