Abstraxn

O servidor MCP público do Abstraxn Agent Kit dá a qualquer agente de IA acesso instantâneo a dados Web3 e de mercado, sem necessidade de cadastro ou chave de API. Consulte dados de blockchain ao vivo, incluindo números de blocos, preços de gas, status de transações e informações e preços de tokens ERC-20 nas principais chains EVM e na Solana. Você também pode acessar as APIs pay-per-call do x402engine para dados de mercado de criptomoedas, consultas de carteira, tokens e ENS, simulação de transações on-chain e busca de voos e hotéis. Chamadas pagas são liquidadas diretamente da carteira de criptomoedas do próprio chamador por meio do protocolo x402, enquanto a Abstraxn nunca detém ou custodia fundos. Ideal para agentes de IA que precisam de dados de blockchain, Web3 e mercado em tempo real, sem atrito de integração.

Documentação

Abstraxn Serviço Público de Web3 MCP

License: MIT Node

Um MCP (Model Context Protocol) público, gratuito e servidor para dados Web3. Aponte qualquer cliente MCP — Claude Desktop, Cursor, seu próprio agente — para ele e ele pode ler dados de cadeia em tempo real (altura do bloco, gás, status de transação, informações ERC-20, preços spot) e, para algumas ferramentas pagas por chamada, consultar dados de mercado, wallets/tokens/ENS e busca de viagens.

Sem chave de API, sem conta, sem cadastro. Ferramentas gratuitas estão abertas a qualquer um; ferramentas pagas são liquidadas diretamente da carteira do chamador via protocolo de pagamento x402 — este serviço nunca detém ou assina fundos em seu nome.

Construído sobre o @modelcontextprotocol/sdk oficial e NestJS 11.

Conteúdo


Início rápido

git clone https://github.com/Abstraxn-Labs/abstraxn-agent-layer.git
cd abstraxn-agent-layer
npm install
cp .env.example .env
# Edit .env: Postgres connection + UPSTREAM_RELAY_BASE_URL (required for the 3 paid tools)
npm run start:dev
  • Verificação de saúde: GET http://localhost:3011/health
  • Endpoint MCP: POST http://localhost:3011/mcp
  • Documentação da API (somente saúde): http://localhost:3011/api/docs

As migrações do banco de dados são executadas automaticamente na inicialização — nenhuma etapa separada de CLI é necessária.

Usar a partir do Claude Desktop / Cursor

Adicione isto à configuração do seu cliente MCP (por exemplo, claude_desktop_config.json ou o mcp.json do Cursor):

{
  "mcpServers": {
    "abstraxn-public-web3": {
      "url": "http://localhost:3011/mcp"
    }
  }
}

Reinicie o cliente e as ferramentas abaixo ficam disponíveis para ele — sem configuração adicional.

Ferramentas disponíveis

FerramentaPaga?O que faz
network.blocknumberNãoNúmero do bloco EVM atual ou slot Solana. Consulte uma cadeia ou todas de uma vez.
network.transaction_statusNãoConsulte uma transação/assinatura por hash em EVM ou Solana.
network.gas_infoNãoPreço atual do gás + dicas de taxa EIP-1559 para uma cadeia EVM.
network.token_infoNãoNome / símbolo / decimais / oferta total de ERC-20.
network.token_priceNãoPreço spot via CoinGecko (padrão ETH/USD).
market.cryptoSimConsultas de dados de mercado de criptomoedas (fonte CoinGecko), 6 ações.
web3.lookupSimConsultas de wallet / token / ENS / simulação de transação multicadeia, 7 ações.
travel.searchSimBusca de voos e hotéis, 2 ações.

As ferramentas são organizadas por área (network.*, market.*, web3.*, travel.*) para que um cliente MCP possa navegá-las como uma árvore, em vez de uma lista plana.

Como funcionam as ferramentas pagas: chame uma sem pagamento e você recebe um desafio paymentRequired (não um erro). Seu cliente de carteira o assina e tenta novamente a mesma chamada com paymentPayload definido — sua carteira paga diretamente; este serviço apenas retransmite a solicitação.

Chamar ferramentas diretamente (curl)

A maioria das pessoas usará um cliente MCP (acima), mas o endpoint é JSON-RPC simples sobre HTTP se você quiser criar scripts diretamente contra ele:

BASE=http://localhost:3011
ACCEPT='Accept: application/json, text/event-stream'   # required by the MCP spec

# 1. Initialize a session
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0"}}}'

# 2. List available tools
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. Call a tool
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"network.token_price","arguments":{"symbol":"bitcoin"}}}'

GET /mcp retorna 405 por design — cada chamada é sem estado, portanto não há sessão para retomar.

Configuração

Copie .env.example para .env. Tudo tem um padrão seguro, exceto o marcado como obrigatório:

VariávelObrigatóriaDescrição
PORTNãoPorta HTTP (padrão 3011)
POSTGRES_HOST / PORT / USER / PASSWORD / DBNãoConexão Postgres, usada apenas para rastreamento de abuso
PUBLIC_MCP_RATE_LIMIT_PER_MIN / _WINDOW_MSNãoLimite de taxa global por IP (padrão 30/min)
CHAIN_RPC_*NãoSubstituições de RPC EVM por cadeia — padrões públicos são usados se não definidos (veja src/mcp/utils/chain-registry.util.ts)
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URLNãoSubstituições de RPC do cluster Solana
UPSTREAM_RELAY_BASE_URLSimURL base para o relé upstream por trás das 3 ferramentas pagas — nenhum padrão é commitado, então market.crypto / web3.lookup / travel.search falham até que isto seja definido

Não há variável relacionada a autenticação — não há nada para autenticar em um serviço sem contas ou chaves de API.

Como funciona

MCP client (Claude Desktop, Cursor, your agent)
    → POST /mcp  (this service, stateless — a fresh McpServer per request)
    → free tools: direct chain RPC / CoinGecko calls
    → paid tools: relayed upstream, settled by the caller's wallet via x402

Este é um deploy único e autônomo — não compartilha workspace ou banco de dados com nenhum outro serviço Abstraxn. Isso é proposital: vários registros MCP esperam que um servidor MCP público viva em seu próprio repositório, com uma rota e um conjunto fixo de ferramentas, revisável de ponta a ponta.

Stack: Node.js 20+ · NestJS 11 · @modelcontextprotocol/sdk ^1.30.0 (SDK oficial) · PostgreSQL + TypeORM · @x402/core · viem (EVM) + JSON-RPC puro (Solana) · helmet, @nestjs/throttler

Banco de dados

Postgres é usado apenas para rastreamento de abuso — não existem tabelas de tenant, política ou configuração:

TabelaPropósito
observed_ipsUma linha por IP do chamador, com contagem de chamadas em execução e hora da última visualização.
observed_walletsUma linha por endereço de carteira visto pagando via x402.
public_mcp_transactionsHistórico somente de anexação de chamadas pagas concluídas.

Se o Postgres estiver inacessível, uma chamada ainda é bem-sucedida — as gravações de rastreamento são de melhor esforço e nunca bloqueiam ou falham uma solicitação MCP real.

Segurança

Como qualquer pessoa pode chamar este serviço sem chave, algumas invariantes importam:

  • Sem superfície SSRF: toda URL de saída (RPC da cadeia, relé upstream, CoinGecko) vem da configuração do lado do servidor — nenhuma ferramenta aceita uma URL fornecida pelo chamador.
  • A limitação de taxa é global e por IP — a única alavanca disponível sem contas. Se você fizer deploy atrás de um proxy reverso, defina app.set('trust proxy', ...) em main.ts, ou o limitador acaba limitando o proxy em vez dos chamadores reais.
  • Sem segredos além da senha do banco de dados, que é apenas via ambiente e nunca é registrada.
  • CORS é curinga por design — nada específico de tenant cruza origens aqui.

Encontrou um problema de segurança? Veja CONTRIBUTING.md antes de abrir um problema público.

Scripts

ScriptDescrição
npm run start:devExecutar em modo de observação
npm run buildCompilar para dist/
npm run start:prodExecutar o build compilado (dist/main)
npm run lintESLint
npm testJest — testes unitários, de integração no nível SDK e de fumaça HTTP

Contribuindo

Issues e PRs são bem-vindos — veja CONTRIBUTING.md para saber como adicionar uma nova ferramenta e a definição de pronto do projeto.

Licença: MIT