Open Medici Public Fellowship and Grant Search
MCP remoto somente leitura para encontrar e comparar bolsas públicas, subsídios, bolsas de estudo, prêmios e residências financiadas.
Documentação
O servidor público não requer autenticação. Não adicione chave de API, cabeçalho Authorization, credencial OAuth ou cookie. A disponibilidade do cliente depende do plano do provedor e das permissões do workspace; se um controle de conector personalizado estiver ausente, use a API REST ou outro cliente MCP.
| Cliente | Configuração | Como usar |
|---|---|---|
| ChatGPT | Ative o modo de desenvolvedor em Configurações → Segurança e login. Em seguida, abra Configurações → Plugins ou chatgpt.com/plugins, escolha +, forneça um nome e descrição, insira https://openmedici.com/mcp como URL do MCP e crie o aplicativo. | Em um novo chat, escolha + → Mais → Open Medici. Se esses controles estiverem ausentes, o plano atual ou a função do workspace não expõe conexões MCP personalizadas. |
| Claude web ou desktop | Abra Personalizar → Conectores, escolha + → Adicionar conector personalizado, cole https://openmedici.com/mcp e adicione-o. Workspaces Team e Enterprise podem exigir que um proprietário adicione o conector primeiro. | Ative o Open Medici para uma conversa em + → Conectores. |
| Claude Code | Execute o comando abaixo. Ele armazena uma conexão de projeto local por padrão e não requer cabeçalho ou variável de ambiente. | Execute /mcp dentro do Claude Code para confirmar que três ferramentas estão conectadas. |
| Outros clientes MCP | Os nomes dos campos de configuração variam conforme o cliente. Siga as instruções de HTTP remoto ou Streamable HTTP do cliente e insira https://openmedici.com/mcp. Não reutilize a estrutura JSON de outro cliente. | Confirme que search_opportunities, get_opportunity e list_filter_options estão disponíveis. |
Claude Code
claude mcp add --transport http open-medici https://openmedici.com/mcp
Referência de configuração do ChatGPT ↗ Referência do conector Claude ↗ Referência do Claude Code ↗
Essas solicitações sem estado comprovam initialize → tools/list → opções de filtro ao vivo → search. Cada resposta é HTTP 200 com JSON quando bem-sucedida.
1. Initialize HTTP 200 · application/json
curl --silent --show-error 'https://openmedici.com/mcp' \
--header 'Accept: application/json, text/event-stream' \
--header 'Content-Type: application/json' \
--header 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"open-medici-quickstart","version":"1.0.0"}}}'
Fragmento esperado
{"result":{"protocolVersion":"2025-11-25","serverInfo":{"name":"open-medici-public"}}}
2. List tools HTTP 200 · application/json
curl --silent --show-error 'https://openmedici.com/mcp' \
--header 'Accept: application/json, text/event-stream' \
--header 'Content-Type: application/json' \
--header 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
Fragmento esperado
{"result":{"tools":[{"name":"search_opportunities"},{"name":"get_opportunity"},{"name":"list_filter_options"}]}}
3. Carregar valores de filtro atuais HTTP 200 · application/json
curl --silent --show-error 'https://openmedici.com/mcp' \
--header 'Accept: application/json, text/event-stream' \
--header 'Content-Type: application/json' \
--header 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_filter_options","arguments":{"facet":"types","q":"grant","limit":10}}}'
Fragmento esperado
{"result":{"structuredContent":{"data":[{"value":"grant","label":"Grant"}]}}}
4. Search HTTP 200 · application/json
curl --silent --show-error 'https://openmedici.com/mcp' \
--header 'Accept: application/json, text/event-stream' \
--header 'Content-Type: application/json' \
--header 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"search_opportunities","arguments":{"query":"climate","openOnly":true,"fundedOnly":true,"limit":5}}}'
Fragmento esperado
{"result":{"structuredContent":{"opportunities":[{"slug":"…","recordUrl":"https://openmedici.com/programs/…","officialUrl":"https://…","sourceCheckedAt":"2026-…"}]}}}
Após a pesquisa, verifique cada candidato antes de classificá-lo ou citá-lo.
5. Ler uma oportunidade HTTP 200 · application/json
curl --silent --show-error 'https://openmedici.com/mcp' \
--header 'Accept: application/json, text/event-stream' \
--header 'Content-Type: application/json' \
--header 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"get_opportunity","arguments":{"slug":"{slug}","locale":"en"}}}'
{"result":{"structuredContent":{"opportunity":{"slug":"…","sources":[…]}}}}
| Capacidade | Tipo | Uso |
|---|---|---|
list_filter_options | Ferramenta | Carregue o vocabulário de filtros atual do banco de dados antes de pesquisar. |
search_opportunities | Ferramenta | Pesquise oportunidades publicadas com filtros estruturados. |
get_opportunity | Ferramenta | Leia os detalhes, fontes, ciclos e fatos aprovados de um candidato. |
find_best_opportunities | Prompt | Execute um fluxo de trabalho de correspondência conduzido por entrevista. |
Todas as ferramentas são somente leitura e idempotentes. Uma ferramenta pode relatar isError para um resultado de validação ou não encontrado, mesmo quando o transporte HTTP em si foi bem-sucedido.
Clientes do lado do servidor podem omitir o cabeçalho Origin e não enviar credenciais. Clientes de navegador devem usar a origem canônica do Open Medici ou uma origem explicitamente configurada pela implantação. Uma origem de navegador não configurada recebe HTTP 403.
A resposta CORS do transporte não contém credenciais. Não envie cookies. A validação de host também rejeita uma solicitação endereçada a um host não aprovado com HTTP 421.
| Problema | Causa provável | Correção ou nova tentativa | Referência |
|---|---|---|---|
| HTTP 400 | JSON inválido ou cabeçalho de protocolo não suportado. | Corrija o corpo/versão; não tente novamente sem alterações. | Início rápido |
| HTTP 403 | A origem do navegador não está configurada. | Use um cliente do lado do servidor ou peça ao proprietário da implantação para configurar a origem exata. | Política de origem |
| HTTP 413 | A solicitação excede 64 KiB. | Reduza o corpo JSON-RPC. | Fluxo de solicitação |
| HTTP 421 | O host não é aprovado para esta implantação. | Use o endpoint do cartão do servidor. | Cartão do servidor |
| HTTP 429 | O cliente excedeu 60 solicitações por minuto. | Respeite Retry-After e tente novamente com backoff. | Fluxo de solicitação |
| HTTP 500 | O servidor não pôde concluir a solicitação. | Tente novamente com backoff e relate uma falha persistente com o ID/método da solicitação. | Contato |
JSON-RPC error | O método ou os parâmetros do protocolo eram inválidos. | Use o código/mensagem retornado para corrigir a solicitação. | Capacidades |
Ferramenta isError | A ferramenta rejeitou um intervalo, filtro ou registro ausente. | Corrija os argumentos; não trate como uma falha transitória de transporte. | Definição da ferramenta |