Make与Claude集成工具

一个用于实现Make平台与Claude Desktop通过MCP协议集成的工具,解决自动化工作流与AI模型的连接问题。

  • by 3rzy
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 3rzy/make-mcp-integration-issue

使用说明

通过 MCP 将 Make 与 Claude 集成的问题

问题描述

我尝试使用模型上下文协议(MCP)在自动化平台Make(以前称为Integromat)和Claude Desktop之间进行集成。尽管有许多方法和修改,但无法建立正确的连接。

已经做了什么

  1. 在Node.js中为Make创建MCP服务器,实现:

    • 使用 API Make
    • 与 Claude Desktop 通信的 WebSocket 协议
    • 支持与MCP使用的格式兼容的JSON-RPC 2.0
    • 管理 Make 场景的各种工具
  2. 尝试不同的配置:

    • 不同的端口 (3000, 3001, 3333, 5555)
    • 不同的通信方式(REST API,WebSocket)
    • 在不同的配置选项 claude_desktop_config.json
    • 自动和手动启动服务器

遇到的问题

  1. 问题z portem - Claude Desktop试图运行自己的服务器实例,导致同一个端口发生冲突:

    Error: listen EADDRINUSE: address already in use :::3001
    
  2. 协议问题 - 尽管在服务器端实现了JSON-RPC 2.0,但Claude显示了一条消息:

    Server disconnected. For troubleshooting guidance, please visit our debugging documentation
    

    我

    Could not attach to MCP server make
    
  3. 协议不兼容 - 日志显示,Claude希望有一种特定的通信格式,如果没有准确的规格,很难重现:

    Message from client: {"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0}
    

屏幕截图

Claude Desktop 连接错误

服务器日志错误

编辑 env 配置

服务器代码

Make 的 MCP 服务器的主要实现:

const express = require('express');
const WebSocket = require('ws');
const http = require('http');
const axios = require('axios');
const dotenv = require('dotenv');

// Załaduj zmienne środowiskowe
dotenv.config();

const PORT = process.env.PORT || 5555;
const MAKE_API_TOKEN = process.env.MAKE_API_TOKEN;

// Utworzenie serwera Express
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });

// Obsługa połączeń WebSocket
wss.on('connection', (ws) => {
  console.log('Nowe połączenie WebSocket nawiązane');
  
  ws.on('message', (message) => {
    try {
      const data = JSON.parse(message);
      console.log('Otrzymano wiadomość:', data);
      
      // Obsługa żądania inicjalizacji
      if (data.method === 'initialize') {
        console.log('Obsługa żądania initialize');
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          result: {
            serverInfo: {
              name: "simple-make-mcp-server",
              version: "1.0.0"
            },
            capabilities: {}
          }
        }));
      }
      // Obsługa listy narzędzi
      else if (data.method === 'tools/list') {
        console.log('Obsługa żądania tools/list');
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          result: {
            tools: [
              {
                name: "list_scenarios",
                description: "Pobiera listę wszystkich scenariuszy w Make"
              },
              {
                name: "run_scenario",
                description: "Uruchamia scenariusz w Make"
              }
            ]
          }
        }));
      }
      // Obsługa błędu nieobsługiwanej metody
      else {
        console.log(`Nieobsługiwana metoda: ${data.method}`);
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          error: {
            code: -32601,
            message: `Metoda '${data.method}' nie jest obsługiwana`
          }
        }));
      }
    } catch (error) {
      console.error('Błąd przetwarzania wiadomości:', error);
    }
  });
  
  ws.on('close', () => {
    console.log('Połączenie WebSocket zamknięte');
  });
});

// Podstawowy endpoint HTTP
app.get('/', (req, res) => {
  res.send('Simple Make MCP Server is running');
});

// Uruchomienie serwera
server.listen(PORT, () => {
  console.log(`Serwer Make MCP nasłuchuje na porcie ${PORT}`);
});

Claude 桌面配置

我在文件中尝试了不同的配置 claude_desktop_config.json包括:

"make": {
  "command": "node",
  "args": ["/Users/krzyk/google-workspace-mcp/make-mcp-server/make-mcp-server.js"],
  "env": {
    "MAKE_API_TOKEN": "[token]",
    "PORT": "3001"
  },
  "url": "ws://localhost:3001",
  "disabled": true
}

更简单的版本:

"make": {
  "disabled": true,
  "url": "ws://localhost:5555"
}

问题和帮助请求

  1. 是否有准确的MCP协议文档可以帮助我们理解预期的通信格式?

  2. 有没有人在创建可与Claude Desktop一起运行的自定义MCP服务器方面有经验?

  3. 是否对WebSocket或JSON-RPC 2.0有任何不明显的特殊要求?

  4. 是否有任何官方工具或库可以帮助创建兼容的 MCP 服务器?

任何提示都将非常有帮助。我暂时切换到尝试使用n8n,它已经准备好了MCP服务器的实现,但我仍然有兴趣为Make解决这个问题。