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.
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ável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
ANCHORD_API_KEY | Sim | — | Sua chave de API do Anchord (token Bearer) |
ANCHORD_API_BASE_URL | Não | https://api.anchord.ai | URL base da API |
Consulte docs/auth.md para detalhes sobre autenticação e escopo de tenant.
Ferramentas disponíveis
| Ferramenta | Descrição |
|---|---|
resolve_company | Resolve uma empresa para um AnchorID canônico |
resolve_company_batch | Resolução em lote de empresas (máx. 200) |
resolve_person | Resolve uma pessoa para um AnchorID canônico |
resolve_person_batch | Resolução em lote de pessoas (máx. 200) |
get_entity | Busca um AnchorID com registros vinculados opcionais |
get_entity_export | Exporta o registro dourado (golden record) para um AnchorID |
link_source_record | Vincula um registro de origem a um AnchorID |
unlink_source_record | Exclusão lógica de um vínculo de registro de origem |
guard_write | Verificação de segurança pré-escrita (somente avaliação) |
guard_write_batch | Verificação de segurança pré-escrita em lote (máx. 200) |
ingest_record | Ingere 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:
- Não grave. Os dados são ambíguos.
- Apresente os candidatos ao usuário — a resposta inclui IDs de entidades e pontuações de correspondência.
- Direcione o usuário para a Fila de Revisão:
https://app.anchord.ai/app/queues/needs-review - 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_idestá sempre presente — do corpo da resposta da API, do cabeçalhox-request-idou de um UUID gerado pelo cliente.detailsconté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
- Site do Anchord
- Cadastre-se
- Documentação da API (Swagger)
- Início rápido para agentes
- Referência de ferramentas
- Autenticação