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

Serviço Público Web3 MCP da Abstraxn

License: MIT Node

Um servidor MCP (Model Context Protocol) público e gratuito para dados Web3. Aponte qualquer cliente MCP — Claude Desktop, Cursor, seu próprio agente — para ele e ele poderá ler dados de cadeia ao vivo (altura do bloco, gás, status de transação, informações ERC-20, preços à vista), consultar previsões meteorológicas, construir transações de transferência EVM/Solana não assinadas e, para um punhado de ferramentas pagas por chamada, consultar dados de mercado, carteiras/tokens/ENS, busca de viagens, dados de lugares/solar/vista aérea e identidade de perfis sociais.

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

Construído sobre o oficial @modelcontextprotocol/sdk 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 / ENRICHMENT_RELAY_BASE_URL
# (each required for its own group of paid tools) + WEATHERAPI_KEY (required for weather.forecast)
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 de CLI separada é necessária.

Usar a partir do Claude Desktop / Cursor

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

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

Reinicie o cliente e as ferramentas abaixo ficarão disponíveis para ele — nenhuma 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 / fornecimento total ERC-20.
network.token_priceNãoPreço à vista via CoinGecko (padrão ETH/USD).
network.prepare_transferNãoConstrua uma transação de transferência nativa/ERC-20/SPL não assinada a partir de um from/to/amount explícito. Nunca assina ou transmite.
weather.forecastNãoCondições atuais, previsão, astronomia, busca de localização, histórico e consultas meteorológicas marinhas, 6 ações.
market.cryptoSimConsultas de dados de mercado de criptomoedas (fonte CoinGecko), 6 ações.
web3.lookupSimConsultas multi-cadeia de carteira / token / ENS / simulação de transação, 7 ações.
travel.searchSimBusca de voos e hotéis, 2 ações.
places.lookupSimConsultas de lugar / solar / vista aérea, 11 ações.
social.profile_lookupSimResolução de identidade de pessoa / perfil social para um lote de registros.

As ferramentas são agrupadas por área (network.*, market.*, web3.*, travel.*, places.*, social.*) 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, então 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
WEATHERAPI_KEYSimChave de API gratuita para weather.forecast — obtenha uma na página de cadastro da WeatherAPI.com (100 mil chamadas/mês no nível gratuito, nenhum recurso pago usado). Sem ela, weather.forecast retorna um erro claro em vez de falhar todo o serviço.
WEATHERAPI_BASE_URLSimURL base upstream para weather.forecast — nenhum padrão é commitado no código-fonte, então a ferramenta falha limpa até que isso seja definido (envia como https://api.weatherapi.com/v1 em .env.example; substitua para apontar para um espelho mock/auto-hospedado para testes locais).
UPSTREAM_RELAY_BASE_URLSimURL base para o relay upstream por trás de market.crypto / web3.lookup / travel.search — nenhum padrão é commitado, então essas 3 ferramentas falham até que isso seja definido
ENRICHMENT_RELAY_BASE_URLSimURL base para o relay upstream por trás de places.lookup / social.profile_lookup — um upstream separado de UPSTREAM_RELAY_BASE_URL, nenhum padrão é commitado

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 deployable único e independente — não compartilha workspace ou banco de dados com nenhum outro serviço da Abstraxn. Isso é deliberado: 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 bruto (leituras Solana) · @solana/web3.js + @solana/spl-token (construção de transferência Solana) · @skalenetwork/bite (transferências criptografadas de privacidade SKALE) · helmet, @nestjs/throttler

Banco de dados

Postgres é usado apenas para rastreamento de abuso — nenhuma tabela de tenant, política ou configuração existe:

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, alguns invariantes importam:

  • Sem superfície SSRF: cada URL de saída (RPC de cadeia, relay upstream, CoinGecko) vem da configuração do lado do servidor — nenhuma ferramenta aceita uma URL fornecida pelo chamador.
  • Limitação de taxa é global e chaveada por IP — a única alavanca disponível sem contas. Se você implantar atrás de um proxy reverso, defina app.set('trust proxy', ...) em main.ts, ou o limitador acabará limitando o proxy em vez dos chamadores reais.
  • Sem segredos além da senha do banco de dados e WEATHERAPI_KEY, ambos somente por ambiente e nunca registrados — weather.forecast constrói a URL de solicitação do provedor com a chave como parâmetro de consulta, mas cada linha de log sempre carrega apenas o nome da ação e a mensagem de erro, nunca a URL em si.
  • CORS é curinga por design — nada específico de tenant cruza uma origem 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 de 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