Servidor MCP - API de clústeres v1
Esta es una implementación de servidor del Protocolo de Contexto de Modelo (MCP) para la API de Clústeres v1. Proporciona puntos finales para autenticación, gestión de clústeres, registro de nombres y más.
Dependencias
{
"@modelcontextprotocol/sdk": "^1.7.0",
"dotenv": "^16.4.7",
"zod": "^3.24.2"
}
Configuración
- Instalar dependencias:
- Cree un archivo
.env
con: CLUSTERS_API_KEY={CLUSTERS_API_KEY} - Construya e inicie el servidor:
Prueba de puntos finales
Dado que este servidor usa StdioServerTransport
, deberá enviar mensajes JSON-RPC a través de la entrada estándar. A continuación, se muestran comandos de ejemplo para probar cada punto final:
Puntos finales de autenticación
Recibir mensaje
echo '{"jsonrpc":"2.0","id":1,"method":"auth_get_message","params":{"address":"0x123...","chainId":1,"nonce":"abc123"}}' | node dist/index.js
Obtener token
echo '{"jsonrpc":"2.0","id":1,"method":"auth_get_token","params":{"signature":"0x123...","signingDate":"2024-03-21","type":"evm","wallet":"0x123..."}}' | node dist/index.js
Validar token
echo '{"jsonrpc":"2.0","id":1,"method":"auth_validate_token","params":{"authKey":"your-auth-key"}}' | node dist/index.js
Puntos finales de administración de clústeres
Crear clúster
echo '{"jsonrpc":"2.0","id":1,"method":"create_cluster","params":{"wallets":[{"address":"0x123...","name":"MyWallet","isPrivate":false}],"authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Obtener clúster por ID
echo '{"jsonrpc":"2.0","id":1,"method":"get_cluster_by_id","params":{"id":"cluster-id","testnet":false}}' | node dist/index.js
Obtener clúster por nombre
echo '{"jsonrpc":"2.0","id":1,"method":"get_cluster_by_name","params":{"name":"cluster-name","testnet":false}}' | node dist/index.js
Obtener el ID del clúster por dirección
echo '{"jsonrpc":"2.0","id":1,"method":"get_cluster_id_by_address","params":{"address":"0x123...","testnet":false}}' | node dist/index.js
Agregar billeteras
echo '{"jsonrpc":"2.0","id":1,"method":"add_wallets","params":{"wallets":[{"address":"0x123...","name":"NewWallet","isPrivate":false}],"authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Generar billetera
echo '{"jsonrpc":"2.0","id":1,"method":"generate_wallet","params":{"type":"evm","name":"NewWallet","isPrivate":false,"authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Actualizar billeteras
echo '{"jsonrpc":"2.0","id":1,"method":"update_wallets","params":{"wallets":[{"address":"0x123...","name":"UpdatedName"}],"authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Eliminar carteras
echo '{"jsonrpc":"2.0","id":1,"method":"remove_wallets","params":{"addresses":["0x123..."],"authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Verificar billetera
echo '{"jsonrpc":"2.0","id":1,"method":"verify_wallet","params":{"clusterId":"cluster-id","authKey":"your-auth-key","testnet":false}}' | node dist/index.js
Dirección ↔ Puntos finales de resolución de nombres
Obtener datos por dirección
echo '{"jsonrpc":"2.0","id":1,"method":"get_data_by_address","params":{"address":"0x123...","testnet":false}}' | node dist/index.js
Obtener datos masivos por direcciones
echo '{"jsonrpc":"2.0","id":1,"method":"get_bulk_data_by_addresses","params":{"addresses":["0x123...","0x456..."],"testnet":false}}' | node dist/index.js
Obtener datos masivos por nombres
echo '{"jsonrpc":"2.0","id":1,"method":"get_bulk_data_by_names","params":{"names":[{"name":"name1"}],"testnet":false}}' | node dist/index.js
Puntos finales de registro
Comprobar disponibilidad de nombre
echo '{"jsonrpc":"2.0","id":1,"method":"check_name_availability","params":{"names":["name1","name2"]}}' | node dist/index.js
Obtener datos de la señal de registro
echo '{"jsonrpc":"2.0","id":1,"method":"get_registration_sign_data","params":{"network":"1","sender":"0x123...","names":[{"name":"name1","amountWei":"1000000000000000000"}],"referralClusterId":"optional-id","testnet":false}}' | node dist/index.js
Obtener el estado de la transacción
echo '{"jsonrpc":"2.0","id":1,"method":"get_transaction_status","params":{"txHash":"0x123..."}}' | node dist/index.js
Notas
- Reemplace los valores de marcador de posición (como
0x123...
, your-auth-key
, etc.) con valores reales - El parámetro
testnet
es opcional para la mayoría de los puntos finales - Todas las respuestas tendrán formato JSON-RPC 2.0
- Para los puntos finales autenticados, asegúrese de obtener e incluir una
authKey
válida - El servidor utiliza variables de entorno para la configuración, asegúrese de que su archivo
.env
esté configurado correctamente
Método de prueba alternativo
Para facilitar las pruebas, podrías modificar el servidor para que use el transporte HTTP en lugar de stdio. Esto te permitiría usar comandos curl en lugar de canales de eco. Avísame si quieres cambiar al transporte HTTP.