Patent by Ouroboros Apps

Patent by Ouroboros Apps: búsqueda de patentes de la USPTO y consulta de arte previo. No es asesoramiento legal.

Servidor MCP alojado

npx add-mcp 'https://patent-mcp.vercel.app/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Patent by Ouroboros

Patent by Ouroboros es un servidor MCP remoto para inventores, fundadores de startups, agentes y abogados de patentes, e ingenieros que necesitan verificar si una idea ya aparece en el registro público de patentes.

Busca en el Portal de Datos Abiertos de la USPTO y, cuando agregas una clave de consumidor gratuita, en los Servicios Abiertos de Patentes de la EPO. Google Patents se usa solo como enlace. Cada número de patente en un resultado de herramienta se copia de una respuesta oficial. El servidor no completa números cuando una oficina no responde.

Esto no es asesoramiento legal. No sustituye a un abogado o agente de patentes registrado. Un resultado no es una opinión sobre patentabilidad, infracción, validez o libertad de operación.

Servidor alojado

  • URL del servidor MCP: https://patent-mcp.vercel.app/mcp (HTTP Streamable, inicio de sesión OAuth)
  • Documentación: https://ouroborosapps.com/docs/patent
  • Estado: acceso temprano. Pega la URL en Claude, Cursor, Grok o el modo desarrollador de ChatGPT.
  • Cobertura en el servidor alojado: Portal de Datos Abiertos de la USPTO. Los Servicios Abiertos de Patentes de la EPO no están activados, por lo que la búsqueda de texto completo de reivindicaciones y la búsqueda de citas de la EPO no están disponibles allí.
  • Nombre del registro: io.github.LAHutchins91/patent

Conectar

La dirección MCP es el origen de tu implementación más /mcp. Localmente es http://127.0.0.1:8787/mcp.

Inicia sesión cuando el asistente abra OAuth. Deja el ID de cliente y el secreto vacíos. El servidor admite registro dinámico de clientes OAuth 2.1 y PKCE (S256). No pegues una contraseña ni una clave API de oficina en el asistente.

Cursor, en ~/.cursor/mcp.json o un proyecto .cursor/mcp.json:

{
  "mcpServers": {
    "patent": {
      "url": "http://127.0.0.1:8787/mcp"
    }
  }
}

Claude Code:

claude mcp add --transport http patent http://127.0.0.1:8787/mcp

ChatGPT, Claude, Gemini, Grok y cualquier otro cliente HTTP Streamable: agrega la misma URL, elige OAuth y deja el ID de cliente y el secreto en blanco. Los pasos completos están en /connect.

Una cuenta nueva incluye 14 días de acceso de búsqueda. Después de la prueba, Pro continúa a través de Stripe Checkout. El monto lo muestra Stripe, no este repositorio.

server.json es el manifiesto del Registro MCP (io.github.LAHutchins91/patent). Su icono es https://patent-mcp.vercel.app/logo.jpg. Antes de publicar la entrada del registro, establece remotes[0].url y websiteUrl al origen público. El archivo actualmente usa https://patent-mcp.vercel.app/mcp como la ruta prevista de Vercel.

Herramientas

  • search_patents — palabras clave, lenguaje de reivindicaciones, clase CPC, cesionario, inventor y fechas
  • get_patent — resumen, reivindicaciones, estado, familia y citas de un registro
  • find_patent_citations — documentos que citan una patente y documentos que la patente cita
  • search_prior_art — una descripción de idea de entrada, los registros oficiales más cercanos y sus enlaces de Google Patents de salida

La cobertura de citas es el documento de concesión de la USPTO, las citas de acciones de oficina de la USPTO y la búsqueda de citas de la EPO cuando está configurada. El gráfico de citas de PatentsView está en pausa: la USPTO pausó la API PatentSearch de PatentsView cuando PatentsView se trasladó al Portal de Datos Abiertos el 20 de marzo de 2026.

Ejecutar localmente

npm install
cp .env.example .env
npm run dev

El servidor escucha en el puerto 8787. GET /health devuelve JSON. billingConfigured es verdadero solo cuando STRIPE_SECRET_KEY, STRIPE_PRICE_MONTHLY y STRIPE_PRICE_YEARLY están todos configurados.

npm test
npm run typecheck

Las pruebas llaman a los hosts públicos de la USPTO y la EPO. Los payloads de oficina que requieren claves se simulan. Con USPTO_API_KEY o credenciales de consumidor de la EPO en el entorno, la prueba en vivo usa esas credenciales en lugar de esperar la respuesta no autenticada.

Entorno

Lawrence necesita proporcionar:

VariablePropósito
APP_BASE_URLOrigen público usado como emisor OAuth y URL de retorno de Stripe
AUTH_SECRETFirma sesiones del navegador. Requerido en producción
USPTO_API_KEYClave gratuita del Portal de Datos Abiertos de la USPTO, enviada como X-API-KEY
EPO_CONSUMER_KEYClave de consumidor OPS de la EPO
EPO_CONSUMER_SECRETSecreto de consumidor OPS de la EPO
STRIPE_SECRET_KEYSecreto de Stripe existente
STRIPE_PRICE_MONTHLYID de precio mensual existente
STRIPE_PRICE_YEARLYID de precio anual existente
STRIPE_WEBHOOK_SECRETSecreto de firma de webhook de Stripe
STORAGE_BACKENDmemory (predeterminado), file, http o blob
STORAGE_PATHArchivo JSON usado cuando el backend es file
STORAGE_URLURL GET/PUT para un documento JSON cuando el backend es http
STORAGE_TOKENToken de portador opcional para esa URL
BLOB_READ_WRITE_TOKENToken de lectura-escritura de Vercel Blob. Vercel lo inyecta para un almacén vinculado. Requerido cuando STORAGE_BACKEND=blob
STORAGE_BLOB_PATHRuta de Blob para el documento de cuenta. Predeterminado patent/accounts.json

No crees productos ni precios de Stripe en esta aplicación. No confirmes secretos.

Clave de la USPTO

  1. Crea una cuenta en USPTO.gov.
  2. Verifica y vincula ID.me. Ese vínculo es de una sola vez.
  3. Abre Guía de inicio del Portal de Datos Abiertos y solicita una clave API.
  4. Establece USPTO_API_KEY.

Las claves antiguas de la API de PatentsView no funcionan en el Portal de Datos Abiertos.

Clave de la EPO

  1. Regístrate en developers.epo.org.
  2. Crea una aplicación. La EPO muestra una clave de consumidor y un secreto de consumidor.
  3. Establece EPO_CONSUMER_KEY y EPO_CONSUMER_SECRET.

OPS es gratuito dentro de la política de uso justo de la EPO. El servidor envía grant_type=client_credentials a https://ops.epo.org/3.2/auth/accesstoken.

Cuentas y almacenamiento

Las herramientas de patentes son búsquedas sin estado de oficinas públicas. El estado de prueba y suscripción, los clientes OAuth y los tokens viven en un documento JSON detrás de AccountStore.

  • memory mantiene ese documento en el proceso. Es el predeterminado y lo que usan las pruebas locales. No sobrevive a un reinicio ni a una segunda instancia serverless.
  • file escribe STORAGE_PATH (predeterminado ./data/patent-store.json). Úsalo para Docker o un proceso Node de larga duración.
  • http hace GET y PUT del mismo documento en STORAGE_URL. Apúntalo al almacenamiento que ya ejecutas. Este servidor no crea una base de datos.
  • blob almacena el mismo documento en Vercel Blob en STORAGE_BLOB_PATH (predeterminado patent/accounts.json). Establece STORAGE_BACKEND=blob en Vercel. El cliente de Blob usa BLOB_READ_WRITE_TOKEN, que Vercel inyecta cuando un almacén de Blob está conectado. Las lecturas omiten la caché de CDN. Las escrituras envían ifMatch y reintentan cuando otra instancia actualizó el documento primero.

Los clientes OAuth, códigos de autorización, tokens de acceso y tokens de actualización son campos en ese documento. La pantalla de consentimiento publica la solicitud de autorización con la aprobación; nada sobre la concesión se mantiene en la memoria del proceso. Los códigos caducados y los tokens de actualización se eliminan en cada escritura.

Implementar

Vercel: la aplicación Express es la exportación predeterminada de api/index.ts. vercel.json envía cada ruta a esa función y agrupa logo.jpg en ella, por lo que /logo.jpg es servido por la aplicación y los archivos del repositorio como /package.json no son activos estáticos. Establece las variables de entorno anteriores, incluida STORAGE_BACKEND=blob. Apunta el webhook de Stripe a https://<your-host>/billing/webhook.

Docker:

docker build -t patent-mcp .
docker run --env-file .env -p 8787:8787 patent-mcp

Lo que se verificó

Localmente, a través de HTTP Streamable: tools/list y cada una de las cuatro herramientas, registro OAuth con PKCE, caducidad de prueba, forma de solicitud de pago de Stripe y verificación de firma de webhook. El host de la USPTO respondió sin clave (no autorizado). El host de token de la EPO respondió sin credenciales de consumidor. No se realizó ningún cargo en vivo de Stripe y el servidor no se implementó en Vercel desde este espacio de trabajo.


Más de Ouroboros: https://ouroborosapps.com