Skip to main content
Glama
nexus-mcp-infra

url-metadata-api

URL Metadata API

Dada una URL, devuelve title/description/image/site_name extraídos de sus etiquetas OpenGraph/meta (API de vista previa de enlaces estilo Microlink). Candidato NEXUS #4 -- construcción manual, no generada por FORGE.

  • POST /extract {"url": "..."} -- cobrado $0.01 vía x402 (testnet Base Sepolia).

  • Herramienta MCP extract_url_metadata en /mcp -- actualmente gratis, ver "Limitaciones conocidas".

  • GET /health, GET /.well-known/agent-card.json, GET /openapi.json (tiene x-payment-info).

Destino de despliegue: Cloud Run, no Railway

Construido a partir de products/mcp-boilerplate-gumroad/template/ (mismo patrón MCP+x402+FastAPI que similarity-search-api/ws), adaptado para Cloud Run en lugar de Railway. Consulta skills/infra-deploy-ops para el pipeline de despliegue reutilizable (scripts/deploy_cloud_run.sh en la raíz del repositorio). Despliegue en dos pasos (misma trampa que documenta el README del boilerplate):

# 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

Limitaciones conocidas (dejadas sin corregir a propósito -- CLAUDE.md SS3, sin compuerta sin evidencia de que sea necesaria)

  • Las llamadas a herramientas MCP no se cobran. PaymentMiddlewareASGI solo protege POST /extract; la herramienta MCP llama directamente a la función compartida extract_metadata() en el mismo proceso (sin reentrada HTTP a la aplicación ASGI -- esa ruta de reentrada es la que causó el error real de "cada llamada MCP recibe un 402 espurio" documentado en skills/mcp-server-generation). Añadir una compuerta x402 nativa de MCP (el mecanismo de compuerta de pago propio de x402[...,mcp], igual que hace el generador de FORGE para similarity-search-api/ws) es trabajo real con una trampa real (inyección duplicada del parámetro ctx, ver memoria) -- diferido hasta que este candidato muestre tráfico MCP real en la ventana de 7 días. Hasta entonces, este activo puede registrar volumen (traffic_events/mcp_call_events) pero no ingresos MCP.

  • Sin límite de tasa por llamante. Aceptable para una medición desechable de 7 días; añádelo si sobrevive.

  • La protección SSRF se basa en rangos de IP, no en una lista blanca completa. Rechaza IPs de destino privadas/loopback/link-local/reservadas (incluida la IP de metadatos de nube 169.254.169.254) en la solicitud inicial y en cada salto de redirección seguido manualmente (máx. 3). No defiende contra el rebinding de DNS entre la comprobación y la conexión real (riesgo aceptado para el alcance de este candidato).

Medición (Parte 3 de la sesión de configuración)

Ventana de 7 días desde el primer despliegue real. Fuente de verdad: tablas traffic_events/revenue_events/mcp_call_events (asset_name = 'url-metadata-api'), no los registros de Cloud Run. Día 7: si hay cero tráfico real (filtrando rastreadores), pausa/elimina el servicio de Cloud Run (gcloud run services delete url-metadata-api --region us-central1 --project nexus-505016) y pasa al candidato #3.

Maintenance

ActivitySlowing
ResponsivenessNo issues

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.
    135,019 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