SakuttoWorks-Data-Normalizer
Servidor MCP de Agent-Commerce-OS
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
fieldsopcional 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 errores402 Payment Requiredy429 Too Many Requestsdesde 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 dewebhook, los agentes pueden delegar tareas de extracción pesadas al segundo plano (recibiendo un202 Acceptedinstantá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 opcionalfields. 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 objetowebhookque contenga una URL de destino. El servidor devolverá inmediatamente unjob_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 suPOLAR_API_KEY.
💻 Desarrollo local y configuración
Para ejecutar el servidor localmente o preparar su entorno para el desarrollo:
Clone el repositorio y navegue hasta el directorio:
git clone https://github.com/SakuttoWorks/ghost-ship-mcp-server.git cd ghost-ship-mcp-serverInstale las dependencias necesarias (incluyendo
@modelcontextprotocol/sdkyzod):npm installConfigure sus variables de entorno:
cp .env.example .env(Abra el archivo
.envrecién creado, inserte suPOLAR_API_KEYy asegúrese de queGATEWAY_URLesté configurado enhttps://api.sakutto.workso en la ruta de punto final específica, comohttps://api.sakutto.works/v1/normalize_web_data.)Compile el código fuente de TypeScript:
npm run buildInicie 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 vitesto 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.
© 2026 Sakutto Works. Estandarizando la Web Semántica para la Economía Agéntica.
Available Tools
1 toolnormalize_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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target URL to extract and normalize. | |
| format_type | No | Desired output format. Supported values: 'json', 'markdown'. | |
| fields | No | Schema Filtering (Lite GraphQL): Array of fields to extract, minimizing token consumption. | |
| target_tier | No | Extraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard. | |
| webhook | No | Webhook configuration for asynchronous processing. Required if target_tier is 'a1'. |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Changed
normalize_web_data5 fields changed- changed
Input schema / properties / fields / descriptionPrevious 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." - added
Input schema / properties / fields / itemsAdded value: +{ + "type": "string" +} - changed
Input schema / properties / fields / typePrevious value: -"string"New value: +"array" - added
Input schema / properties / target_tierAdded value: +{ + "description": "Extraction schema tier (e.g., 'a1' for async processing, 'a2' for actionable data, 'a3' for compliance). Defaults to standard.", + "type": "string" +} - added
Input schema / properties / webhookAdded 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" +}
1 tool update
v1.0.0- First observed
normalize_web_data
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion between tools. The single tool has a clear, comprehensive purpose.
A single tool name presents no inconsistency issues. The naming is clear and descriptive of its function.
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.
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
Related MCP Connectors
Cross-OEM industrial machine intelligence: identity, normalization, automation, attestation.
Security gateway for AI agents: policy, approval, and audited execution, no secrets shared.
Edge content delivery for autonomous agents — signed manifests, A2A authentication
Blockchain SSN for AI agents. MCP gateway that blocks at the point of action, tamper evident audit.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseNot gradedqualityDmaintenanceSafety-conscious MCP server for read-only access to Emerson DeltaV Edge systems, enabling engineering investigation workflows and offline artifact generation.2GPL 3.0
- FlicenseAqualityAmaintenanceCross-OEM industrial machine intelligence. Normalizes telemetry across 16 manufacturer families (Fanuc, Siemens, Haas, DMG Mori, Mazak), enables plain-English operational automation, and produces tamper-evident work records. 14 MCP tools.14-
- AlicenseBqualityAmaintenanceProvides 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.21531MIT