Files
gureametsabilagun/mcp/index.js
Josep Piguillem 68783ca0b7 MCP remoto: servidor Streamable HTTP como servicio del compose
- mcp/http.js: MCP por HTTP (sin estado). Cada petición lleva la contraseña de aplicación
  del propio usuario (Basic o Bearer); se valida contra WordPress (caché 5 min), exige
  permiso de edición y no se guarda. Límite por IP, /healthz, IP real reenviada a WordPress.
- Herramientas comunes en mcp/src/tools.js (local y remoto); en remoto las fotos van por
  URL o base64 (sin acceso a archivos del servidor).
- Dockerfile del MCP y servicio «mcp» en docker-compose.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:25:42 +02:00

23 lines
946 B
JavaScript

#!/usr/bin/env node
/**
* Bilagun MCP server — local mode (stdio), for Claude Desktop / Claude Code on your computer.
*
* Env: BILAGUN_URL (https://…), BILAGUN_USER, BILAGUN_APP_PASSWORD
* For the remote (HTTP) server see http.js.
*/
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { createWpClient, basicAuth } from './src/wp.js';
import { createBilagunServer } from './src/tools.js';
const BASE = (process.env.BILAGUN_URL || '').replace(/\/+$/, '');
const USER = process.env.BILAGUN_USER || '';
const PASS = process.env.BILAGUN_APP_PASSWORD || '';
if (!BASE || !USER || !PASS) {
console.error('Set BILAGUN_URL, BILAGUN_USER and BILAGUN_APP_PASSWORD.');
process.exit(1);
}
const { api } = createWpClient({ baseUrl: BASE, authorization: basicAuth(USER, PASS) });
const server = createBilagunServer({ api, publicUrl: BASE, remote: false });
await server.connect(new StdioServerTransport());