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 fechasget_patent— resumen, reivindicaciones, estado, familia y citas de un registrofind_patent_citations— documentos que citan una patente y documentos que la patente citasearch_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:
| Variable | Propósito |
|---|---|
APP_BASE_URL | Origen público usado como emisor OAuth y URL de retorno de Stripe |
AUTH_SECRET | Firma sesiones del navegador. Requerido en producción |
USPTO_API_KEY | Clave gratuita del Portal de Datos Abiertos de la USPTO, enviada como X-API-KEY |
EPO_CONSUMER_KEY | Clave de consumidor OPS de la EPO |
EPO_CONSUMER_SECRET | Secreto de consumidor OPS de la EPO |
STRIPE_SECRET_KEY | Secreto de Stripe existente |
STRIPE_PRICE_MONTHLY | ID de precio mensual existente |
STRIPE_PRICE_YEARLY | ID de precio anual existente |
STRIPE_WEBHOOK_SECRET | Secreto de firma de webhook de Stripe |
STORAGE_BACKEND | memory (predeterminado), file, http o blob |
STORAGE_PATH | Archivo JSON usado cuando el backend es file |
STORAGE_URL | URL GET/PUT para un documento JSON cuando el backend es http |
STORAGE_TOKEN | Token de portador opcional para esa URL |
BLOB_READ_WRITE_TOKEN | Token de lectura-escritura de Vercel Blob. Vercel lo inyecta para un almacén vinculado. Requerido cuando STORAGE_BACKEND=blob |
STORAGE_BLOB_PATH | Ruta 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
- Crea una cuenta en USPTO.gov.
- Verifica y vincula ID.me. Ese vínculo es de una sola vez.
- Abre Guía de inicio del Portal de Datos Abiertos y solicita una clave API.
- Establece
USPTO_API_KEY.
Las claves antiguas de la API de PatentsView no funcionan en el Portal de Datos Abiertos.
Clave de la EPO
- Regístrate en developers.epo.org.
- Crea una aplicación. La EPO muestra una clave de consumidor y un secreto de consumidor.
- Establece
EPO_CONSUMER_KEYyEPO_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.
memorymantiene 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.fileescribeSTORAGE_PATH(predeterminado./data/patent-store.json). Úsalo para Docker o un proceso Node de larga duración.httphace GET y PUT del mismo documento enSTORAGE_URL. Apúntalo al almacenamiento que ya ejecutas. Este servidor no crea una base de datos.blobalmacena el mismo documento en Vercel Blob enSTORAGE_BLOB_PATH(predeterminadopatent/accounts.json). EstableceSTORAGE_BACKEND=bloben Vercel. El cliente de Blob usaBLOB_READ_WRITE_TOKEN, que Vercel inyecta cuando un almacén de Blob está conectado. Las lecturas omiten la caché de CDN. Las escrituras envíanifMatchy 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