Skip to main content
Glama
OscarGalloGarcia

SAP Business One MCP Server

README.md
# SAP Business One MCP Server

Servidor MCP en Python para interactuar con SAP Business One mediante Service Layer REST API.

## Requisitos

- Python 3.10+
- Acceso a SAP Business One Service Layer

## Instalacion

```bash
python -m venv .venv
.venv\\Scripts\\activate
pip install -r requirements.txt
copy .env.example .env
```

Configura `.env` con tus credenciales de SAP B1.

## Ejecucion local

```bash
python src/server.py
```

## Docker

### Build

```bash
docker build -t sap-b1-mcp .
```

### Run

```bash
docker run --rm -i --env-file .env sap-b1-mcp
```

El contenedor corre el servidor MCP por `stdio`, por lo que debe ejecutarse con `-i`.

### Docker Compose

```bash
docker compose up --build
```

`docker-compose.yml` ya incluye `stdin_open: true` para el transporte `stdio`.

## Claude Desktop

Puedes ejecutar el servidor directamente con Python o usando Docker.

### Opcion 1: Python

```json
{
  "mcpServers": {
    "sap-b1": {
      "command": "python",
      "args": ["C:/Research_Development/sap-b1-mcp/src/server.py"],
      "env": {
        "SAP_BASE_URL": "https://TU_VM_IP:50000/b1s/v1",
        "SAP_COMPANY_DB": "MI_EMPRESA",
        "SAP_USERNAME": "manager",
        "SAP_PASSWORD": "tu_password",
        "SAP_VERIFY_SSL": "false"
      }
    }
  }
}
```

### Opcion 2: Docker

```json
{
  "mcpServers": {
    "sap-b1": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env-file",
        "C:/Research_Development/sap-b1-mcp/.env",
        "sap-b1-mcp:latest"
      ]
    }
  }
}
```

Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`

## Tools incluidas

- `get_business_partners`
- `get_sales_orders`
- `get_purchase_orders`
- `get_invoices`
- `get_items`
- `get_item_by_code`
- `get_stock_levels`
- `create_sales_order`

## Notas

- En desarrollo, `SAP_VERIFY_SSL=false` permite certificados autofirmados.
- El cliente renueva sesion automaticamente antes de los 30 minutos por defecto.
- Ante un `401`, el cliente intenta un re-login una vez antes de fallar.

Maintenance

ActivityInactive
ResponsivenessNo issues