Futarchy MCP

Interaja com o protocolo Futarchy na blockchain Solana.

Documentação

Futarchy MCP

Uma implementação de servidor para interagir com o protocolo Futarchy na Solana.

Instruções de Configuração

  1. Clone o repositório:
git clone <repository-url>
cd futarchy-mcp
  1. Instale as dependências:
npm install
  1. Configure a URL do RPC:

    • Abra src/server.ts
    • Atualize a URL do RPC na inicialização da conexão:
    const connection = new Connection('YOUR_RPC_URL_HERE');
    
    • Você pode usar:
      • Mainnet: https://api.mainnet-beta.solana.com
      • Devnet: https://api.devnet.solana.com
      • Ou a URL do seu próprio provedor de RPC (funciona apenas com esta)
  2. Inicie o servidor de desenvolvimento:

npm run dev

Rotas Disponíveis

Rotas de DAO

  • GET /daos - Obter todos os DAOs
  • GET /daos/:id - Obter um DAO específico por ID
  • GET /daos/:id/proposals - Obter todas as propostas de um DAO específico
  • POST /daos/:id/proposals - Criar uma nova proposta para um DAO (não testado por enquanto, pois a rota de criação de DAO não existe)
    • Corpo:
      {
        "descriptionUrl": "string",
        "baseTokensToLP": "number",
        "quoteTokensToLP": "number"
      }
      

Rotas de Proposta

  • GET /proposals/:id - Obter uma proposta específica por ID

Testes

Você pode testar as rotas usando ferramentas como Postman ou curl. O servidor roda na porta 9000 por padrão.

Exemplos 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 projeto também inclui um servidor MCP (Model Context Protocol) que permite ao Cursor interagir com o backend do Futarchy por meio de ferramentas personalizadas.

Configurando o Servidor MCP

  1. Execute o script de configuração para instalar as dependências, compilar o projeto e configurar o Cursor:
chmod +x setup.sh
./setup.sh
  1. Ou configure manualmente:
    • Instale as dependências e compile o projeto:
    npm install
    npm run build
    
    • Abra ou crie ~/.cursor/mcp.json
    • Adicione a seguinte configuração (ajuste o caminho conforme necessário):
    {
      "mcpServers": {
        "futarchy-routes": {
          "command": "node",
          "args": ["<absolute-path-to-project>/dist/mcp/bin/mcp-futarchy.js"]
        }
      }
    }
    

Usando o Servidor MCP no Cursor

Você pode usar as seguintes ferramentas no chat do Cursor:

  1. getDaos - Obter todos os DAOs do sistema Futarchy
  2. getDao - Obter um DAO específico por ID
  3. getProposals - Obter todas as propostas de um DAO específico
  4. getProposal - Obter uma proposta específica por ID
  5. createProposal - Criar uma nova proposta para um DAO

Por exemplo, no chat do Cursor, você pode dizer:

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

Para mais detalhes sobre o servidor MCP, consulte src/mcp/README.md.

Recurso de Análise de Sentimento

O Servidor Futarchy MCP agora inclui uma ferramenta de análise de sentimento que analisa o sentimento de dados do Discord e Twitter para propostas específicas. Este recurso ajuda a entender o sentimento da comunidade sobre propostas e pode ser usado para tomar decisões mais informadas.

Como Funciona

  1. A ferramenta de análise de sentimento coleta dados do Discord e Twitter sobre uma proposta específica.
  2. Ela analisa o sentimento usando técnicas de processamento de linguagem natural.
  3. Ela categoriza o sentimento em diferentes categorias (Tokenomics, Parâmetros do Protocolo, etc.).
  4. Ela gera um resumo, pontos-chave e preocupações com base na análise.
  5. Os resultados são apresentados em um formato estruturado que pode ser facilmente consumido por frontends.

Exemplo de Resposta

{
  "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
  }
}

Como Usar

Você pode usar a ferramenta de análise de sentimento no seu servidor MCP da seguinte forma:

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

Isso retornará a análise de sentimento para a proposta especificada.