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) público y gratuito para datos Web3. Apunta cualquier cliente MCP — Claude Desktop, Cursor, tu propio agente — a él y podrá leer datos de cadena en vivo (altura de bloque, gas, estado de transacción, información ERC-20, precios spot), consultar pronósticos meteorológicos, construir transacciones de transferencia EVM/Solana sin firmar y, para un puñado de herramientas de pago por llamada, consultar datos de mercado, wallets/tokens/ENS, búsqueda de viajes, datos de lugares/energía solar/vista aérea e identidad de perfiles sociales.

Sin clave API, 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 retiene ni firma fondos en tu nombre.

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

Contenido


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 / ENRICHMENT_RELAY_BASE_URL
# (each required for its own group of paid tools) + WEATHERAPI_KEY (required for weather.forecast)
npm run start:dev
  • Verificación de salud: GET http://localhost:3011/health
  • Endpoint MCP: POST http://localhost:3011/mcp
  • Documentación de API (solo salud): http://localhost:3011/api/docs

Las migraciones de base de datos se ejecutan automáticamente al arrancar — no se necesita un paso CLI separado.

Ú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 siguientes estarán disponibles para él — sin configuración adicional.

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 de gas actual + sugerencias de tarifa EIP-1559 para una cadena EVM.
network.token_infoNoNombre / símbolo / decimales / suministro total de ERC-20.
network.token_priceNoPrecio spot vía CoinGecko (por defecto ETH/USD).
network.prepare_transferNoConstruye una transacción de transferencia nativa/ERC-20/SPL sin firmar a partir de un from/to/amount explícito. Nunca firma ni transmite.
weather.forecastNoCondiciones actuales, pronóstico, astronomía, búsqueda de ubicación, histórico y consultas meteorológicas marinas, 6 acciones.
market.cryptoSíConsultas de datos de mercado de criptomonedas (fuente CoinGecko), 6 acciones.
web3.lookupSíConsultas de wallet / token / ENS / simulación de transacciones multicadena, 7 acciones.
travel.searchSíBúsqueda de vuelos y hoteles, 2 acciones.
places.lookupSíConsultas de lugar / energía solar / vista aérea, 11 acciones.
social.profile_lookupSíResolución de identidad de persona / perfil social para un lote de registros.

Las herramientas están agrupadas por área (network.*, market.*, web3.*, travel.*, places.*, social.*) 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 pago y recibirás un desafío paymentRequired (no un error). Tu cliente de wallet lo firma y reintenta la misma llamada con paymentPayload configurado — tu wallet paga directamente; este servicio solo retransmite la solicitud.

Llamar herramientas directamente (curl)

La mayoría de la gente usará un cliente MCP (arriba), pero el endpoint es JSON-RPC simple sobre HTTP si quieres escribir scripts directamente contra él:

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 no tiene estado, por lo 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 seguimiento de abuso
PUBLIC_MCP_RATE_LIMIT_PER_MIN / _WINDOW_MSNoLímite de tasa global por IP (por defecto 30/min)
CHAIN_RPC_*NoAnulaciones de RPC EVM por cadena — se usan los valores públicos predeterminados si no se configuran (ver src/mcp/utils/chain-registry.util.ts)
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URLNoAnulaciones de RPC del clúster de Solana
WEATHERAPI_KEYSíClave API gratuita para weather.forecast — consíguela en la página de registro de WeatherAPI.com (nivel gratuito de 100K llamadas/mes, no se usan funciones de pago). Sin ella, weather.forecast devuelve un error claro en lugar de fallar todo el servicio.
WEATHERAPI_BASE_URLSíURL base ascendente para weather.forecast — no se confirma ningún valor predeterminado en el código fuente, por lo que la herramienta falla limpiamente hasta que se configura (se envía como https://api.weatherapi.com/v1 en .env.example; anúlalo para apuntar a un espejo simulado/autoalojado para pruebas locales).
UPSTREAM_RELAY_BASE_URLSíURL base para el relé ascendente detrás de market.crypto / web3.lookup / travel.search — no se confirma ningún valor predeterminado, por lo que esas 3 herramientas fallan hasta que se configura
ENRICHMENT_RELAY_BASE_URLSíURL base para el relé ascendente detrás de places.lookup / social.profile_lookup — un ascendente separado de UPSTREAM_RELAY_BASE_URL, no se confirma ningún valor predeterminado

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

Este es un despliegue único e independiente — no comparte espacio de trabajo ni base de datos con ningún otro servicio de Abstraxn. Esto es deliberado: varios registros MCP esperan que un servidor MCP público viva en su propio repositorio 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 sin procesar (lecturas de Solana) · @solana/web3.js + @solana/spl-token (construcción de transferencias de Solana) · @skalenetwork/bite (transferencias cifradas de privacidad SKALE) · helmet, @nestjs/throttler

Base de datos

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

TablaPropósito
observed_ipsUna fila por IP de llamante, con un recuento de llamadas en curso y hora de último acceso.
observed_walletsUna fila por dirección de wallet vista pagando vía x402.
public_mcp_transactionsHistorial de solo anexión de llamadas de pago completadas.

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

Seguridad

Dado que cualquiera puede llamar a este servicio sin clave, importan algunos invariantes:

  • Sin superficie SSRF: cada URL saliente (RPC de cadena, relé ascendente, CoinGecko) proviene de 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, configura app.set('trust proxy', ...) en main.ts, o el limitador terminará limitando al proxy en lugar de a los llamantes reales.
  • Sin secretos más allá de la contraseña de la base de datos y WEATHERAPI_KEY, ambos solo de entorno y nunca registrados — weather.forecast construye su URL de solicitud al proveedor con la clave como parámetro de consulta, pero cada línea de registro solo lleva el nombre de la acción y el mensaje de error, nunca la URL en sí.
  • CORS es comodín por diseño — nada específico de tenant cruza nunca un origen aquí.

¿Encontraste un problema de seguridad? Consulta CONTRIBUTING.md antes de abrir un problema público.

Scripts

ScriptDescripción
npm run start:devEjecutar en modo de observación
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 de humo HTTP

Contribuciones

Los problemas y las solicitudes de extracción son bienvenidos — consulta CONTRIBUTING.md para saber cómo añadir una nueva herramienta y la definición de "hecho" del proyecto.

Licencia: MIT