CIViC MCP Server
Um servidor para consultar a API do CIViC, convertendo respostas GraphQL em tabelas SQLite consultáveis usando Cloudflare Workers.
Documentação
Servidor MCP CIViC
Este é um servidor de Protocolo de Contexto de Modelo (MCP) baseado em Cloudflare Workers que fornece ferramentas para consultar a API CIViC (Interpretação Clínica de Variantes em Câncer). O servidor converte respostas GraphQL em tabelas SQLite consultáveis usando Durable Objects para processamento eficiente de dados.
O banco de dados CIViC é um repositório crowdsourced de interpretações clínicas de variantes de câncer. Este servidor MCP permite consultas estruturadas e análise de dados de informações genômicas de câncer por meio de interações em linguagem natural com assistentes de IA.
Conformidade com a Especificação MCP
Este servidor implementa MCP 2026-07-28 por meio do adaptador SDK v2 sem estado da frota:
server/discoversubstitui a inicialização e cada requisição carrega seu envelope de protocolo/capacidade.- O Worker usa Streamable HTTP sem estado, sem Durable Object de sessão MCP ou
Mcp-Session-Id. - O SDK valida
Mcp-Method/Mcp-Name, carimbaresultTypeeserverInfo, e fornece dicas de cache. - As listas de ferramentas têm ordem de registro determinística.
- As ferramentas retornam
contentestructuredContentem caso de sucesso e erro, comisError: truepara erros. - Resultados estruturados grandes mantêm as proteções de staging e transporte de 100KB da frota.
Referência de Anotações de Ferramentas
O servidor define anotações abrangentes de ferramentas para clientes MCP:
// GraphQL Query Tool
annotations: {
readOnlyHint: false, // Creates/modifies data in SQLite
destructiveHint: false, // Non-destructive data staging
idempotentHint: false, // Different queries produce different results
openWorldHint: true // Interacts with external CIViC API
}
// SQL Query Tool
annotations: {
readOnlyHint: true, // Only reads data
destructiveHint: false, // Cannot modify data (read-only SQL)
idempotentHint: true, // Same query produces same results
openWorldHint: false // Operates on closed SQLite database
}
Transporte
// MCP 2026-07-28 stateless Streamable HTTP
CivicMCP.serve("/mcp").fetch(request, env, ctx)
Os únicos Durable Objects mantidos são objetos de aplicação/dados usados para staging; eles não são sessões de transporte MCP.
Recursos
- Conversão GraphQL para SQL: Converte automaticamente respostas da API CIViC em tabelas SQLite estruturadas
- Armazenamento Eficiente de Dados: Usa Cloudflare Durable Objects com SQLite para staging e consulta de dados
- Manipulação Inteligente de Respostas: Otimiza o desempenho ignorando o staging para respostas pequenas, erros e consultas de introspecção de esquema
- Pipeline de Ferramentas:
civic_graphql_query: Executa consultas GraphQL e faz staging de grandes conjuntos de dadoscivic_query_sql: Permite análise baseada em SQL de dados em stagingcivic_execute: Modo Código — executa JavaScript em um isolado V8 comgql.query()e auxiliares de esquema para acesso completo ao GraphQL
Instalação e Configuração
Pré-requisitos
- Uma conta Cloudflare
- CLI Wrangler instalado
- Aplicativo Claude Desktop
Implantar no Cloudflare Workers
-
Clone este repositório:
git clone <repository-url> cd civic-mcp-server -
Instale as dependências:
npm install -
Implante no Cloudflare Workers:
npm run deploy -
Após a implantação, você receberá uma URL como:
https://civic-mcp-server.YOUR_SUBDOMAIN.workers.dev
Configurar o Claude Desktop
Adicione esta configuração ao seu arquivo claude_desktop_config.json:
{
"mcpServers": {
"civic-mcp-server": {
"command": "npx",
"args": [
"mcp-remote",
"https://civic-mcp-server.quentincody.workers.dev/mcp"
]
}
}
}
Substitua quentincody pelo seu subdomínio real do Cloudflare Workers.
Uso
Após a configuração, reinicie o Claude Desktop. O servidor fornece três ferramentas principais:
civic_graphql_query: Executa consultas GraphQL contra a API CIViCcivic_query_sql: Consulta dados em staging usando SQLcivic_execute: Modo Código — escreva JavaScript contra a API GraphQL CIViC em um isolado V8
Prompts
Este servidor expõe três Prompts MCP que orientam o modelo a usar a ferramenta civic_graphql_query com sintaxe GraphQL correta e estratégias robustas de busca:
Prompts Individuais por Tipo de Dado
get-variant-evidence— Gera GraphQL apenas para Itens de Evidência (sem filtro variantName - não suportado pelo esquema CIViC)get-variant-assertions— Gera GraphQL apenas para Assertions com estratégias sistemáticas de fallback
Prompt Combinado de Dados
get-variant-data— Executa consultas de Itens de Evidência E Assertions para análise abrangente de variantes
Exemplos (VS Code Copilot Chat / comandos de barra):
/get-variant-evidence molecularProfileName:"TP53 Mutation" diseaseName:"Lung Adenocarcinoma" evidenceType:"PROGNOSTIC" first:"200"/get-variant-assertions molecularProfileName:"TPM3-NTRK1 Fusion" therapyName:"Larotrectinib" status:"ALL"/get-variant-data molecularProfileName:"BRAF V600E" diseaseName:"Melanoma" therapyName:"Trametinib" status:"ALL"
Principais Recursos dos Prompts
- Geração GraphQL à Prova de Falhas: Consultas completas e validadas que nunca falham
- Estratégias Inteligentes de Busca: Abordagens automáticas de fallback para encontrar dados relevantes
- Resultados Abrangentes: Itens de evidência incluem descrições clínicas; assertions fornecem resumos de alto nível
- Filtragem Otimizada: O status padrão é "ALL" para evitar filtragem excessiva; parâmetros nulos são automaticamente excluídos
- Geração Adequada de URLs: Links canônicos para verificação (evidência:
/evidence/{id}, assertions:/assertions/{id})
Esses prompts fornecem consultas GraphQL completas com conformidade adequada ao esquema CIViC v2 e metodologias sistemáticas de busca que garantem a descoberta de dados mesmo quando os usuários fornecem parâmetros imperfeitos.
Exemplos de Consultas
Você pode fazer perguntas ao Claude como:
- "Quais são os itens de evidência mais recentes para mutações BRAF?"
- "Mostre-me todas as interpretações terapêuticas para variantes de câncer de pulmão"
- "Encontre genes com mais itens de evidência no banco de dados CIViC"
O Claude usará o servidor (e sua ferramenta civic_graphql_query) para buscar os dados relevantes do banco de dados CIViC e apresentá-los a você. O servidor foi projetado para consultar a versão 2 da API CIViC, garantindo que você obtenha informações atualizadas.
Se você encontrar problemas ou o Claude não parecer estar usando os dados CIViC, verifique novamente as etapas de configuração acima.
Manipulação de Respostas
O servidor otimiza inteligentemente o uso de contexto armazenando resultados grandes em um banco de dados SQLite temporário. Quando as respostas GraphQL atendem a certos critérios, a resposta bruta é retornada diretamente em vez de criar um banco de dados:
- Respostas pequenas (< 1500 caracteres): Retornadas diretamente para evitar sobrecarga desnecessária
- Respostas de erro: Passadas diretamente para facilitar a solução de problemas
- Respostas vazias/nulas: Ignoradas para evitar a criação de bancos de dados vazios
- Consultas de introspecção de esquema: Consultas contendo
__schema,__typeou outros padrões de introspecção são retornadas diretamente, pois contêm metadados em vez de dados adequados para conversão SQL
Essa otimização torna o servidor mais eficiente e fornece melhor visibilidade de erros, ao mesmo tempo que permite análise poderosa baseada em SQL para conjuntos de dados substanciais.
Licença
Licença MIT com Requisito de Citação Acadêmica - consulte LICENSE.md