Skip to main content
Glama

Elementary POS MCP

Servidor MCP en TypeScript para la Elementary POS Public API (api.elementarypos.com, X-Api-Key, endpoints /v1/...). Expone operaciones de lectura/escritura como tools MCP y funciona en stdio (local) y Streamable HTTP (remoto/Docker).

Arquitectura

MCP Client (Cursor / Claude / opencode)
  │  stdio: stdin/stdout  ──► node dist/index.js
  │  http:  POST /mcp      ──► node dist/http.js ──► X-Api-Key ──► Elementary POS API
  └───────────────────────────────► api.elementarypos.com/v1/...
  • src/index.ts — stdio (serveStdio)

  • src/http.ts — Streamable HTTP stateless (WebStandardStreamableHTTPServerTransport {sessionIdGenerator: undefined}), CORS, /health, /

  • src/server.ts — registra 32 tools

  • src/config.ts — env + validación zod

  • src/lib/api-client.tsfetch con X-Api-Key, timeout, apiKey por-request

  • src/tools/* + src/schemas/*

Related MCP server: MCP Officegest

Herramientas (32)

Dominio

Tools

bills

elementary_get_bill, elementary_get_bills

categories

elementary_get_categories

customers

elementary_get_customer, elementary_get_customers, elementary_create_customer, elementary_edit_customer, elementary_delete_customer

items

elementary_get_sales_items, elementary_add_sale_item, elementary_edit_sale_item, elementary_delete_sale_item

orders

elementary_get_order, elementary_create_order, elementary_create_orders

receipts

elementary_get_receipt, elementary_get_receipts, elementary_get_receipts_get (GET /v1/receipt/receipts), elementary_get_receipt_pdf (stub JSON-only)

stock

elementary_get_actual_stock, elementary_get_stock_changes, elementary_add_stock_change, elementary_update_stock

suppliers

elementary_get_supplier, elementary_get_suppliers, elementary_create_supplier, elementary_edit_supplier, elementary_delete_supplier

taxes

elementary_get_tax_settings

webhooks

elementary_get_webhook_status, elementary_enable_webhook, elementary_disable_webhook

Write/destructive anotadas con destructiveHint/idempotentHint.

Requisitos

  • Node.js 22+ (Docker usa node:22-alpine, pnpm 10.11.0)

  • API key de Elementary POS (pak-...)

Variables de entorno

Variable

Default

Descripción

X_API_KEY

API key (recomendado). Alias legacy ELEMENTARY_POS_API_KEY

x-api-key

Header x-api-key para HTTP remoto (equivalente a X_API_KEY)

ELEMENTARY_POS_BASE_URL

https://api.elementarypos.com

Base URL API

ELEMENTARY_POS_TIMEOUT_MS

15000

Timeout fetch

PORT

3000

Puerto HTTP

HOST

0.0.0.0

Host HTTP

MCP_TRANSPORT

http

stdio | http | both

MCP_HTTP_PATH

/mcp

Path MCP

Prioridad API key: apiKey param del tool > header x-api-key (por request) > X_API_KEY env > ELEMENTARY_POS_API_KEY env.

Formas de configurar la API key

1. Remoto Streamable HTTP — header (recomendado Docker)

opencode.json / cliente remoto:

{
  "mcpServers": {
    "elementary-mcp": {
      "type": "remote",
      "url": "http://localhost:3000/mcp",
      "headers": { "x-api-key": "pak-JchAcmiGJgi9Lui41aGIKxfYZRUu9a" }
    }
  }
}

Alternativas: Authorization: "Bearer pak-...". El servidor loguea apiKey from header (pak-JchA...) por request (stateless).

2. Por tool (sin env, multi-tenant)

Cualquier cliente puede pasar apiKey en el input del tool; el LLM lo inyecta si el usuario lo tiene en su config. Útil para mismo despliegue con distintas tiendas:

{ "apiKey": "pak-...", "dateFrom": "2026-08-29", "limit": 100 }

3. Stdio local — env

Para stdio el host inyecta env al proceso:

Cursor .cursor/mcp.json:

{
  "mcpServers": {
    "elementary-pos": {
      "type": "stdio",
      "command": "node",
      "args": ["/ABS/elementary-mcp/dist/index.js"],
      "env": { "X_API_KEY": "${env:X_API_KEY}" }
    }
  }
}

Claude Code:

claude mcp add --transport stdio --env X_API_KEY=pak-... elementary-pos -- node /ABS/dist/index.js

opencode stdio:

{ "type": "local", "command": ["node","dist/index.js"], "environment": { "X_API_KEY": "pak-..." } }

Instalación y build

pnpm install
pnpm run typecheck
pnpm run build
# dev
pnpm run dev              # stdio: tsx src/index.ts (se queda esperando stdin, normal)
pnpm run dev:http         # http: tsx src/http.ts -> http://localhost:3000/mcp
pnpm run start:http       # prod http: node dist/http.js
pnpm run start            # prod stdio: node dist/index.js

Docker

# Dockerfile: node:22-alpine, pnpm 10.11.0, multi-stage, non-root appuser
# EXPOSE 3000, CMD ["node","dist/http.js"]
docker build -t elementary-mcp .
docker run -p 3000:3000 elementary-mcp
# o con puerto custom:
docker run -p 8080:8080 -e PORT=8080 -e MCP_HTTP_PATH=/mcp elementary-mcp
# health
curl http://localhost:3000/health
# MCP endpoint
curl http://localhost:3000/mcp -H "x-api-key: pak-..."

MCP_TRANSPORT=both levanta HTTP + stdio simultáneamente; stdio solo no expone puerto.

API source

Swagger 2.0 api.elementarypos.com.

Desarrollo

pnpm run typecheck
pnpm run build

Logs HTTP: [mcp] POST /mcp apiKey from header o no apiKey header. Got headers: ... para debug de opencode.json.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage KiotViet retail and F\&B operations including products, orders, customers, invoices, and inventory through the Public API. Features 36 integrated tools with automatic token refresh, middleware chain support, and configurable presets for different access levels.
    3
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes a curated subset of the Officegest API v2 (22 CRUD tools) for managing clients, sales, and stock to AI clients like Claude Code and Claude Desktop.
    1
  • A
    license
    A
    quality
    B
    maintenance
    Exposes the Loyverse API as MCP tools to manage stores, products, inventory, customers, receipts, and more from AI assistants.
    54
    MIT

View all related MCP servers

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/pedrocastellanos/elementary-pos-mcp'

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