Skip to main content
Glama

Activepieces MCP Server

by eldoonreval
handshake-handler.tsβ€’2.97 kB
import { UserInteractionJobType } from '@activepieces/server-shared' import { EngineResponseStatus, FlowId, FlowVersionId, isNil, ProjectId, TriggerHookType, TriggerPayload, WebhookHandshakeConfiguration, WebhookHandshakeStrategy } from '@activepieces/shared' import { FastifyBaseLogger } from 'fastify' import { EngineHelperResponse, EngineHelperTriggerResult } from 'server-worker' import { flowVersionService } from '../flows/flow-version/flow-version.service' import { userInteractionWatcher } from '../workers/user-interaction-watcher' export const handshakeHandler = { async handleHandshakeRequest(params: HandleHandshakeRequestParams): Promise<WebhookHandshakeResponse | null> { const { payload, handshakeConfiguration } = params if (!isHandshakeRequest({ payload, handshakeConfiguration })) { return null } const flowVersion = await flowVersionService(params.log).getFlowVersionOrThrow({ flowId: params.flowId, versionId: params.flowVersionId, }) const engineHelperResponse = await userInteractionWatcher(params.log).submitAndWaitForResponse<EngineHelperResponse<EngineHelperTriggerResult<TriggerHookType.HANDSHAKE>>>({ jobType: UserInteractionJobType.EXECUTE_TRIGGER_HOOK, hookType: TriggerHookType.HANDSHAKE, flowVersion, projectId: params.projectId, test: false, triggerPayload: payload, }) if (engineHelperResponse.status !== EngineResponseStatus.OK) { return null } return engineHelperResponse.result?.response ?? null }, } function isHandshakeRequest(params: IsHandshakeRequestParams): boolean { const { payload, handshakeConfiguration } = params if (isNil(handshakeConfiguration) || isNil(handshakeConfiguration.strategy) || isNil(handshakeConfiguration.paramName)) { return false } const { strategy, paramName } = handshakeConfiguration switch (strategy) { case WebhookHandshakeStrategy.HEADER_PRESENT: return paramName.toLowerCase() in payload.headers case WebhookHandshakeStrategy.QUERY_PRESENT: return paramName in payload.queryParams case WebhookHandshakeStrategy.BODY_PARAM_PRESENT: return typeof payload.body === 'object' && payload.body !== null && paramName in payload.body default: return false } } type WebhookHandshakeResponse = { status: number body?: unknown headers?: Record<string, string> } type HandleHandshakeRequestParams = { payload: TriggerPayload log: FastifyBaseLogger flowId: FlowId flowVersionId: FlowVersionId projectId: ProjectId handshakeConfiguration: WebhookHandshakeConfiguration | null } type IsHandshakeRequestParams = { payload: TriggerPayload handshakeConfiguration: WebhookHandshakeConfiguration | null }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eldoonreval/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server