Futarchy MCP

Interactúa con el protocolo Futarchy en la blockchain de Solana.

Documentación

Futarchy MCP

Una implementación de servidor para interactuar con el protocolo Futarchy en Solana.

Instrucciones de Configuración

  1. Clona el repositorio:
git clone <repository-url>
cd futarchy-mcp
  1. Instala las dependencias:
npm install
  1. Configura la URL de RPC:

    • Abre src/server.ts
    • Actualiza la URL de RPC en la inicialización de la conexión:
    const connection = new Connection('YOUR_RPC_URL_HERE');
    
    • Puedes usar:
      • Mainnet: https://api.mainnet-beta.solana.com
      • Devnet: https://api.devnet.solana.com
      • O la URL de tu propio proveedor de RPC (solo funciona con esta)
  2. Inicia el servidor de desarrollo:

npm run dev

Rutas Disponibles

Rutas de DAO

  • GET /daos - Obtener todos los DAOs
  • GET /daos/:id - Obtener un DAO específico por ID
  • GET /daos/:id/proposals - Obtener todas las propuestas para un DAO específico
  • POST /daos/:id/proposals - Crear una nueva propuesta para un DAO (no probado por ahora porque la ruta de creación de DAO no existe)
    • Cuerpo:
      {
        "descriptionUrl": "string",
        "baseTokensToLP": "number",
        "quoteTokensToLP": "number"
      }
      

Rutas de Propuestas

  • GET /proposals/:id - Obtener una propuesta específica por ID

Pruebas

Puedes probar las rutas usando herramientas como Postman o curl. El servidor se ejecuta en el puerto 9000 por defecto.

Ejemplos de comandos curl:

# Get all DAOs
curl http://localhost:9000/daos

# Get a specific DAO
curl http://localhost:9000/daos/<dao-address>

# Get proposals for a DAO
curl http://localhost:9000/daos/<dao-address>/proposals

# Create a new proposal
curl -X POST http://localhost:9000/daos/<dao-address>/proposals \
  -H "Content-Type: application/json" \
  -d '{
    "descriptionUrl": "https://example.com/proposal",
    "baseTokensToLP": 1000,
    "quoteTokensToLP": 1000
  }'

Servidor MCP para Cursor

Este proyecto también incluye un servidor MCP (Model Context Protocol) que permite a Cursor interactuar con el backend de Futarchy a través de herramientas personalizadas.

Configuración del Servidor MCP

  1. Ejecuta el script de configuración para instalar dependencias, compilar el proyecto y configurar Cursor:
chmod +x setup.sh
./setup.sh
  1. O configúralo manualmente:
    • Instala las dependencias y compila el proyecto:
    npm install
    npm run build
    
    • Abre o crea ~/.cursor/mcp.json
    • Agrega la siguiente configuración (ajusta la ruta según sea necesario):
    {
      "mcpServers": {
        "futarchy-routes": {
          "command": "node",
          "args": ["<absolute-path-to-project>/dist/mcp/bin/mcp-futarchy.js"]
        }
      }
    }
    

Uso del Servidor MCP en Cursor

Puedes usar las siguientes herramientas en el chat de Cursor:

  1. getDaos - Obtener todos los DAOs del sistema Futarchy
  2. getDao - Obtener un DAO específico por ID
  3. getProposals - Obtener todas las propuestas para un DAO específico
  4. getProposal - Obtener una propuesta específica por ID
  5. createProposal - Crear una nueva propuesta para un DAO

Por ejemplo, en el chat de Cursor, puedes decir:

Use the getDaos tool to retrieve a list of all DAOs from the futarchy-routes backend.

Para más detalles sobre el servidor MCP, consulta src/mcp/README.md.

Función de Análisis de Sentimiento

El Servidor MCP de Futarchy ahora incluye una herramienta de análisis de sentimiento que analiza el sentimiento de datos de Discord y Twitter para propuestas específicas. Esta función ayuda a comprender el sentimiento de la comunidad sobre las propuestas y puede usarse para tomar decisiones más informadas.

Cómo Funciona

  1. La herramienta de análisis de sentimiento recopila datos de Discord y Twitter sobre una propuesta específica.
  2. Analiza el sentimiento utilizando técnicas de procesamiento de lenguaje natural.
  3. Categoriza el sentimiento en diferentes categorías (Tokenomics, Parámetros del Protocolo, etc.).
  4. Genera un resumen, puntos clave y preocupaciones basados en el análisis.
  5. Los resultados se presentan en un formato estructurado que puede ser consumido fácilmente por los frontends.

Ejemplo de Respuesta

{
  "proposalId": "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC",
  "sentimentScore": -0.8,
  "primaryCategory": "Tokenomics",
  "categories": [
    {
      "name": "Tokenomics",
      "score": 0.4
    },
    {
      "name": "Protocol Upgrades",
      "score": 0.3
    },
    {
      "name": "Partnerships Integrations",
      "score": 0.2
    },
    {
      "name": "Protocol Parameters",
      "score": 0.1
    }
  ],
  "summary": "The proposal to launch a new Horizon token for the Aave ecosystem has faced significant backlash from the community...",
  "keyPoints": [
    "The proposed token launch is seen as unnecessary and potentially harmful to the Aave token and community.",
    "The revenue-sharing model is perceived as frontloaded and unfair, favoring early years when adoption and revenue may be low.",
    "There is a desire to maintain the Aave token as the primary governance and utility token for the ecosystem."
  ],
  "concerns": [
    "Dilution of the Aave token's value and attention.",
    "Misalignment of incentives with the proposed revenue-sharing model.",
    "Creation of a separate entity that could compete with the Aave ecosystem.",
    "Lack of transparency and community involvement in the decision-making process."
  ],
  "sources": {
    "discord": true,
    "twitter": true
  }
}

Cómo Usarlo

Puedes usar la herramienta de análisis de sentimiento en tu servidor MCP de la siguiente manera:

const result = await mcp_futarchy_routes_getProposalSentiment({
  proposalId: "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC"
});

Esto devolverá el análisis de sentimiento para la propuesta especificada.