Patent by Ouroboros Apps
Patent by Ouroboros Apps: busca de patentes USPTO e consulta de estado da técnica. Não é aconselhamento jurídico
Servidor MCP hospedado
npx add-mcp 'https://patent-mcp.vercel.app/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Patent by Ouroboros
Patent by Ouroboros é um servidor MCP remoto para inventores, fundadores de startups, agentes e advogados de patentes, e engenheiros que precisam verificar se uma ideia já aparece no registro público de patentes.
Ele pesquisa o USPTO Open Data Portal e, quando você adiciona uma chave de consumidor gratuita, o EPO Open Patent Services. O Google Patents é usado apenas como um link. Cada número de patente em um resultado de ferramenta é copiado de uma resposta oficial. O servidor não preenche números quando um escritório não responde.
Isto não é aconselhamento jurídico. Não substitui um advogado ou agente de patentes registrado. Um resultado não é uma opinião sobre patenteabilidade, violação, validade ou liberdade de operação.
Servidor hospedado
- URL do servidor MCP:
https://patent-mcp.vercel.app/mcp(Streamable HTTP, login OAuth) - Documentação: https://ouroborosapps.com/docs/patent
- Status: acesso antecipado. Cole a URL no Claude, Cursor, Grok ou modo de desenvolvedor do ChatGPT.
- Cobertura no servidor hospedado: USPTO Open Data Portal. O EPO Open Patent Services não está ativado, portanto a pesquisa completa de texto de reivindicações e a pesquisa de citações EPO não estão disponíveis lá.
- Nome do registro:
io.github.LAHutchins91/patent
Conectar
O endereço MCP é a origem da sua implantação mais /mcp. Localmente, isso é http://127.0.0.1:8787/mcp.
Faça login quando o assistente abrir o OAuth. Deixe o ID do cliente e o segredo vazios. O servidor suporta registro dinâmico de cliente OAuth 2.1 e PKCE (S256). Não cole uma senha ou chave de API do escritório no assistente.
Cursor, em ~/.cursor/mcp.json ou em um projeto .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 e qualquer outro cliente Streamable HTTP: adicione a mesma URL, escolha OAuth e deixe o ID do cliente e o segredo em branco. As etapas completas estão em /connect.
Uma nova conta inclui 14 dias de acesso à pesquisa. Após o teste, o Pro continua através do Stripe Checkout. O valor é exibido pelo Stripe, não neste repositório.
server.json é o manifesto do MCP Registry (io.github.LAHutchins91/patent). Seu ícone é https://patent-mcp.vercel.app/logo.jpg. Antes de publicar a entrada do registro, defina remotes[0].url e websiteUrl para a origem pública. O arquivo atualmente usa https://patent-mcp.vercel.app/mcp como o caminho Vercel pretendido.
Ferramentas
search_patents— palavras-chave, linguagem de reivindicações, classe CPC, cessionário, inventor e datasget_patent— resumo, reivindicações, status, família e citações para um registrofind_patent_citations— documentos que citam uma patente e documentos que a patente citasearch_prior_art— uma descrição de ideia inserida, os registros oficiais mais próximos e seus links do Google Patents
A cobertura de citações é o documento de concessão do USPTO, citações de ações oficiais do USPTO e pesquisa de citações EPO quando configurada. O gráfico de citações do PatentsView está pausado: o USPTO pausou a API PatentSearch do PatentsView quando o PatentsView migrou para o Open Data Portal em 20 de março de 2026.
Executar localmente
npm install
cp .env.example .env
npm run dev
O servidor escuta na porta 8787. GET /health retorna JSON. billingConfigured é verdadeiro somente quando STRIPE_SECRET_KEY, STRIPE_PRICE_MONTHLY e STRIPE_PRICE_YEARLY estão todos definidos.
npm test
npm run typecheck
Os testes chamam os hosts públicos do USPTO e EPO. Payloads oficiais que exigem chaves são simulados. Com USPTO_API_KEY ou credenciais de consumidor EPO no ambiente, o teste ao vivo usa essas credenciais em vez de esperar a resposta não autenticada.
Ambiente
Lawrence precisa fornecer:
| Variável | Propósito |
|---|---|
APP_BASE_URL | Origem pública usada como emissor OAuth e URL de retorno do Stripe |
AUTH_SECRET | Assina sessões de navegador. Obrigatório em produção |
USPTO_API_KEY | Chave gratuita do USPTO Open Data Portal, enviada como X-API-KEY |
EPO_CONSUMER_KEY | Chave de consumidor EPO OPS |
EPO_CONSUMER_SECRET | Segredo de consumidor EPO OPS |
STRIPE_SECRET_KEY | Segredo Stripe existente |
STRIPE_PRICE_MONTHLY | ID de preço mensal existente |
STRIPE_PRICE_YEARLY | ID de preço anual existente |
STRIPE_WEBHOOK_SECRET | Segredo de assinatura do webhook Stripe |
STORAGE_BACKEND | memory (padrão), file, http ou blob |
STORAGE_PATH | Arquivo JSON usado quando o backend é file |
STORAGE_URL | URL GET/PUT para um documento JSON quando o backend é http |
STORAGE_TOKEN | Token de portador opcional para essa URL |
BLOB_READ_WRITE_TOKEN | Token de leitura/gravação do Vercel Blob. O Vercel injeta isso para uma loja vinculada. Obrigatório quando STORAGE_BACKEND=blob |
STORAGE_BLOB_PATH | Caminho do Blob para o documento da conta. Padrão patent/accounts.json |
Não crie produtos ou preços Stripe neste aplicativo. Não faça commit de segredos.
Chave USPTO
- Crie uma conta USPTO.gov.
- Verifique e vincule o ID.me. Esse vínculo é único.
- Abra Open Data Portal getting started e solicite uma chave de API.
- Defina
USPTO_API_KEY.
Chaves antigas da API PatentsView não funcionam no Open Data Portal.
Chave EPO
- Registre-se em developers.epo.org.
- Crie um aplicativo. O EPO mostra uma chave de consumidor e um segredo de consumidor.
- Defina
EPO_CONSUMER_KEYeEPO_CONSUMER_SECRET.
O OPS é gratuito dentro da política de uso justo do EPO. O servidor envia grant_type=client_credentials para https://ops.epo.org/3.2/auth/accesstoken.
Contas e armazenamento
As ferramentas de patente são pesquisas sem estado de escritórios públicos. O estado de teste e assinatura, clientes OAuth e tokens vivem em um único documento JSON atrás de AccountStore.
memorymantém esse documento no processo. É o padrão e o que os testes locais usam. Não sobrevive a uma reinicialização ou a uma segunda instância serverless.filegravaSTORAGE_PATH(padrão./data/patent-store.json). Use para Docker ou um processo Node de longa duração.httpfaz GET e PUT do mesmo documento emSTORAGE_URL. Aponte para o armazenamento que você já executa. Este servidor não cria um banco de dados.blobarmazena o mesmo documento no Vercel Blob emSTORAGE_BLOB_PATH(padrãopatent/accounts.json). DefinaSTORAGE_BACKEND=blobno Vercel. O cliente Blob usaBLOB_READ_WRITE_TOKEN, que o Vercel injeta quando uma loja Blob está conectada. As leituras ignoram o cache CDN. As gravações enviamifMatche tentam novamente quando outra instância atualizou o documento primeiro.
Clientes OAuth, códigos de autorização, tokens de acesso e tokens de atualização são campos nesse documento. A tela de consentimento envia a solicitação de autorização com a aprovação; nada sobre a concessão é mantido na memória do processo. Códigos expirados e tokens de atualização são removidos a cada gravação.
Implantar
Vercel: o aplicativo Express é a exportação padrão de api/index.ts. vercel.json envia cada caminho para essa função e agrupa logo.jpg nela, então /logo.jpg é servido pelo aplicativo e arquivos do repositório como /package.json não são ativos estáticos. Defina as variáveis de ambiente acima, incluindo STORAGE_BACKEND=blob. Aponte o webhook do Stripe para https://<your-host>/billing/webhook.
Docker:
docker build -t patent-mcp .
docker run --env-file .env -p 8787:8787 patent-mcp
O que foi verificado
Localmente, via Streamable HTTP: tools/list e cada uma das quatro ferramentas, registro OAuth com PKCE, expiração do teste, formato da solicitação de checkout do Stripe e verificação de assinatura do webhook. O host do USPTO respondeu sem chave (não autorizado). O host de token do EPO respondeu sem credenciais de consumidor. Nenhuma cobrança Stripe ao vivo foi feita, e o servidor não foi implantado no Vercel a partir deste espaço de trabalho.
Mais da Ouroboros: https://ouroborosapps.com