Abstraxn

El servidor MCP público de Abstraxn Agent Kit brinda a cualquier agente de IA acceso instantáneo a datos de Web3 y de mercado sin necesidad de registro ni clave API. Consulte datos blockchain en vivo, incluidos números de bloque, precios de gas, estado de transacciones e información y precios de tokens ERC-20 en las principales cadenas EVM y Solana. También puede acceder a las API de pago por llamada de x402engine para datos de criptomercado, consultas de billeteras, tokens y ENS, simulación de transacciones en cadena y búsqueda de vuelos y hoteles. Los pagos se liquidan directamente desde la propia billetera cripto del solicitante a través del protocolo x402, mientras que Abstraxn nunca retiene ni custodia fondos. Ideal para agentes de IA que necesitan datos de blockchain, Web3 y mercado en tiempo real sin fricción de incorporación.

Documentación

Servicio público Web3 MCP de Abstraxn

License: MIT Node

Un servidor MCP (Model Context Protocol) gratuito y público para datos Web3. Apunta cualquier cliente MCP — Claude Desktop, Cursor, tu propio agente — hacia él y podrá leer datos de cadena en vivo (altura de bloque, gas, estado de transacción, información de ERC-20, precios al contado) y, para un puñado de herramientas de pago por llamada, consultar datos de mercado, wallets/tokens/ENS y búsqueda de viajes.

Sin API key, sin cuenta, sin registro. Las herramientas gratuitas están abiertas a cualquiera; las herramientas de pago se liquidan directamente desde la propia wallet del llamante mediante el protocolo de pago x402 — este servicio nunca custodia ni firma fondos en tu nombre.

Construido sobre el @modelcontextprotocol/sdk oficial y NestJS 11.

Contenidos


Inicio 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
  • Comprobación de salud: GET http://localhost:3011/health
  • Endpoint MCP: POST http://localhost:3011/mcp
  • Documentación de la API (solo salud): http://localhost:3011/api/docs

Las migraciones de base de datos se ejecutan automáticamente al arrancar — no se necesita ningún paso adicional de CLI.

Úsalo desde Claude Desktop / Cursor

Añade esto a la configuración de tu cliente MCP (p. ej. claude_desktop_config.json o el mcp.json de Cursor):

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

Reinicia el cliente y las herramientas de abajo estarán disponibles para él — sin más configuración.

Herramientas disponibles

Herramienta¿De pago?Qué hace
network.blocknumberNoNúmero de bloque EVM actual o slot de Solana. Consulta una cadena o todas a la vez.
network.transaction_statusNoConsulta una transacción/firma por hash en EVM o Solana.
network.gas_infoNoPrecio actual del gas + sugerencias de tarifa EIP-1559 para una cadena EVM.
network.token_infoNoNombre / símbolo / decimales / suministro total de un ERC-20.
network.token_priceNoPrecio al contado vía CoinGecko (por defecto ETH/USD).
market.cryptoConsultas de datos de mercado de cripto (con fuente de CoinGecko), 6 acciones.
web3.lookupConsultas de wallet / token / ENS / simulación de tx multicadena, 7 acciones.
travel.searchBúsqueda de vuelos y hoteles, 2 acciones.

Las herramientas están organizadas por área (network.*, market.*, web3.*, travel.*) para que un cliente MCP pueda navegarlas como un árbol en lugar de una lista plana.

Cómo funcionan las herramientas de pago: llámalas sin pagar y recibirás un desafío paymentRequired (no un error). Tu wallet firma ese desafío y reintenta la misma llamada con paymentPayload definido — tu wallet paga directamente; este servicio solo retransmite la solicitud.

Llamar a las herramientas directamente (curl)

La mayoría usará un cliente MCP (ver arriba), pero el endpoint es JSON-RPC puro sobre HTTP si quieres scriptear contra él directamente:

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 devuelve 405 por diseño — cada llamada es sin estado, así que no hay sesión que reanudar.

Configuración

Copia .env.example a .env. Todo tiene un valor predeterminado seguro excepto el marcado como obligatorio:

Variable¿Obligatoria?Descripción
PORTNoPuerto HTTP (por defecto 3011)
POSTGRES_HOST / PORT / USER / PASSWORD / DBNoConexión Postgres, usada solo para el seguimiento de abuso
PUBLIC_MCP_RATE_LIMIT_PER_MIN / _WINDOW_MSNoLímite de tasa global por IP (por defecto 30/min)
CHAIN_RPC_*NoOverrides de RPC EVM por cadena — se usan los valores públicos por defecto si no se definen (ver src/mcp/utils/chain-registry.util.ts)
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URLNoOverrides de RPC del clúster de Solana
UPSTREAM_RELAY_BASE_URLURL base para el relay ascendente detrás de las 3 herramientas de pago — no se ha hecho commit de ningún valor por defecto, así que market.crypto / web3.lookup / travel.search fallan hasta que se establezca

No existe ninguna variable relacionada con autenticación — no hay nada que autenticar en un servicio sin cuentas ni API keys.

Cómo 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

Esto es un despliegue único e independiente — no comparte espacio de trabajo ni base de datos con ningún otro servicio de Abstraxn. Es deliberado: varios registros de MCP esperan que un servidor MCP público viva en su propio repo con una ruta y un conjunto de herramientas fijo, revisable de principio a fin.

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

Base de datos

Postgres se usa solo para el seguimiento de abuso — no existen tablas de tenant, políticas o configuración:

TablaPropósito
observed_ipsUna fila por IP de llamante, con un contador de llamadas y la hora de la última visita.
observed_walletsUna fila por dirección de wallet que se vea pagando vía x402.
public_mcp_transactionsHistorial de solo apéndice de las llamadas de pago completadas.

Si Postgres no está disponible, una llamada igualmente tiene éxito — las escrituras de seguimiento son de mejor esfuerzo y nunca bloquean ni hacen fallar una solicitud MCP real.

Seguridad

Como cualquiera puede llamar a este servicio sin clave, importan algunas invariantes:

  • Sin superficie SSRF: cada URL saliente (RPC de cadena, relay ascendente, CoinGecko) proviene de la configuración del lado del servidor — ninguna herramienta acepta una URL proporcionada por el llamante.
  • El límite de tasa es global y por IP — la única palanca disponible sin cuentas. Si despliegas detrás de un proxy inverso, define app.set('trust proxy', ...) en main.ts, o el limitador acabará limitando al proxy en lugar de a los llamantes reales.
  • Sin secretos más allá de la contraseña de la base de datos, que es solo de entorno y nunca se registra.
  • CORS es comodín por diseño — nada específico de un tenant cruza nunca un origen aquí.

¿Has encontrado un problema de seguridad? Consulta CONTRIBUTING.md antes de abrir un issue público.

Scripts

ScriptDescripción
npm run start:devEjecutar en modo watch
npm run buildCompilar a dist/
npm run start:prodEjecutar la compilación generada (dist/main)
npm run lintESLint
npm testJest — pruebas unitarias, de integración a nivel de SDK y smoke tests HTTP

Contribuir

Los issues y PRs son bienvenidos — consulta CONTRIBUTING.md para saber cómo añadir una nueva herramienta y la definición de "terminado" del proyecto.

Licencia: MIT