Skip to main content
Glama
nexus-mcp-infra

url-metadata-api

URL Metadata API

По указанному URL возвращает title/description/image/site_name, извлечённые из его OpenGraph/meta-тегов (API предпросмотра ссылок в стиле Microlink). Кандидат NEXUS #4 — ручная сборка, не FORGE-генерация.

  • POST /extract {"url": "..."} — тарифицируется $0.01 через x402 (Base Sepolia testnet).

  • MCP-инструмент extract_url_metadata на /mcp — пока бесплатно, см. «Известные ограничения».

  • GET /health, GET /.well-known/agent-card.json, GET /openapi.json (содержит x-payment-info).

Цель развёртывания: Cloud Run, а не Railway

Собран из products/mcp-boilerplate-gumroad/template/ (та же схема MCP+x402+FastAPI, что и similarity-search-api/ws), адаптирован для Cloud Run вместо Railway. См. skills/infra-deploy-ops — переиспользуемый пайплайн деплоя (scripts/deploy_cloud_run.sh в корне репозитория). Двухшаговый деплой (тот же подводный камень, о котором говорит README шаблона):

# 1. First deploy -- PUBLIC_DOMAIN not known yet, every real request 421s until step 2.
./scripts/deploy_cloud_run.sh url-metadata-api manual_assets/url-metadata-api

# 2. Grab the printed *.run.app URL, then:
gcloud run services update url-metadata-api --region us-central1 --project nexus-505016 \
    --update-env-vars PUBLIC_DOMAIN=<the-real-domain>

Related MCP server: mcp-pageshot

Известные ограничения (намеренно оставлены неисправленными — CLAUDE.md SS3, гейт без подтверждения необходимости не добавляется)

  • Вызовы MCP-инструментов не тарифицируются. PaymentMiddlewareASGI ограничивает только POST /extract; MCP-инструмент вызывает общую extract_metadata() напрямую в том же процессе (без повторного HTTP-входа в ASGI-приложение — именно повторный HTTP-ход вызывал настоящий баг «каждый MCP-вызов получает ложный 402», описанный в skills/mcp-server-generation). Внедрение настоящего нативного x402-гейта для MCP (собственный механизм платёжного шлюза из x402[...,m], тот же, что использует генератор FORGE для similarity-search-api/ws) — это реальная работа с реальной ловушкой (двойная инъекция параметра ctx; см. memory) — отложено до тех пор, пока этот кандидат в 7-дневном окне не покажет реальный MCP-трафик. Пока этот актив может логировать объёмы (traffic_events/mcp_call_events), но не MCP-выручку.

  • Ограничение частоты запросов на вызывающего отсутствует. Для 7-дневной разовой метрики это нормально; добавить, если актив останется.

  • SSRF-защита построена на IP-адресных диапазонах, а не на полном allowlist-списке. На исходном запросе и на каждом вручную отслеживаемом redirect-переходе (макс. 3) она отклоняет частные/loopback/link-local/зарезервированные IP-адреса назначения, включая 169.254.169.254 — метаданные облака. Она не защищает от DNS-ренезависиming между проверкой и фактическим подключением — это принятый риск для этого кандидата.

Измерение (Часть 3 сессии настройки)

7-дневное окно с первого реального деплоя. Источник правды: таблицы traffic_events/revenue_events/mcp_call_events (asset_name = 'url-metadata-api'), а не логи Cloud Run. День 7: если реального трафика нет (после фильтрации краулеров), приостановите/удалите сервис Cloud Run (gcloud run services delete url-metadata-api --region us-central1 --project nexus-505016) и перейдите к кандидату #3.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides functionality to fetch and transform web content in various formats (HTML, JSON, plain text, and Markdown) through simple API calls.
    53,444 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Converts any URL into clean, LLM-ready Markdown, text, or HTML with production-grade features like SSRF protection, rate limiting, retries, caching, and structured error handling.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Zero-signup link-preview API that returns clean metadata (title, description, image, etc.) from any public URL. No API key required.
    2
    MIT