Anchord

Servidor MCP remoto hospedado para resolução de identidade e proteções de escrita.

Documentação

Servidor MCP Anchord

Resolução de identidade e verificações de segurança pré-escrita para agentes de IA.

npm License: MIT

Um servidor MCP que dá aos agentes de IA acesso à API de resolução de identidade do Anchord. Resolva empresas e pessoas para AnchorIDs canônicos, execute verificações de segurança pré-escrita e exporte registros dourados (golden records) — por meio da interface padrão de ferramentas MCP.

Baseado em API hospedada. Este servidor MCP é um proxy leve para a plataforma SaaS do Anchord. Toda a pontuação, correspondência, validação e persistência de dados acontecem no lado do servidor. Nenhuma lógica de negócio é executada localmente.

Somente leitura por design. O Anchord nunca grava em seus sistemas externos (CRMs, bancos de dados, etc.). guard_write avalia uma gravação proposta e retorna permitido/bloqueado — o chamador decide se deve prosseguir.


Início rápido

1. Obtenha uma chave de API

Cadastre-se em app.anchord.ai/signup e crie uma chave de API em Configurações > Chaves de API.

2. Execute com npx (sem instalação)

ANCHORD_API_KEY=<YOUR_ANCHORD_API_KEY> npx -y @anchord/mcp-server

É isso. O servidor inicia via stdio e está pronto para clientes MCP.

3. Ou conecte-se ao remoto hospedado (instalação zero)

Nenhuma instalação local é necessária. Aponte qualquer cliente MCP que suporte transporte HTTP remoto para o endpoint hospedado:

{
  "mcpServers": {
    "anchord": {
      "url": "https://mcp.anchord.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

Consulte docs/remote.md para detalhes completos, notas de compatibilidade de clientes e um fallback local se o seu cliente ainda não suportar MCP remoto.


Configuração do cliente MCP

Cursor (stdio local)

Adicione a .cursor/mcp.json (workspace) ou ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "anchord": {
      "command": "npx",
      "args": ["-y", "@anchord/mcp-server"],
      "env": {
        "ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

Consulte examples/cursor-mcp.json.

Claude Desktop

Adicione à configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS, %APPDATA%\Claude\claude_desktop_config.json no Windows):

{
  "mcpServers": {
    "anchord": {
      "command": "npx",
      "args": ["-y", "@anchord/mcp-server"],
      "env": {
        "ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

Consulte examples/claude-desktop-config.json.

MCP remoto (para clientes que suportam transporte HTTP)

Para acesso remoto sem instalação, use o endpoint hospedado em vez de um processo stdio local. Isso funciona com qualquer cliente MCP que suporte o formato de configuração url + headers:

{
  "mcpServers": {
    "anchord": {
      "url": "https://mcp.anchord.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

Sem necessidade de Node.js, npx ou Docker. Se o seu cliente ainda não suportar MCP remoto, use a configuração stdio local acima. Consulte docs/remote.md para detalhes completos.

Docker

docker build -t anchord-mcp .
echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | \
  docker run --rm -i -e ANCHORD_API_KEY=<YOUR_ANCHORD_API_KEY> anchord-mcp

Ou use o arquivo compose para testes locais:

cp examples/env.example .env
# Edit .env with your API key
docker compose up

Variáveis de ambiente

VariávelObrigatóriaPadrãoDescrição
ANCHORD_API_KEYSim—Sua chave de API do Anchord (token Bearer)
ANCHORD_API_BASE_URLNãohttps://api.anchord.aiURL base da API

Consulte docs/auth.md para detalhes sobre autenticação e escopo de tenant.


Ferramentas disponíveis

FerramentaDescrição
resolve_companyResolve uma empresa para um AnchorID canônico
resolve_company_batchResolução em lote de empresas (máx. 200)
resolve_personResolve uma pessoa para um AnchorID canônico
resolve_person_batchResolução em lote de pessoas (máx. 200)
get_entityBusca um AnchorID com registros vinculados opcionais
get_entity_exportExporta o registro dourado (golden record) para um AnchorID
link_source_recordVincula um registro de origem a um AnchorID
unlink_source_recordExclusão lógica de um vínculo de registro de origem
guard_writeVerificação de segurança pré-escrita (somente avaliação)
guard_write_batchVerificação de segurança pré-escrita em lote (máx. 200)
ingest_recordIngere um registro de origem no Anchord

Referência completa de parâmetros: docs/tools.md


Fluxo de trabalho seguro para agentes

A sequência recomendada para agentes que gravam em sistemas externos:

1. ingest_record        Push the source record into Anchord
                        (optional if using OAuth integrations)

2. resolve_company      Match to a canonical AnchorID
   or resolve_person    → status: resolved | not_found | needs_review

3. IF needs_review      STOP. Do not write.
                        Surface candidates to the user.
                        Direct them to the Review Queue.

4. guard_write          Evaluate the proposed write
                        → allowed: true | false (with block codes)

5. IF allowed           The agent performs the external write.
                        Anchord never writes.

6. Log request_id       Every response includes a request_id
                        for audit trail and debugging.

Use get_entity ou get_entity_export a qualquer momento para inspecionar detalhes do AnchorID ou recuperar o registro dourado mesclado.


Lidando com needs_review

Somente resolve_* retorna needs_review. Isso significa que o Anchord encontrou múltiplas correspondências plausíveis e não consegue resolver automaticamente com confiança.

Para agentes:

  1. Não grave. Os dados são ambíguos.
  2. Apresente os candidatos ao usuário — a resposta inclui IDs de entidades e pontuações de correspondência.
  3. Direcione o usuário para a Fila de Revisão: https://app.anchord.ai/app/queues/needs-review
  4. Tente novamente mais tarde. Depois que um humano resolver a ambiguidade, chamadas de resolução subsequentes retornarão resolved.

Exemplo de mensagem do agente:

Tentei resolver "Acme Corp" mas o Anchord encontrou múltiplas correspondências possíveis. Um humano precisa revisar isso na Fila de Revisão. Vou tentar novamente depois que for resolvido.


Tratamento de erros

Quando a API retorna 4xx/5xx, a resposta da ferramenta MCP é marcada como isError: true com um payload estruturado:

{
  "error": "[422] BATCH_TOO_LARGE: Batch size must not exceed 100 records. (request_id: req_01ABC123)",
  "status_code": 422,
  "request_id": "req_01ABC123",
  "details": { "records": ["Too many records."] }
}
  • request_id está sempre presente — do corpo da resposta da API, do cabeçalho x-request-id ou de um UUID gerado pelo cliente.
  • details contém erros de validação quando disponíveis (null para erros não-JSON).
  • Chaves de API nunca são incluídas em mensagens de erro.

Arquitetura

Local (stdio)

MCP Client (Cursor / Claude Desktop / etc.)
    │  stdio (JSON-RPC)
    ▼
┌──────────────┐
│  MCP Server  │  Node.js + TypeScript
│  (this pkg)  │  Zod schemas · no business logic
└──────┬───────┘
       │  HTTPS + Bearer auth
       ▼
┌──────────────┐
│  Anchord API │  Hosted SaaS — scoring, matching,
│              │  persistence, tenant isolation
└──────────────┘

Remoto hospedado (HTTP)

MCP Client
    │  HTTPS POST + Bearer token
    ▼
┌────────────────────────┐
│  mcp.anchord.ai        │  CloudFront (TLS, routing)
└───────────┬────────────┘
            ▼
┌────────────────────────┐
│  Lambda (stateless)    │  Per-request MCP server
│  Bearer → ApiClient    │  No stored secrets
└───────────┬────────────┘
            │  HTTPS + Bearer auth
            ▼
┌────────────────────────┐
│  Anchord API           │  Same hosted SaaS backend
└────────────────────────┘

Ambos os caminhos expõem as mesmas 11 ferramentas MCP e se conectam à mesma API.


FAQ

O Anchord é self-hosted?

Não. O Anchord é uma plataforma SaaS hospedada. Este servidor MCP é um cliente leve que chama a API do Anchord. Você precisa de uma chave de API em app.anchord.ai/signup.

O Anchord grava nos meus CRMs?

Não. O Anchord é estritamente somente leitura. Ele lê dados de sistemas conectados (Salesforce, HubSpot, Stripe) para construir grafos de identidade, mas nunca grava de volta. guard_write retorna uma decisão — o chamador executa qualquer gravação real.

Com quais sistemas o Anchord funciona?

O Anchord tem integrações OAuth para Salesforce, HubSpot e Stripe. Você também pode enviar registros de qualquer sistema por meio da ferramenta ingest_record ou da API REST.

O que acontece quando há ambiguidade?

Quando resolve_* retorna needs_review, significa que múltiplos AnchorIDs candidatos corresponderam com confiança semelhante. O agente deve parar, apresentar os candidatos a um humano e direcioná-lo para a Fila de Revisão do Anchord. Depois de resolvido, chamadas subsequentes retornam resolved.

Quais são os limites de taxa?

120 requisições/minuto por tenant. Endpoints em lote aceitam até 200 itens (resolve, guard) ou 100 registros (ingest). Cotas mensais e diárias por plano se aplicam. Consulte docs/auth.md.


Links


Licença

MIT