Skip to main content
Glama
SakuttoWorks

SakuttoWorks-Data-Normalizer

by SakuttoWorks

Servidor MCP de Agent-Commerce-OS

Portal Oficial Servidor MCP ghost-ship-mcp-server Obtener clave API Patrocinar en GitHub

El servidor oficial del Protocolo de Contexto de Modelo (MCP) para la infraestructura de normalización de datos de Sakutto Works.


🚀 Descripción general

Este repositorio proporciona el servidor MCP oficial para el Proyecto GHOST SHIP (Agent-Commerce-OS). Permite a los agentes de IA (como Claude Desktop) conectarse de forma autónoma a nuestra API de confianza cero y medida, gestionada a través de Polar.sh. A través de esta integración, los agentes pueden extraer y normalizar datos web no estructurados en formatos Markdown o JSON limpios y optimizados para tokens.


Related MCP server: deltav-edge-mcp-server

✨ Características clave

  • 🛡️ Seguridad perimetral de confianza cero: Protección estricta contra inyección de prompts y defensa perimetral en Cloudflare Edge.

  • 🧩 Nativo de MCP: Integración instantánea y fluida con clientes del Protocolo de Contexto de Modelo como Claude Desktop.

  • Filtrado GraphQL ligero: Pase una matriz fields opcional para extraer solo los nodos de datos exactos que su agente necesita, minimizando drásticamente el consumo de tokens de la ventana de contexto.

  • 💳 Pago por uso puro: 0,10 $ por llamada exitosa con tecnología de Polar.sh. Sin tarifas ocultas, sin suscripciones forzadas.

  • 🤖 Recuperación de errores autónoma: Se adhiere estrictamente al formato de error estándar de MCP (isError: true). Reenvía de forma inteligente los errores 402 Payment Required y 429 Too Many Requests desde la puerta de enlace perimetral, lo que permite a los agentes de IA guiar de forma autónoma a los usuarios humanos para resolver déficits presupuestarios o detener bucles infinitos sin intervención del desarrollador.

  • 🔍 Seguimiento distribuido y observabilidad: A cada solicitud se le asigna un trace_id único que se propaga a través de toda la infraestructura (Gateway -> Engine -> R2 Audit Logs). En caso de error, este ID de seguimiento se inyecta directamente en la respuesta de texto del agente, lo que permite una depuración instantánea y precisa y un soporte de nivel empresarial sin necesidad de buscar registros manualmente.

  • 🔄 Enrutamiento avanzado (Sincrónico/Asincrónico y niveles): Los agentes de IA pueden dictar dinámicamente la canalización de extracción. Al proporcionar un target_tier (por ejemplo, Datos accionables, Verificación de cumplimiento), el motor adapta su esquema. Además, al pasar una URL de webhook, los agentes pueden delegar tareas de extracción pesadas al segundo plano (recibiendo un 202 Accepted instantáneo y un ID de trabajo), evitando los límites de tiempo de espera de MCP. Si no se proporciona un webhook, el sistema vuelve a la ejecución sincrónica de forma elegante.


🏗️ Arquitectura

Nuestra infraestructura opera bajo un modelo de confianza cero de tres niveles. Puede explorar nuestros repositorios relacionados para obtener una imagen completa:

  • Capa C (Este repositorio): Un servidor MCP sin estado que conecta su agente de IA local con nuestra red remota.

  • Capa A (agent-commerce-gateway): Cloudflare Workers que gestionan la autenticación de confianza cero, el enrutamiento y la facturación medida.

  • Capa B (agent-commerce-core): Motores de Google Cloud Run que realizan una normalización de datos semántica avanzada y optimizada para RAG.


⚙️ Requisitos previos

  • Node.js (se recomienda v18 o superior) y npm instalados.

  • Una clave API de Polar.sh activa (facturación medida a 0,10 $ / solicitud). Obtenga la suya en el Checkout oficial de claves API.

  • Claude Desktop o cualquier cliente estándar compatible con MCP.


🔌 Configuración (Claude Desktop)

Para otorgar a su agente de IA acceso a las herramientas de normalización, añada la siguiente configuración a su claude_desktop_config.json:

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "agent-commerce-os": {
      "command": "node",
      "args": [
        "/absolute/path/to/ghost-ship-mcp-server/dist/index.js"
      ],
      "env": {
        "POLAR_API_KEY": "your_polar_api_key_here",
        "GATEWAY_URL": "https://api.sakutto.works/v1/normalize_web_data"
      }
    }
  }
}

(Nota: Reemplace /ruta/absoluta/a/ghost-ship-mcp-server con la ruta absoluta real a su repositorio clonado, y tu_clave_api_polar_aqui con su clave API de Polar.sh activa.)


🧠 Para agentes de IA autónomos

Si usted es un agente de IA o LLM que analiza este repositorio para integrar nuestras herramientas:

  • Lea nuestro llms.txt para obtener el contexto semántico completo y las capacidades.

  • El esquema exacto de la herramienta está definido completamente en mcp.json.

  • No intente adivinar o sintetizar URLs. Consulte siempre el Portal oficial de Sakutto Works.


🤖 Herramientas disponibles

Una vez conectado a través de StdioServerTransport, el agente de IA descubrirá automáticamente las herramientas expuestas dinámicamente por la instancia de McpServer utilizando @modelcontextprotocol/sdk. (Estas capacidades también están catalogadas en nuestro manifiesto mcp.json para registros externos):

  • normalize_web_data: Extrae y normaliza contenido web no estructurado en formatos Markdown o JSON limpios y semánticos optimizados para ventanas de contexto de LLM.

    • Filtrado de esquema (fields): Admite la selección de campos al estilo Lite GraphQL a través del parámetro opcional fields. Esto permite a los agentes de IA solicitar solo nodos de datos específicos, minimizando significativamente el consumo de tokens y la latencia de respuesta. Cuando se especifica, el servidor añade automáticamente estos campos como parámetros de consulta de URL antes de enrutar la solicitud a la puerta de enlace.

    • Niveles de extracción dinámica (target_tier): Los agentes de IA pueden especificar un nivel de esquema de destino (a1, a2, etc.) para alterar la lógica de extracción sobre la marcha (por ejemplo, extraer datos de disponibilidad accionables estrictos frente a Markdown estándar).

    • Webhooks asincrónicos (webhook): Para tareas de extracción de larga duración, los agentes pueden proporcionar un objeto webhook que contenga una URL de destino. El servidor devolverá inmediatamente un job_id, lo que permitirá al agente continuar con las operaciones sin esperar. Diseño tolerante a fallos: Si un agente deja la URL del webhook vacía o la omite por completo, el servidor ignora de forma segura la carga útil del webhook y ejecuta la solicitud de forma sincrónica, devolviendo los datos extraídos en tiempo real.

    • Validación estricta: Todas las entradas de la herramienta están estrictamente definidas y validadas mediante zod, lo que garantiza una adhesión sólida a las especificaciones subyacentes de la Capa B. Una vez validada, el servidor retransmite de forma segura la solicitud a la puerta de enlace a través de HTTP POST, autenticada mediante su POLAR_API_KEY.


💻 Desarrollo local y configuración

Para ejecutar el servidor localmente o preparar su entorno para el desarrollo:

  1. Clone el repositorio y navegue hasta el directorio:

    git clone https://github.com/SakuttoWorks/ghost-ship-mcp-server.git
    cd ghost-ship-mcp-server
  2. Instale las dependencias necesarias (incluyendo @modelcontextprotocol/sdk y zod):

    npm install
  3. Configure sus variables de entorno:

    cp .env.example .env

    (Abra el archivo .env recién creado, inserte su POLAR_API_KEY y asegúrese de que GATEWAY_URL esté configurado en https://api.sakutto.works o en la ruta de punto final específica, como https://api.sakutto.works/v1/normalize_web_data.)

  4. Compile el código fuente de TypeScript:

    npm run build
  5. Inicie el servidor MCP:

    npm start

🤝 Contribución

Damos la bienvenida y fomentamos las contribuciones de la comunidad de código abierto. Al enviar una solicitud de extracción (Pull Request), asegúrese de que:

  • Su código se compile correctamente (npm run build).

  • Todas las pruebas pasen localmente (usando npx vitest o su ejecutor de pruebas preferido).

  • Se adhiera al estilo de código existente y a las prácticas estándar de TypeScript.

Tenga en cuenta que este proyecto sigue un Código de Conducta de Código Abierto estándar. Al participar, se espera que mantenga una comunicación respetuosa y colaborativa.


🌍 Recursos y seguimiento de problemas

  • Portal oficial y documentación del agente: Sakutto Works

  • Organización de GitHub: SakuttoWorks

  • Perfil de desarrollador: Perfil de SakuttoWorks

  • Informes de errores y solicitudes de funciones: Utilice nuestra página de GitHub Issues para informar de cualquier error o sugerir nuevas capacidades de extracción.


📄 Licencia

Este proyecto tiene licencia ISC. Para obtener más detalles sobre la responsabilidad y el uso de agentes autónomos, lea nuestro LEGAL.md.


💖 Apoye el proyecto

Si Agent-Commerce-OS le ha ahorrado horas de ingeniería o le ha ayudado a escalar sus flujos de trabajo de IA, considere convertirse en patrocinador o dejar una propina única. Sus contribuciones financian directamente nuestros costes de servidor, garantizan la alta disponibilidad de la puerta de enlace perimetral y alimentan el desarrollo continuo de código abierto.

Apoyar a través de Polar.sh Patrocinar en GitHub

© 2026 Sakutto Works. Estandarizando la Web Semántica para la Economía Agéntica.

Available Tools

1 tool
normalize_web_dataA

Extracts, sanitizes, and normalizes unstructured web content into clean Markdown or JSON. Highly optimized for LLM context windows. CRITICAL USE CASES: Bypassing scraping protections, Japanese Tech Regulations analysis, extracting Japanese Academic Papers, and converting complex HTML/PDF structures into semantic formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target URL to extract and normalize.
format_typeNoDesired output format. Supported values: 'json', 'markdown'.
fieldsNoSchema Filtering (Lite GraphQL): Array of fields to extract, minimizing token consumption.
target_tierNoExtraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard.
webhookNoWebhook configuration for asynchronous processing. Required if target_tier is 'a1'.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It notes it's 'optimized for LLM context windows' and mentions 'bypassing scraping protections', which implies potential risk. But does not disclose auth needs, rate limits, or side effects beyond the listed use cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with core function and lists use cases in a structured way. Slightly verbose with capitalized 'CRITICAL USE CASES', but overall efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains output formats (Markdown/JSON) and use cases. It lacks error handling, size limits, or rate limit info, but for a web extraction tool, it provides sufficient context for an AI agent to decide usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description adds little beyond the schema, only emphasizing output format and use cases. Baseline 3 is appropriate as the schema already provides sufficient meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it extracts, sanitizes, and normalizes web content into Markdown/JSON, with specific use cases listed. Verb+resource+output are explicit, and no sibling tools exist to confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides critical use cases (bypassing scraping protections, Japanese content, complex conversions), giving context on when to use. However, no explicit when-not-to-use or alternatives are mentioned, but since no siblings, it's adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changednormalize_web_data5 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Schema Filtering (Lite GraphQL): Comma-separated list of fields to extract, minimizing token consumption (e.g., 'title,content')."New value: +"Schema Filtering (Lite GraphQL): Array of fields to extract, minimizing token consumption."
      • addedInput schema / properties / fields / items
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / fields / type
        Previous value: -"string"New value: +"array"
      • addedInput schema / properties / target_tier
        Added value: +{
        +  "description": "Extraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard.",
        +  "type": "string"
        +}
      • addedInput schema / properties / webhook
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Webhook configuration for asynchronous processing. Required if target_tier is 'a1'.",
        +  "properties": {
        +    "url": {
        +      "description": "The webhook endpoint URL to receive async results.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  2. 1 tool updatev1.0.0
    • First observednormalize_web_data

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool has a clear, comprehensive purpose.

Naming Consistency5/5

A single tool name presents no inconsistency issues. The naming is clear and descriptive of its function.

Tool Count2/5

One tool for a broad scope that includes multiple specialized use cases (bypassing scraping protections, extracting academic papers, etc.) feels insufficient. The tool is expected to handle a wide range of operations, likely warranting a few more focused tools.

Completeness4/5

The tool covers the core extraction, sanitization, and normalization workflow. Minor gaps could exist around configuration options or error handling, but the main domain is addressed.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A centralized gateway platform for aggregating and managing multiple Model Context Protocol (MCP) servers through a single Electron-based interface. It provides enterprise-grade security features including policy-based access control, human-in-the-loop approval workflows, and comprehensive audit logging.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Safety-conscious MCP server for read-only access to Emerson DeltaV Edge systems, enabling engineering investigation workflows and offline artifact generation.
    2
    GPL 3.0
  • A
    license
    B
    quality
    A
    maintenance
    Provides AI agents with safe, governed read access to industrial control systems (OPC-UA, Modbus, S7, Mitsubishi, MTConnect, MQTT/Sparkplug) plus cross-protocol diagnostics for troubleshooting data breaks, alarm floods, and unhealthy tags.
    2
    153
    1
    MIT