Make MCP Server

Make MCP Server

一个集成服务器,允许 Claude Desktop 通过模型上下文协议与 Make(前身为 Integromat)自动化平台进行通信,从而可以通过自然语言实现场景管理和执行。

开发者工具
操作系统自动化
访问服务器

README

Make 与 Claude 通过 MCP 集成的问题

问题描述

我尝试在自动化平台 Make (前身为 Integromat) 和 Claude Desktop 之间通过 MCP (模型上下文协议) 创建集成。尽管尝试了多种方法和修改,但未能建立正确的连接。

已完成的工作

  1. 从头开始在 Node.js 中为 Make 创建 MCP 服务器,实现以下功能:

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

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

遇到的问题

  1. 端口问题 - 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 中的连接错误

Claude Desktop 中的连接错误

服务器日志中的错误

服务器日志中的错误

编辑 env 配置

编辑 env 配置

服务器代码

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

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

// 加载环境变量
dotenv.config();

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

// 创建 Express 服务器
const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });

// 处理 WebSocket 连接
wss.on('connection', (ws) => {
  console.log('新的 WebSocket 连接已建立');
  
  ws.on('message', (message) => {
    try {
      const data = JSON.parse(message);
      console.log('收到消息:', data);
      
      // 处理初始化请求
      if (data.method === 'initialize') {
        console.log('处理 initialize 请求');
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          result: {
            serverInfo: {
              name: "simple-make-mcp-server",
              version: "1.0.0"
            },
            capabilities: {}
          }
        }));
      }
      // 处理工具列表
      else if (data.method === 'tools/list') {
        console.log('处理 tools/list 请求');
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          result: {
            tools: [
              {
                name: "list_scenarios",
                description: "获取 Make 中所有场景的列表"
              },
              {
                name: "run_scenario",
                description: "在 Make 中运行场景"
              }
            ]
          }
        }));
      }
      // 处理未支持的方法错误
      else {
        console.log(`未支持的方法: ${data.method}`);
        ws.send(JSON.stringify({
          jsonrpc: "2.0",
          id: data.id,
          error: {
            code: -32601,
            message: `方法 '${data.method}' 不被支持`
          }
        }));
      }
    } catch (error) {
      console.error('处理消息时出错:', error);
    }
  });
  
  ws.on('close', () => {
    console.log('WebSocket 连接已关闭');
  });
});

// 基本 HTTP 端点
app.get('/', (req, res) => {
  res.send('Simple Make MCP Server is running');
});

// 启动服务器
server.listen(PORT, () => {
  console.log(`Make MCP 服务器正在监听端口 ${PORT}`);
});

Claude Desktop 配置

我尝试了 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 的这个问题。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript