Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-mcp
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-mcp` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-mcp",
"version": "0.0.12"
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-mcp",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/mcp/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/mcp",
"tsConfig": "packages/pieces/community/mcp/tsconfig.lib.json",
"packageJson": "packages/pieces/community/mcp/package.json",
"main": "packages/pieces/community/mcp/src/index.ts",
"assets": [
"packages/pieces/community/mcp/*.md",
{
"input": "packages/pieces/community/mcp/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/mcp",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,26 @@
{
"MCP": "MCP",
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connect to your hosted MCP Server using any MCP client to communicate with tools",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Response",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "Name",
"Description": "Description",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Verbinden Sie sich mit Ihrem gehosteten MCP Server mit jedem MCP Client um mit Tools zu kommunizieren",
"Reply to MCP Client": "Auf MCP-Client antworten",
"Return a response to the MCP client that called the tool.": "Gibt eine Antwort an den MCP-Client zurück, der das Tool aufgerufen hat.",
"Markdown": "Markdown",
"Mode": "Modus",
"Response": "Antwort",
"Flow Execution": "Flussausführung",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Wichtig**: Stelle sicher, dass dein MCP-Trigger (Warte auf Antwort) aktiviert ist.",
"Choose Simple for key-value or Advanced for JSON.": "Wählen Sie Einfache für den Schlüsselwert oder Erweitert für JSON.",
"Simple": "Einfach",
"Advanced": "Erweitert",
"Stop": "Stoppen",
"Respond and Continue": "Antworten und fortsetzen",
"MCP Tool": "MCP-Werkzeug",
"Creates a tool that MCP clients can call to execute this flow": "Erstellt ein Werkzeug, das MCP-Clients aufrufen können, um diesen Fluss auszuführen",
"Name": "Name",
"Description": "Beschreibung",
"Parameters": "Parameter",
"Wait for Response": "Warte auf Antwort",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Wird verwendet, um dieses Tool von MCP-Clients wie Claude Desktop, Cursor oder Windsurf aufzurufen",
"Used to describe what this tool does and when to use it": "Wird verwendet, um zu beschreiben, was dieses Tool macht und wann es verwendet wird",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Definieren Sie die Eingabeparameter, die dieses Tool akzeptiert. Parameter werden den Benutzern beim Aufruf des Werkzeugs angezeigt.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Lassen Sie den MCP-Client warten, bis er eine Antwort über die MCP-Client-Aktion Antwort erhält"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Conéctate a tu servidor MCP alojado usando cualquier cliente MCP para comunicarte con herramientas",
"Reply to MCP Client": "Responder al cliente MCP",
"Return a response to the MCP client that called the tool.": "Devuelve una respuesta al cliente MCP que llamó la herramienta.",
"Markdown": "Markdown",
"Mode": "Modo",
"Response": "Respuesta",
"Flow Execution": "Ejecutar Flow",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Importante**: Asegúrate de que tu disparador MCP tiene encendido (espere a la respuesta).",
"Choose Simple for key-value or Advanced for JSON.": "Elija Simple para el valor de clave o avanzado para JSON.",
"Simple": "Simple",
"Advanced": "Avanzado",
"Stop": "Parar",
"Respond and Continue": "Respuesta y continuar",
"MCP Tool": "Herramienta MCP",
"Creates a tool that MCP clients can call to execute this flow": "Crea una herramienta que los clientes MCP pueden llamar para ejecutar este flujo",
"Name": "Nombre",
"Description": "Descripción",
"Parameters": "Parámetros",
"Wait for Response": "Espere a la respuesta",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Utilizado para llamar a esta herramienta desde clientes MCP como Claude Desktop, Cursor o Windsurf",
"Used to describe what this tool does and when to use it": "Utilizado para describir lo que hace esta herramienta y cuándo usarla",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define los parámetros de entrada que esta herramienta acepta. Los parámetros se mostrarán a los usuarios al llamar a la herramienta.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Mantenga el cliente MCP esperando hasta que reciba una respuesta a través de la acción de respuesta al cliente MCP"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connectez-vous à votre serveur MCP hébergé en utilisant n'importe quel client MCP pour communiquer avec les outils",
"Reply to MCP Client": "Répondre au client MCP",
"Return a response to the MCP client that called the tool.": "Retourne une réponse au client MCP qui a appelé l'outil.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Réponse",
"Flow Execution": "Exécution en flux",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important **: Assurez-vous que votre trigger MCP a été activé (Attente de réponse).",
"Choose Simple for key-value or Advanced for JSON.": "Choisissez Simple pour la valeur de la clé ou Advanced pour JSON.",
"Simple": "Simple",
"Advanced": "Avancé",
"Stop": "Arrêter",
"Respond and Continue": "Répondre et continuer",
"MCP Tool": "Outil MCP",
"Creates a tool that MCP clients can call to execute this flow": "Crée un outil que les clients MCP peuvent appeler pour exécuter ce flux",
"Name": "Nom",
"Description": "Libellé",
"Parameters": "Paramètres",
"Wait for Response": "Attendre la réponse",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Utilisé pour appeler cet outil de clients MCP comme Claude Desktop, Curseur ou Windsurf",
"Used to describe what this tool does and when to use it": "Utilisé pour décrire ce que cet outil fait et quand l'utiliser",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Définit les paramètres d'entrée que cet outil accepte. Les paramètres seront affichés aux utilisateurs lors de l'appel de l'outil.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Gardez le client MCP en attente jusqu'à ce qu'il reçoive une réponse via l'action Répondre au client MCP"
}

View File

@@ -0,0 +1,26 @@
{
"MCP": "MCP",
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connect to your hosted MCP Server using any MCP client to communicate with tools",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Response",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "Name",
"Description": "Description",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,26 @@
{
"MCP": "MCP",
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connect to your hosted MCP Server using any MCP client to communicate with tools",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Response",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "Name",
"Description": "Description",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "任意の MCP クライアントを使用して、ホストされた MCP サーバーに接続してツールと通信します。",
"Reply to MCP Client": "MCP クライアントに返信",
"Return a response to the MCP client that called the tool.": "ツールを呼び出した MCP クライアントに応答を返します。",
"Markdown": "Markdown",
"Mode": "モード",
"Response": "回答",
"Flow Execution": "フロー実行",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**重要**: MCP トリガーが (Wait for Response) オンになっていることを確認してください。",
"Choose Simple for key-value or Advanced for JSON.": "JSONの場合は「単純」、または「高度」を選択します。",
"Simple": "単純な",
"Advanced": "高度な設定",
"Stop": "停止",
"Respond and Continue": "応答して続ける",
"MCP Tool": "MCP ツール",
"Creates a tool that MCP clients can call to execute this flow": "MCP クライアントがこのフローを実行するために呼び出すことができるツールを作成します",
"Name": "名前",
"Description": "説明",
"Parameters": "パラメータ",
"Wait for Response": "応答待ち",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Claude Desktop、Cursor、Windsurf などの MCP クライアントからこのツールを呼び出すために使用されます。",
"Used to describe what this tool does and when to use it": "このツールが何を行うのか、いつ使用するのかを記述するために使用されます。",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "このツールが受け入れる入力パラメータを定義します。ツールを呼び出すとパラメータがユーザーに表示されます。",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "MCP クライアントアクションで応答を受信するまで、MCP クライアントを待機させます。"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Maak verbinding met uw gehoste MCP-Server met behulp van een MCP-client om te communiceren met tools",
"Reply to MCP Client": "Antwoord op MCP-client",
"Return a response to the MCP client that called the tool.": "Geeft een antwoord aan de MCP-client die de tool noemde.",
"Markdown": "Markdown",
"Mode": "Modus",
"Response": "Antwoord",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Belangrijk**: Zorg ervoor dat uw MCP-trigger (Wacht op reactie) is ingeschakeld.",
"Choose Simple for key-value or Advanced for JSON.": "Kies Simpel voor sleutelwaarde of Geavanceerd voor JSON.",
"Simple": "Eenvoudig",
"Advanced": "Geavanceerd",
"Stop": "Stoppen",
"Respond and Continue": "Reageren en doorgaan",
"MCP Tool": "MCP Functie",
"Creates a tool that MCP clients can call to execute this flow": "Maakt een tool die MCP clients kunnen bellen om deze stroom uit te voeren",
"Name": "Naam",
"Description": "Beschrijving",
"Parameters": "Parameters",
"Wait for Response": "Wacht op reactie",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Gebruikt om deze tool van MCP-cliënten zoals Claude Desktop, Cursor, of Windsurf te bellen",
"Used to describe what this tool does and when to use it": "Wordt gebruikt om te beschrijven wat dit gereedschap doet en wanneer het gebruikt wordt",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Definieer de invoerparameters die deze tool accepteert. Parameters worden getoond aan gebruikers bij het aanroepen van de tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Laat de MCP-client wachten totdat het een antwoord ontvangt via het Antwoord op MCP-client actie"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Conecte-se ao seu servidor MCP hospedado usando qualquer cliente MCP para se comunicar com as ferramentas",
"Reply to MCP Client": "Responder ao Cliente MCP",
"Return a response to the MCP client that called the tool.": "Retorna uma resposta ao cliente MCP que chamou a ferramenta.",
"Markdown": "Markdown",
"Mode": "Modo",
"Response": "Resposta",
"Flow Execution": "Execução de fluxo",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Importante**: Certifique-se de que seu gatilho MCP esteja ativado (Aguarde pela resposta).",
"Choose Simple for key-value or Advanced for JSON.": "Escolha Simples para o valor-chave ou Avançado para JSON.",
"Simple": "Simples",
"Advanced": "Avançado",
"Stop": "Interromper",
"Respond and Continue": "Responder e Continuar",
"MCP Tool": "Ferramenta MCP",
"Creates a tool that MCP clients can call to execute this flow": "Cria uma ferramenta que os clientes MCP podem chamar para executar este fluxo",
"Name": "Nome",
"Description": "Descrição",
"Parameters": "Parâmetros",
"Wait for Response": "Aguarda Resposta",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Usado para chamar essa ferramenta de clientes MCP como Claude Desktop, Cursor ou Windsurf",
"Used to describe what this tool does and when to use it": "Usado para descrever o que esta ferramenta faz e quando usá-la",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Defina os parâmetros de entrada que esta ferramenta aceita. Os parâmetros serão mostrados aos usuários quando chamar a ferramenta.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Manter o cliente MCP em espera até receber uma resposta através da ação de resposta ao cliente MCP"
}

View File

@@ -0,0 +1,26 @@
{
"MCP": "MCP",
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Подключитесь к серверу MCP с помощью любого клиента MCP для общения с инструментами",
"Reply to MCP Client": "Ответить клиенту MCP",
"Return a response to the MCP client that called the tool.": "Возвращает ответ клиенту MCP, который называется инструментом.",
"Markdown": "Markdown",
"Mode": "Режим",
"Response": "Замечание",
"Flow Execution": "Исполнение потока",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Важно**: Убедитесь, что включен триггер MCP (Wait for Response).",
"Choose Simple for key-value or Advanced for JSON.": "Выберите простую для ключевого значения или Расширенные для JSON.",
"Simple": "Простой",
"Advanced": "Расширенные",
"Stop": "Остановить",
"Respond and Continue": "Ответить и продолжить",
"MCP Tool": "MCP Инструмент",
"Creates a tool that MCP clients can call to execute this flow": "Создает инструмент, который клиенты MCP могут звонить, чтобы выполнить этот поток",
"Name": "Наименование",
"Description": "Описание",
"Parameters": "Параметры",
"Wait for Response": "Ожидание ответа",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Используется для вызова этого инструмента от клиентов MCP, таких как Claude Desktop, Cursor или Windsurf",
"Used to describe what this tool does and when to use it": "Используется для описания того, что делает этот инструмент и когда его использовать",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Определите входные параметры, которые принимает этот инструмент. При вызове инструмента пользователям будут показаны параметры.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Держите клиента MCP в ожидании, пока он не получит ответ через ответ на запрос MCP"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connect to your hosted MCP Server using any MCP client to communicate with tools",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Response",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "Name",
"Description": "Description",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,26 @@
{
"MCP": "MCP",
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "Connect to your hosted MCP Server using any MCP client to communicate with tools",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "Response",
"Flow Execution": "Flow Execution",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "Name",
"Description": "Description",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,25 @@
{
"Connect to your hosted MCP Server using any MCP client to communicate with tools": "使用任何 MCP 客户端连接到您托管的 MCP 服务器与工具通信",
"Reply to MCP Client": "Reply to MCP Client",
"Return a response to the MCP client that called the tool.": "Return a response to the MCP client that called the tool.",
"Markdown": "Markdown",
"Mode": "Mode",
"Response": "答复",
"Flow Execution": "流执行",
"**Important**: Make sure your MCP trigger has (Wait for Response) turned on.": "**Important**: Make sure your MCP trigger has (Wait for Response) turned on.",
"Choose Simple for key-value or Advanced for JSON.": "Choose Simple for key-value or Advanced for JSON.",
"Simple": "Simple",
"Advanced": "Advanced",
"Stop": "停止",
"Respond and Continue": "响应并继续",
"MCP Tool": "MCP Tool",
"Creates a tool that MCP clients can call to execute this flow": "Creates a tool that MCP clients can call to execute this flow",
"Name": "名称",
"Description": "描述",
"Parameters": "Parameters",
"Wait for Response": "Wait for Response",
"Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf": "Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf",
"Used to describe what this tool does and when to use it": "Used to describe what this tool does and when to use it",
"Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.": "Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.",
"Keep the MCP client waiting until it receives a response via the Reply to MCP Client action": "Keep the MCP client waiting until it receives a response via the Reply to MCP Client action"
}

View File

@@ -0,0 +1,16 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { replyToMcpClient } from "./lib/actions/reply-to-mcp-client";
import { mcpTool } from "./lib/triggers/mcp-tool";
import { PieceCategory } from "@activepieces/shared";
export const mcp = createPiece({
displayName: "MCP",
auth: PieceAuth.None(),
minimumSupportedRelease: '0.50.2',
logoUrl: "https://cdn.activepieces.com/pieces/mcp.svg",
authors: ['Gamal72', 'hazemadelkhalel'],
description: 'Connect to your hosted MCP Server using any MCP client to communicate with tools',
actions: [replyToMcpClient],
triggers: [mcpTool],
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE,PieceCategory.UNIVERSAL_AI]
});

View File

@@ -0,0 +1,95 @@
import {
DynamicPropsValue,
PieceAuth,
Property,
createAction,
} from '@activepieces/pieces-framework';
import { StopResponse } from '@activepieces/shared';
import { StatusCodes } from 'http-status-codes';
export const replyToMcpClient = createAction({
name: 'reply_to_mcp_client',
displayName: 'Reply to MCP Client',
description: 'Return a response to the MCP client that called the tool.',
props: {
note: Property.MarkDown({
value: '**Important**: Make sure your MCP trigger has (Wait for Response) turned on.'
}),
mode: Property.StaticDropdown({
displayName: 'Mode',
description: 'Choose Simple for key-value or Advanced for JSON.',
required: true,
defaultValue: 'simple',
options: {
disabled: false,
options: [
{
label: 'Simple',
value: 'simple',
},
{
label: 'Advanced',
value: 'advanced',
},
],
},
}),
response: Property.DynamicProperties({
auth: PieceAuth.None(),
displayName: 'Response',
required: true,
refreshers: ['mode'],
props: async (propsValue) => {
const mode = propsValue['mode'] as unknown as string;
const fields: DynamicPropsValue = {};
if (mode === 'simple') {
fields['response'] = Property.Object({
displayName: 'Response',
required: true,
});
} else {
fields['response'] = Property.Json({
displayName: 'Response',
required: true,
});
}
return fields;
},
}),
respond: Property.StaticDropdown({
displayName: 'Flow Execution',
required: false,
defaultValue: 'stop',
options: {
disabled: false,
options: [
{ label: 'Stop', value: 'stop' },
{ label: 'Respond and Continue', value: 'respond' },
],
},
}),
},
async run(context) {
const { response, respond } = context.propsValue;
const stopResponse: StopResponse = {
status: StatusCodes.OK,
headers: {},
body: response
};
if (respond === 'respond') {
context.run.respond({
response: stopResponse,
});
} else {
context.run.stop({
response: stopResponse,
});
}
return stopResponse;
},
});

View File

@@ -0,0 +1,84 @@
import {
createTrigger,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { McpPropertyType } from '@activepieces/shared';
export const mcpTool = createTrigger({
name: 'mcp_tool',
displayName: 'MCP Tool',
description: 'Creates a tool that MCP clients can call to execute this flow',
props: {
toolName: Property.ShortText({
displayName: 'Name',
description: 'Used to call this tool from MCP clients like Claude Desktop, Cursor, or Windsurf',
required: true,
}),
toolDescription: Property.LongText({
displayName: 'Description',
description: 'Used to describe what this tool does and when to use it',
required: true,
}),
inputSchema: Property.Array({
displayName: 'Parameters',
description: 'Define the input parameters that this tool accepts. Parameters will be shown to users when calling the tool.',
required: false,
defaultValue: [
{
name: '',
type: McpPropertyType.TEXT,
required: true,
description: '',
},
],
properties: {
name: Property.ShortText({
displayName: 'Name',
required: true,
}),
description: Property.LongText({
displayName: 'Description',
required: false,
}),
type: Property.StaticDropdown({
displayName: 'Type',
required: true,
defaultValue: McpPropertyType.TEXT,
options: {
options: Object.values(McpPropertyType).map((type) => ({
value: type,
label: type,
})),
},
}),
required: Property.Checkbox({
displayName: 'Required',
required: true,
defaultValue: true,
}),
},
}),
returnsResponse: Property.Checkbox({
displayName: 'Wait for Response',
description: 'Keep the MCP client waiting until it receives a response via the Reply to MCP Client action',
defaultValue: false,
required: true,
}),
},
type: TriggerStrategy.WEBHOOK,
sampleData: null,
async onEnable() {
// ignore
},
async onDisable() {
// ignore
},
async run(context) {
return [context.payload];
},
async test() {
return [{}];
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}