Nodes2Cloud MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| N2C_API_KEY | No | Personal Access Token. Without it, the server runs in preview mode: it lists its tools, prompts and resource templates from the public server card, and every tool call returns setup instructions instead of doing anything. | |
| N2C_MCP_ENDPOINT | No | Remote endpoint. Default https://api.nodes2cloud.com/mcp. | https://api.nodes2cloud.com/mcp |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_workflowsA | List the workflows this connection can access, personal and shared through a workspace, most recently updated first. Each entry has its id, name, status and live URL if deployed. Start here to find a workflowId. If the owner restricted this connection to certain workflows, only those are listed and every other id is refused. |
| get_workflowA | Get one workflow's editable graph (nodes, edges, settings) and metadata, including the |
| create_workflowA | Create a new, undeployed workflow, optionally with an initial graph. Look up node types with list_node_types and get_node_schemas first rather than guessing property names. Returns the saved workflow, including its id and |
| update_workflowA | Replace a workflow's saved draft: any of name, nodes and edges you pass overwrite the stored ones whole (send the complete node and edge lists, not a patch). Requires the |
| validate_workflowA | Compile a workflow without deploying it and report every error, each with the node it concerns. Use it after every edit and before deploy_workflow. Checks the saved graph by workflowId, or an unsaved graph passed as nodes and edges (given with a workflowId, they replace the saved ones for this check only). Set includeCode to also get the generated Worker script and its metadata (target, bindings, size) to show the user. |
| deploy_workflowA | Deploy a saved workflow to the user's own Cloudflare account, replacing any live version. The server recompiles the saved graph itself; no code you send is ever deployed. Save and validate first, and call check_setup early so missing connections are fixed in time. Unless the owner allowed this connection to deploy without asking, the call waits up to 90 seconds for the owner to approve it in an open Nodes2Cloud browser tab: tell the user to approve it there. Some protected connections need an extra approval each. Editing the workflow while approval is pending cancels the deploy. If a needed service is not connected and your client supports URL elicitation, you get |
| archive_workflowA | Archive a workflow: it leaves the active list and can no longer be edited or deployed until the owner restores it in the Nodes2Cloud editor. Nothing is permanently deleted, and a version already deployed keeps running in the user's Cloudflare account. Only use this when the user asks to remove a workflow. Archiving twice is harmless. |
| list_connectionsA | List the services the user has connected (Slack, Google, Stripe and so on), with each connection's id, provider, name, kind and status. Metadata only: no secret or token is ever returned. Put a connection's id in a node's credential field when building a workflow. To see only what one workflow still needs, use check_setup instead. |
| list_node_typesA | Search the catalogue of node types a workflow can use: triggers (webhook, schedule, email, agent tool), logic (if, switch, loop, wait, code) and integrations with third-party services. Returns each type's id, display name, description, category and group, without property schemas to keep it small. Filter with |
| get_node_schemasA | Get the full property schema of one or more node types: every property's key, type, options, default and whether it is required, plus input and output ports. Use it before writing a node's |
| test_run_nodeA | Run one saved node on its own, for real, to check its configuration and connection, the way the editor's test button does. It makes the node's actual call to the third-party service, so a 'send' node really sends. With no upstream run, |
| check_setupA | Check whether the user can deploy right now and what is missing: whether Cloudflare is connected (including the one-time workers.dev subdomain step, which otherwise only fails after a deploy) and, given a workflowId, which services its nodes need that are not connected yet ( |
| request_connectionsA | Create one short link the user opens to connect the services you name, with one button per service. Use the ids from check_setup's |
| run_workflowA | Run a deployed workflow once, for real, with an optional JSON payload as its trigger input, and return what happened. A simple workflow answers with its HTTP status, duration and response body. A durable one (with a wait, delay, approval or sub-workflow) starts a run and returns its instanceId and status: follow it with get_run. Use it after deploying to show the user a real result. It runs in the user's Cloudflare account against their real services, so it has real effects, and Nodes2Cloud stores nothing about it. Counts toward this connection's daily limit on workflow calls. |
| list_runsA | List a deployed workflow's recent runs, newest first, read on demand from the user's own Cloudflare account. |
| get_runA | Get one run's details. Pass |
| control_runA | Act on one in-flight durable run: |
| get_deployment_statusA | Answer 'is this deployed workflow healthy, and is it still what we deployed?' in one call. |
| get_deployment_logsA | Read the raw log lines and uncaught exceptions a deployed workflow produced in the user's Cloudflare account, newest first. Use it when a run failed without explanation, or get_deployment_status shows errors you need to see. |
| list_workflow_versionsA | List one workflow's deployed versions, newest first, marking which one is live now. Every deploy creates a version. Use the version numbers with get_workflow (to read or compare a version's graph) and rollback_workflow (to make an earlier one live again). |
| rollback_workflowA | Make an earlier deployed version of a workflow live again in the user's Cloudflare account, replacing what is running now. Get version numbers from list_workflow_versions. Only do this when the user asks. Refused if the owner turned off deploys for this connection. For a durable workflow, the answer warns about runs the outgoing version left in flight. Set restoreDraft to also load that version back as the editable draft. |
| list_workflow_filesA | List the files a deployed workflow's runs have stored in its own storage bucket in the user's Cloudflare account, with each file's key, size and last-modified time. |
| verify_connectionA | Check a saved connection against its provider right now (a read-only identity call) and record the result. Use it when a node fails with what looks like an authentication error: access that worked when it was saved may since have been revoked or narrowed. Returns the connection's metadata with its new status, never the secret. Some providers cannot be checked on their own, and neither can a connection under the owner's extra passkey protection; both answer |
| rotate_webhook_secretA | Generate a new secret for a deployed workflow's webhook trigger, redeploy it, and return the new secret. This immediately breaks anything still calling the webhook with the old secret, so only do it when the user asks or needs the secret to call the webhook themselves. The new secret takes a few seconds to go live: treat a single 401 right afterwards as propagation delay, wait and retry, and do not rotate again. Refused if the owner turned off deploys for this connection. |
| get_planA | Read the user's plan and its limits: how many workflows may be saved and live at once, how many deployed workflows can be offered to agents as tools, and which features are included. Also lists each shared workspace's own limits, since a workflow's limits come from its owner's plan. Check this before telling the user something is impossible: a refusal is often a plan limit, not a bug. |
| get_dynamic_optionsA | Ask a connected service which values really exist, such as a spreadsheet's tab names, an Airtable base's tables and typed fields, a Typeform's questions or a Google account's calendars. Use it while configuring a node instead of guessing a name: a guessed tab or field deploys fine and only fails later on the user's real data. Read-only. Returns |
| call_deployed_workflowA | Call one of the user's deployed agent-tool workflows (those with an MCP Tool trigger) by its tool name or workflow id, with the arguments its schema declares. Use it when the workflow is not in your tool list: one deployed since you connected only appears there after you reconnect, but is callable here at once. It runs for real in the user's Cloudflare account and counts toward this connection's daily limit on workflow calls. list_deployed_tools shows what is callable and the arguments each takes. |
| list_deployed_toolsA | List the user's deployed workflows that agents can call as tools right now (those deployed with an MCP Tool trigger), each with its tool name, description and argument schema. Use it to find a workflow deployed after you connected, then call it with call_deployed_workflow. If the plan's limit hides some, the answer says how many. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| webhook-to-slack | Receive a webhook and post a formatted message to a Slack channel. |
| scheduled-report | On a schedule, fetch data from an API and email or post a summary. |
| email-to-sheet | When an email arrives, extract fields and append a row to Google Sheets. |
| agent-callable-tool | Build a workflow exposed as an MCP tool, so you can call it yourself afterwards. |
| approve-before-acting | A workflow that pauses for a human decision before doing anything risky. |
| sync-two-apps | Poll or receive from one service and mirror records into another. |
| ai-classify-and-route | Use a model to categorise an incoming item and branch on the result. |
| file-processing | Accept a file, transform it, and store or forward the result. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 28 tools
Most tools target a clearly distinct resource and action, and the descriptions explicitly separate similar areas such as deployment health vs. logs vs. run history. A few pairs could still be confused at a glance, notably run_workflow vs. call_deployed_workflow and list_workflows vs. list_deployed_tools, but the descriptions resolve them.
All 28 tools follow a consistent snake_case verb_noun pattern (list_, get_, create_, update_, deploy_, check_, etc.). Compound nouns like rotate_webhook_secret and get_deployment_status are still predictable and readable.
At 28 tools this is heavy for an agent-facing set and exceeds the typical comfortable range. The domain is genuinely broad—workflow authoring, deployment, monitoring, connections, and agent tools—so most tools earn their place, but some monitoring/run tools could likely be consolidated.
Coverage is strong: workflow CRUD, validation, deploy, versioning/rollback, run execution and control, logs/status, node schemas, setup/connections, file listing, webhook secret rotation, and deployed-tool discovery/calling. The main gap is that archiving is a dead end within MCP—there is no restore/unarchive or delete operation, requiring the user to go to the editor.