Servidor MCP (Strategy)
Conecte um agente de IA diretamente à API de Armazenamento de Estratégia via Model Context Protocol — salve, busque e gerencie objetos de Strategy DSL como ativos independentes, sem depender de nenhum backtest ou subscription ao vivo.
#Visão geral
O emidlabs-strategy-mcp é um servidor Model Context Protocol (MCP) hospedado que expõe a API de Armazenamento de Estratégia como tools chamáveis por agente — uma estratégia salva aqui ganha um id estável que você pode referenciar depois, ou pode passar sua definição direto pro submit_backtest do emidlabs-backtest-mcp ou pro create_subscription do emidlabs-live-mcp.
Endpoint: https://mcp.strategy.emidlabs.com/mcp (transporte Streamable HTTP).
riskManagement fecha uma posição, se entryFeePct se aplica) depende inteiramente de pra onde você submeter depois — submit_backtest ou create_subscription, não este servidor.#Conectando um agente
Escolha seu cliente
Claude e ChatGPT descobrem esse servidor automaticamente via OAuth. Cursor e a maioria dos coding agents preferem o bloco JSON cru abaixo.
Adicione o conector
Adicione o servidor na configuração do seu cliente MCP. O arquivo exato varia por cliente, mas o formato é o mesmo em todo lugar — um nome e uma URL:
{
"mcpServers": {
"emidlabs-strategy": {
"url": "https://mcp.strategy.emidlabs.com/mcp"
}
}
}/mcp — https://mcp.strategy.emidlabs.com/mcp, não só mcp.strategy.emidlabs.com. Esquecer o caminho é o motivo mais comum de um conector falhar ao registrar, e o erro resultante raramente deixa a causa real óbvia.Autentique
Três formas de autenticar, e você pode combinar mais de uma — o conector tenta na ordem abaixo:
| Método | Como | Melhor para |
|---|---|---|
| Login via OAuth (recomendado) | Só adicione o conector sem configuração extra. Claude/ChatGPT descobrem o fluxo de login automaticamente e pedem pra você entrar com sua conta EmidLabs — uma API key dedicada é criada pra sua conta na primeira vez e reutilizada depois disso. | Conectores pessoais no Claude.ai / ChatGPT. Nada pra copiar, colar ou digitar — nunca. |
| Header x-api-key | Configure uma API key específica da EmidLabs uma vez ao adicionar o conector (ex: a opção "custom header" / static_headers do Claude) — anexada automaticamente em toda requisição a partir daí. | Conectores gerenciados por organização, onde um admin quer que todo membro compartilhe uma key específica em vez de logins OAuth individuais. |
| Argumento na tool | Passe uma API key como strategyApiKey em cada chamada — o agente recebe a key diretamente (ex: na conversa). | Coding agents, uso local/CLI, ou qualquer cliente sem suporte a autenticação no nível do conector. |
#Tools
save_strategy
Salva um objeto de Strategy DSL como um ativo independente de primeira classe — sem depender de nenhum backtest ou subscription ao vivo. Retorna um id estável.
| Argumento | Tipo | Descrição |
|---|---|---|
| strategyApiKey | string (opcional) | Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector. |
| name | string | Nome legível pra essa estratégia. |
| description | string (opcional) | Notas em texto livre sobre essa estratégia. |
| definition | object | O objeto de Strategy DSL — veja o resource strategy-dsl-spec abaixo. |
| tags | string[] (opcional) | Rótulos livres pra filtrar depois via list_strategies. |
| strategyBaseUrl | string (opcional) | Usa a API pública de produção por padrão. |
get_strategy
Busca uma estratégia salva pelo id, incluindo sua definição completa.
| Argumento | Tipo | Descrição |
|---|---|---|
| strategyApiKey | string (opcional) | Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector. |
| id | string | O id retornado por save_strategy. |
| strategyBaseUrl | string (opcional) | Usa a API pública de produção por padrão. |
list_strategies
Lista as estratégias salvas dessa conta, paginado, opcionalmente filtrado por tag e/ou status. Cada item inclui a definition completa — sem precisar de uma busca separada só pra navegar.
| Argumento | Tipo | Descrição |
|---|---|---|
| strategyApiKey | string (opcional) | Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector. |
| tag | string (opcional) | Filtra pras estratégias que carregam essa tag. |
| status | string (opcional) | "Active" ou "Archived". Usa Active-only por padrão quando omitido. |
| page | integer (opcional) | Número da página, começando em 1. Padrão 1. |
| pageSize | integer (opcional) | Resultados por página, 1-100. Padrão 20. |
| strategyBaseUrl | string (opcional) | Usa a API pública de produção por padrão. |
Omitir status retorna só estratégias Active — passe status: "Archived" explicitamente pra ver as que você arquivou.
update_strategy
Atualiza os campos de uma estratégia salva. Passe só os campos que quer mudar — campos omitidos mantêm o valor atual. Sobrescreve no lugar; ainda não há histórico de versões.
| Argumento | Tipo | Descrição |
|---|---|---|
| strategyApiKey | string (opcional) | Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector. |
| id | string | O id retornado por save_strategy. |
| name | string (opcional) | Novo nome. Omita pra manter inalterado. |
| description | string (opcional) | Nova descrição. Omita pra manter inalterado. |
| definition | object (opcional) | Novo objeto de Strategy DSL. Omita pra manter inalterado. |
| tags | string[] (opcional) | Nova lista de tags — substitui as tags existentes por completo. Omita pra manter inalterado. |
| strategyBaseUrl | string (opcional) | Usa a API pública de produção por padrão. |
archive_strategy
Arquiva uma estratégia salva — soft-delete, muda o status pra Archived, nunca apaga de verdade. Estratégias arquivadas continuam existindo e continuam buscáveis via get_strategy, elas só ficam de fora da listagem padrão de list_strategies.
| Argumento | Tipo | Descrição |
|---|---|---|
| strategyApiKey | string (opcional) | Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector. |
| id | string | O id retornado por save_strategy. |
| strategyBaseUrl | string (opcional) | Usa a API pública de produção por padrão. |
#Resources
strategy-dsl-spec
Uma referência condensada, em markdown, pro formato JSON exato de Strategy DSL esperado pelo campo definition de save_strategy (emidlabs://strategy-dsl-spec) — essa é a cópia canônica: emidlabs-strategy-api é o dono do domínio do que é uma Strategy, então esse servidor é a fonte de verdade de como construir uma.
inputs/conditions/score — a parte que é genuinamente idêntica não importa onde a estratégia acabe rodando — é buscada em tempo real do próprio GET /dsl-core-reference do strategy-api e cacheada por alguns minutos, em vez de copiada à mão. Os três servidores MCP (backtest, live, e este) buscam esse mesmo núcleo e o encaixam no próprio conteúdo local, então essa parte não consegue dessincronizar entre eles.Ler esse resource primeiro é opcional, não obrigatório — todo campo no próprio schema da tool save_strategy já documenta seu formato exato diretamente, já que clientes MCP não buscam de forma confiável um resource separado antes de gerar uma chamada.
#Limites de taxa
Dois limites independentes se aplicam, e eles aparecem de forma diferente de propósito pra nunca serem confundidos entre si:
| Limite | Escopo | O que protege | O que você vê |
|---|---|---|---|
| Cota do strategy-api | Por API key | O limite real de uso/faturamento da sua conta | Um 4xx do strategy-api, repassado como erro de tool do MCP. |
| Guarda de infra do MCP | Por IP/conexão | O processo do MCP em si, contra loops descontrolados ou enxurradas malformadas | Um 429 com uma mensagem identificando explicitamente que é a guarda da própria camada MCP, não a cota da sua conta. |
#Escopo
Esse servidor só expõe armazenamento de estratégia — salvar, buscar, listar, atualizar e arquivar definições de estratégia. Ele nunca submete um backtest nem cria uma subscription ao vivo por conta própria (use o emidlabs-backtest-mcp ou o emidlabs-live-mcp pra isso), e não expõe nenhuma ação do Console (criar ou rotacionar API keys, mudar planos de cobrança, gestão de conta).