Skip to main content
Glama
SakuttoWorks

SakuttoWorks-Data-Normalizer

by SakuttoWorks

MCP-сервер Agent-Commerce-OS

Official Portal ghost-ship-mcp-server MCP server Get API Key Sponsor on GitHub

Официальный сервер протокола контекста модели (MCP) для инфраструктуры нормализации данных Sakutto Works.


🚀 Обзор

Этот репозиторий предоставляет официальный MCP-сервер для проекта GHOST SHIP (Agent-Commerce-OS). Он позволяет ИИ-агентам (таким как Claude Desktop) автономно подключаться к нашей сети с нулевым доверием (Zero-Trust) и тарификацией через Polar.sh. Благодаря этой интеграции агенты могут извлекать и нормализовать неструктурированные веб-данные в чистые, оптимизированные для токенов форматы Markdown или JSON.


Related MCP server: deltav-edge-mcp-server

✨ Ключевые особенности

  • 🛡️ Безопасность периметра с нулевым доверием: Строгая защита от инъекций промптов и защита периметра на границе Cloudflare.

  • 🧩 Нативная поддержка MCP: Мгновенная и бесшовная интеграция с клиентами протокола контекста модели, такими как Claude Desktop.

  • Легкая фильтрация GraphQL: Передайте необязательный массив fields, чтобы извлечь только те узлы данных, которые нужны вашему агенту, что значительно сокращает потребление токенов контекстного окна.

  • 💳 Чистая модель оплаты по факту использования: $0.10 за успешный вызов через Polar.sh. Никаких скрытых платежей, никаких принудительных подписок.

  • 🤖 Автономное восстановление после ошибок: Строгое соблюдение стандартного форматирования ошибок MCP (isError: true). Интеллектуальная передача ошибок 402 Payment Required и 429 Too Many Requests от пограничного шлюза, что позволяет ИИ-агентам автономно направлять пользователей для устранения нехватки бюджета или остановки бесконечных циклов без вмешательства разработчика.

  • 🔍 Распределенная трассировка и наблюдаемость: Каждому запросу присваивается уникальный trace_id, который распространяется по всей инфраструктуре (шлюз -> движок -> журналы аудита R2). В случае ошибки этот Trace ID внедряется непосредственно в текстовый ответ агента, что позволяет мгновенно проводить точечную отладку и обеспечивать поддержку корпоративного уровня без ручного поиска по логам.

  • 🔄 Расширенная маршрутизация (синхронная/асинхронная и уровни): ИИ-агенты могут динамически определять конвейер извлечения. Указав target_tier (например, Actionable Data, Compliance Check), движок адаптирует свою схему. Кроме того, передав URL webhook, агенты могут переложить тяжелые задачи извлечения в фоновый режим (получив мгновенный ответ 202 Accepted и ID задания), что предотвращает превышение лимитов времени ожидания MCP. Если webhook не указан, система корректно переключается на синхронное выполнение.


🏗️ Архитектура

Наша инфраструктура работает по трехуровневой модели нулевого доверия. Вы можете изучить наши связанные репозитории для получения полной картины:

  • Уровень C (этот репозиторий): Stateless MCP-сервер, соединяющий ваш локальный ИИ-агент с нашей удаленной сетью.

  • Уровень A (agent-commerce-gateway): Cloudflare Workers, обрабатывающие аутентификацию с нулевым доверием, маршрутизацию и тарификацию.

  • Уровень B (agent-commerce-core): Движки Google Cloud Run, выполняющие расширенную, оптимизированную для RAG семантическую нормализацию данных.


⚙️ Предварительные требования

⚙️ Предварительные требования

  • Node.js (рекомендуется v18 или выше) и установленный npm.

  • Активный API-ключ Polar.sh (тарификация $0.10 за запрос). Получите его на официальной странице оформления API-ключа.

  • Claude Desktop или любой стандартный клиент, совместимый с MCP.


🔌 Настройка и конфигурация (Claude Desktop)

Чтобы предоставить вашему ИИ-агенту доступ к инструментам нормализации, добавьте следующую конфигурацию в ваш 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"
      }
    }
  }
}

(Примечание: Замените /absolute/path/to/ghost-ship-mcp-server на фактический абсолютный путь к вашему клонированному репозиторию, а your_polar_api_key_here — на ваш активный API-ключ Polar.sh.)


🧠 Для автономных ИИ-агентов

Если вы ИИ-агент или LLM, анализирующий этот репозиторий для интеграции наших инструментов:

  • Пожалуйста, прочитайте наш llms.txt для получения полного семантического контекста и возможностей.

  • Точная схема инструментов полностью определена в mcp.json.

  • Не пытайтесь угадывать или синтезировать URL-адреса. Всегда обращайтесь к официальному порталу Sakutto Works.


🤖 Доступные инструменты

После подключения через StdioServerTransport ИИ-агент автоматически обнаружит инструменты, динамически предоставляемые экземпляром McpServer с использованием @modelcontextprotocol/sdk. (Эти возможности также каталогизированы в нашем манифесте mcp.json для внешних реестров):

  • normalize_web_data: Извлекает и нормализует неструктурированный веб-контент в чистые, семантические форматы Markdown или JSON, оптимизированные для контекстных окон LLM.

    • Фильтрация схемы (fields): Поддерживает выбор полей в стиле Lite GraphQL через необязательный параметр fields. Это позволяет ИИ-агентам запрашивать только конкретные узлы данных, значительно минимизируя потребление токенов и задержку ответа. При указании сервер автоматически добавляет эти поля в качестве параметров запроса URL перед маршрутизацией запроса к шлюзу.

    • Динамические уровни извлечения (target_tier): ИИ-агенты могут указать целевой уровень схемы (a1, a2 и т.д.), чтобы изменить логику извлечения «на лету» (например, извлечение строгих данных о доступности против стандартного markdown).

    • Асинхронные вебхуки (webhook): Для длительных задач извлечения агенты могут предоставить объект webhook, содержащий целевой URL. Сервер немедленно вернет job_id, позволяя агенту продолжать операции, не дожидаясь завершения. Отказоустойчивый дизайн: Если агент оставляет URL вебхука пустым или полностью пропускает его, сервер безопасно игнорирует полезную нагрузку вебхука и выполняет запрос синхронно, возвращая извлеченные данные в режиме реального времени.

    • Строгая валидация: Все входные данные инструментов строго определены и проверяются с использованием zod, что обеспечивает надежное соблюдение спецификаций Уровня B. После проверки сервер безопасно передает запрос на шлюз через HTTP POST, аутентифицированный с помощью вашего POLAR_API_KEY.


💻 Локальная разработка и настройка

Чтобы запустить сервер локально или подготовить среду для разработки:

  1. Клонируйте репозиторий и перейдите в директорию:

    git clone https://github.com/SakuttoWorks/ghost-ship-mcp-server.git
    cd ghost-ship-mcp-server
  2. Установите необходимые зависимости (включая @modelcontextprotocol/sdk и zod):

    npm install
  3. Настройте переменные окружения:

    cp .env.example .env

    (Откройте созданный файл .env, вставьте ваш POLAR_API_KEY и убедитесь, что GATEWAY_URL установлен на https://api.sakutto.works или конкретный путь конечной точки, например https://api.sakutto.works/v1/normalize_web_data.)

  4. Скомпилируйте исходный код TypeScript:

    npm run build
  5. Запустите MCP-сервер:

    npm start

🤝 Участие в разработке

Мы приветствуем и поощряем вклад сообщества с открытым исходным кодом! При отправке Pull Request, пожалуйста, убедитесь, что:

  • Ваш код успешно собирается (npm run build).

  • Все тесты проходят локально (используя npx vitest или ваш предпочтительный тестовый раннер).

  • Вы придерживаетесь существующего стиля кода и стандартных практик TypeScript.

Пожалуйста, обратите внимание, что этот проект следует стандартному Кодексу поведения Open Source. Ожидается, что при участии вы будете поддерживать уважительное и совместное общение.


🌍 Ресурсы и отслеживание проблем

  • Официальный портал и документация для агентов: Sakutto Works

  • GitHub-организация: SakuttoWorks

  • Профиль разработчика: SakuttoWorks Profile

  • Отчеты об ошибках и запросы функций: Пожалуйста, используйте нашу страницу GitHub Issues для сообщения об ошибках или предложения новых возможностей извлечения.


📄 Лицензия

Этот проект лицензирован по лицензии ISC. Для получения более подробной информации об ответственности и использовании автономных агентов, пожалуйста, прочитайте наш LEGAL.md.


💖 Поддержка проекта

Если Agent-Commerce-OS сэкономил вам часы инженерной работы или помог масштабировать ваши ИИ-рабочие процессы, пожалуйста, рассмотрите возможность стать спонсором или оставить разовое пожертвование. Ваши взносы напрямую финансируют наши расходы на сервер, обеспечивают высокую доступность пограничного шлюза и способствуют постоянной разработке с открытым исходным кодом.

Support via Polar.sh Sponsor on GitHub

© 2026 Sakutto Works. Стандартизация семантической паутины для агентной экономики.

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