Skip to main content
Glama

Servidor MCP de MAIN

Servidor MCP (Model Context Protocol) para el DEX MAIN en Base. Proporciona a los agentes de IA (Claude, Cursor, etc.) herramientas para interactuar con el protocolo: intercambiar tokens, gestionar liquidez, entrar/salir de estrategias ALM, y más.

Conexión con Claude

Claude Code:

claude mcp add main-mcp --transport http https://api.main.exchange/mcp

Related MCP server: paean-dex-mcp

Protocolo MCP

El servidor implementa la especificación MCP 2025-03-26 sobre transporte HTTP Streamable.

# Initialize
curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'

# List tools
curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | jq '.result.tools[] | {name, description}'

# Health
curl https://api.main.exchange/mcp/health

Pagos x402

Algunas herramientas requieren pago en USDC a través del protocolo x402. Cuando se llama a una herramienta de pago sin realizar el pago, el servidor responde con un error JSON-RPC que contiene los requisitos de pago (cantidad, destinatario, red). Los clientes compatibles con x402 gestionan esto automáticamente.

Herramientas de pago: createPool, launchToken, getPoolsTerminal, getPoolTerminal, getTokenTerminal, getTokenHolders, getTokenSentiment, getForecastSummary

Herramientas

Tokens

getTokens — Obtiene todos los tokens en el protocolo ordenados por volumen de negociación.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getTokens","arguments":{}}}' \
  | jq '.result.content[0].text | fromjson'

approveTokens — Prepara una transacción de aprobación ERC20.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"approveTokens","arguments":{"tokenAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","spenderAddress":"0x002E67c3F7BF96eB3aA4066073923e415581d385"}}}' \
  | jq '.result.content[0].text | fromjson'

getTokenTerminal (pago mediante x402) — Obtiene información detallada del token desde el api-terminal: precio, capitalización de mercado, suministro, liquidez, volumen, transacciones, cambios de precio y enlaces sociales.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getTokenTerminal","arguments":{"tokenAddress":"0x4200000000000000000000000000000000000006"}}}' \
  | jq '.result.content[0].text | fromjson'

getTokenHolders (pago mediante x402) — Obtiene los 100 principales titulares de un token desde el api-terminal: dirección, etiqueta, cantidad, porcentaje y valor en USD.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getTokenHolders","arguments":{"tokenAddress":"0x4200000000000000000000000000000000000006"}}}' \
  | jq '.result.content[0].text | fromjson'

getTokenSentiment (pago mediante x402) — Obtiene el análisis de sentimiento del token desde el api-terminal: narrativa (resumen, catalizadores, riesgos) y menciones de la comunidad (estado de ánimo, desglose de sentimiento, publicaciones de X/Twitter).

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getTokenSentiment","arguments":{"symbol":"WETH"}}}' \
  | jq '.result.content[0].text | fromjson'

getForecastSummary (pago mediante x402) — Obtiene el resumen de previsión de precios para un activo (BTC, ETH, SOL) desde el api-terminal: perspectiva, precio previsto, niveles de soporte/resistencia y distribución de probabilidad.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getForecastSummary","arguments":{"asset":"BTC","horizon":"24h"}}}' \
  | jq '.result.content[0].text | fromjson'

launchToken (pago mediante x402) — Lanza un nuevo token ERC-20 en MAIN. Devuelve calldata para TokenFactory.createToken. El logotipo y el banner deben subirse a IPFS de antemano (ver el endpoint de carga a IPFS en la descripción de la herramienta). Todos los datos del token son inmutables después de su creación.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"launchToken","arguments":{"name":"My Token","symbol":"MTK","totalSupply":"10000000","logo":"bafkreibgxsqxrkrha3oqoatypp4gpuemft47ablrgxkfucqn2rvhsdwaka","description":"A cool token","website":"https://example.com"}}}' \
  | jq '.result.content[0].text | fromjson'

Trading

getPrice — Obtiene una cotización de intercambio: cuánto tokenOut por una cantidad dada de tokenIn.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPrice","arguments":{"amount":"1000000000000000000","tokenIn":"0x4200000000000000000000000000000000000006","tokenOut":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}}' \
  | jq '.result.content[0].text | fromjson'

quoteSwap — Obtiene una cotización de intercambio completa con calldata para la ejecución a través de SwapRouter.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"quoteSwap","arguments":{"amountIn":"1000000","tokenIn":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","tokenOut":"0x4200000000000000000000000000000000000006","recipient":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

Pools

getPoolsTerminal (pago mediante x402) — Obtiene la lista de pools en Base desde el api-terminal con datos de mercado: TVL, volumen de 24h, precios de los tokens y cambios de precio.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPoolsTerminal","arguments":{}}}' \
  | jq '.result.content[0].text | fromjson'

getPoolTerminal (pago mediante x402) — Obtiene información detallada sobre un pool específico desde el api-terminal, incluyendo metadatos del token (símbolo, nombre, imagen).

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPoolTerminal","arguments":{"poolAddress":"0x70acdf2ad0bf2402c957154f944c19ef4e1cbae1"}}}' \
  | jq '.result.content[0].text | fromjson'

getPools — Obtiene pools de liquidez con TVL, volumen y comisiones.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPools","arguments":{}}}' \
  | jq '.result.content[0].text | fromjson'

getPoolAPR — Obtiene el APR del pool (todos los pools o uno específico).

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPoolAPR","arguments":{}}}' \
  | jq '.result.content[0].text | fromjson'

addLiquidityToPool — Prepara una transacción para añadir liquidez a un pool de Algebra.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"addLiquidityToPool","arguments":{"poolAddress":"0xPOOL","amount0":"1000000000000000000","amount1":"1000000","userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

removeLiquidityFromPool — Prepara una transacción para retirar liquidez.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"removeLiquidityFromPool","arguments":{"tokenId":"123","percentage":100,"userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

createPool (pago mediante x402) — Crea e inicializa un nuevo pool CLMM en MAIN. Acepta tokens en cualquier orden y un precio legible por humanos. La herramienta obtiene los decimales del token en la cadena, ordena los tokens, calcula sqrtPriceX96 y verifica que el pool no exista ya.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"createPool","arguments":{"tokenA":"0xTOKEN_A","tokenB":"0xTOKEN_B","price":"0.1"}}}' \
  | jq '.result.content[0].text | fromjson'

Posiciones

getPositions — Obtiene todas las posiciones de liquidez abiertas para una dirección.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getPositions","arguments":{"userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

Smart Wallet

Las estrategias ALM se ejecutan a través de una smart wallet: un contrato proxy determinista desplegado por usuario. La smart wallet debe existir en la cadena antes de entrar en cualquier estrategia.

deploySmartWallet — Despliega una smart wallet para el usuario. Debe llamarse una vez antes de usar cualquier herramienta de estrategia. La transacción debe enviarse directamente desde la EOA del usuario (la fábrica utiliza msg.sender como salt de despliegue).

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"deploySmartWallet","arguments":{"userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

Estrategias

getStrategies — Obtiene las estrategias ALM disponibles con métricas.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getStrategies","arguments":{}}}' \
  | jq '.result.content[0].text | fromjson'

getStrategyPositions — Obtiene las posiciones del usuario en estrategias ALM.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"getStrategyPositions","arguments":{"userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

enterToStrategy — Entra en una estrategia ALM. Devuelve calldata para la smart wallet. Requiere una smart wallet desplegada (use deploySmartWallet primero).

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"enterToStrategy","arguments":{"strategyId":"alm-v1","amount0":"500000","amount1":"0","userAddress":"0xYOUR_ADDRESS","duration":86400,"stopLoss":10,"takeProfit":25}}}' \
  | jq '.result.content[0].text | fromjson'

exitFromStrategy — Sale de una estrategia ALM. Requiere una smart wallet desplegada.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"exitFromStrategy","arguments":{"strategyId":"alm-v1","positionId":"5","percentage":10000,"userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

increaseStrategy — Aumenta una posición en una estrategia ALM. Requiere una smart wallet desplegada.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"increaseStrategy","arguments":{"strategyId":"alm-v1","positionId":"5","amount0":"500000","amount1":"0","userAddress":"0xYOUR_ADDRESS"}}}' \
  | jq '.result.content[0].text | fromjson'

Difusión

broadcastTx — Difunde una transacción firmada a la cadena de bloques.

curl -s -X POST https://api.main.exchange/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"broadcastTx","arguments":{"signedTxHex":"0xSIGNED_TX"}}}' \
  | jq '.result.content[0].text | fromjson'
A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Multi-aggregator swap router for AI agents on Base. 10 bps fee. MCP-native, non-custodial.

  • Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.

  • HiveCapital MCP Server — autonomous investment layer for AI agents

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/asdener123/MAIN-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server