Nodes2Cloud

com.nodes2cloud由 nodes2cloud.com 發布官方發布者v1.2.0更新於 Oct 28, 2026

Build, validate and deploy workflows as Cloudflare Workers in your own account, with approval.

已驗證Streamable HTTP可網頁執行效率與工作流雲端與基礎設施開發者工具

概覽

AI 產生的概覽

在使用者自己的 Cloudflare 帳戶中建立、驗證、部署並執行 Nodes2Cloud 自動化工作流程,部署預設需核准。

可以做什麼
  • 撰寫工作流程:搜尋節點類型、讀取精確的節點 schema,建立、更新、驗證與封存工作流程圖
  • 檢查與設定:查看部署還缺什麼,產生一個連結讓使用者連接缺少的服務,驗證已儲存的連線
  • 部署與版本:部署到使用者的 Cloudflare 帳戶,列出版本、讀取某版本的工作流程圖、回復舊版
  • 執行與觀測:執行已部署工作流程,列出並檢視執行紀錄,暫停、繼續、終止持久化執行或向其送出事件,讀取狀態與日誌
  • 把工作流程當工具:列出並呼叫以 MCP Tool 觸發器部署的工作流程
  • 檢視方案限制,並從已連線服務取得實際可選值
適用情境
適合讓編碼助理組裝、驗證並上線自動化工作流程,而不必手寫 Cloudflare Worker 程式碼,並在之後執行與排查問題。也適合希望把已部署工作流程當作助理工具呼叫的團隊。
執行需求
需要 Nodes2Cloud 帳戶。可使用遠端端點並以 OAuth 登入,或在本地以 npx 執行 npm 套件 n2c-mcp,並在 N2C_API_KEY 提供個人存取權杖(沒有權杖時只能列出工具)。部署需要已連線的 Cloudflare 帳戶;N2C_MCP_ENDPOINT 可覆寫預設端點。
安裝前請注意
部署、回復舊版、執行控制、封存與輪換 webhook 密鑰都會改變線上系統;部署預設需所有者在瀏覽器中核准,也可依連線關閉或限制。寫入用戶端設定的權杖以明文保存,建議優先使用 OAuth 或最小權限權杖,不用時撤銷。切勿把密鑰貼進對話,應使用連線連結。已部署工作流程會用你的憑證從你的 Cloudflare 帳戶呼叫第三方服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Nodes2Cloud,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.nodes2cloud%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "nodes2cloud": {
      "type": "http",
      "url": "https://api.nodes2cloud.com/mcp"
    }
  }
}

README

Nodes2Cloud MCP server

[Nodes2Cloud MCP connector – tool definition quality and endpoint health on Glama]

Nodes2Cloud lets coding agents (Claude Code, Cursor, VS Code, Windsurf, Zed and other MCP clients) build automation workflows, validate them, and deploy them as Cloudflare Workers in your own Cloudflare account. The server recompiles every deploy itself, and by default each agent deploy waits for you to approve it in the browser.

This package, n2c-mcp, is the stdio entry point: a small local process that forwards MCP messages over HTTPS to the hosted server. It has no runtime dependencies. If your client supports remote MCP servers, you don't need it at all.

Connect

Recommended: remote server with OAuth

No token to copy. The first connection opens a consent screen in your browser that lists what the agent may do.

bash
claude mcp add --transport http nodes2cloud https://api.nodes2cloud.com/mcp

Cursor (.cursor/mcp.json) and Claude Desktop:

json
{ "mcpServers": { "nodes2cloud": { "url": "https://api.nodes2cloud.com/mcp" } } }

VS Code (.vscode/mcp.json):

json
{ "servers": { "nodes2cloud": { "type": "http", "url": "https://api.nodes2cloud.com/mcp" } } }

The installer

bash
npx -y n2c-mcp@latest install                    # pick a client from a menunpx -y n2c-mcp@latest install --client kiro      # or name itnpx -y n2c-mcp@latest install --list             # every client id

For clients that can sign in through the browser (Kiro, Cursor, VS Code, Antigravity, Zed, Codex, OpenCode and more), the installer writes the remote server's URL into the client's config file and asks for no token: approve the sign-in when the client connects. Pass --key <PAT> to use a Personal Access Token instead. Clients that are set up with their own command (Claude Code, Devin, Gemini CLI…) or in an app's settings (Claude, ChatGPT…) get their exact steps printed instead.

FlagMeaning
--client, -cClient id or alias, e.g. kiro, cursor, vscode, codex, claude-code. See --list. The numbers 1–11 from earlier versions still work.
--listList the client ids, and which ones get a config file written vs. printed steps
--key, --tokenPersonal Access Token. Falls back to N2C_API_KEY, then a prompt that doesn't echo. Prefer those two: a token on the command line stays in your shell history. Without one, clients that support OAuth sign in through the browser.
--envproduction (default), staging or local
--endpointA custom MCP endpoint URL
--scopeuser or project: which config file to write. Default: the user file if the client has one, else the project's.
--allow-project-tokenWrite a token into a project config file that git doesn't ignore. Refused by default, since that file could be committed.
--print, --dry-runPrint the setup steps without writing any file

The installer merges into an existing config file and keeps your other servers. When it writes a token, the file is restricted to your user.

stdio clients and CI: this package with a Personal Access Token

  1. In Nodes2Cloud, open Integrations → MCP server → Headless & CI Tokens and create a token (n2c_pat_…). It is shown once.

  2. Run the installer, e.g. npx -y n2c-mcp@latest install --client claude for Claude Desktop (its config file only runs local servers), and paste the token at the prompt (or set N2C_API_KEY first). Or configure a client by hand:

    json
    {  "mcpServers": {    "nodes2cloud": {      "command": "npx",      "args": ["-y", "n2c-mcp"],      "env": { "N2C_API_KEY": "<YOUR_N2C_PERSONAL_ACCESS_TOKEN>" }    }  }}

With a token, the installer writes it into the client's config file in plain text and restricts the file to your user. It won't write a token into a project file that git would commit: add the file to .gitignore, use --scope user, or sign in with OAuth instead. Revoke the token from the same screen when you no longer need it, and create it with the narrowest access that works (e.g. Read only). --client 11 prints the generic stdio entry above with your token filled in.

Environment

Variable
N2C_API_KEYPersonal 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_ENDPOINTRemote endpoint, https:// only (http:// only for localhost). Default https://api.nodes2cloud.com/mcp.

npx -y n2c-mcp --help and --version are also available.

What an agent can do

The server provides 28 tools, plus one tool per workflow you deploy with an MCP Tool trigger:

  • Author: search the node catalogue and read exact node schemas; create, update, validate (optionally returning the compiled Worker code) and archive workflows.
  • Set up: check what a deploy still needs, send you one link to connect missing services (agents never handle your secrets), and verify a saved connection.
  • Deploy: deploy, list versions, read any version's graph, and roll back. Each deploy is recompiled on the server from the saved graph.
  • Run and observe: run a deployed workflow; list and inspect runs; pause, resume, terminate or send an event to a durable run; read deployment status (telemetry, Cloudflare's own invocation counts, drift) and logs.
  • Use your workflows as tools: call any workflow you deployed with an MCP Tool trigger.

The full list, with every argument schema, is in the docs and the server card.

Security

  • No deploy bypass. Agents can only send workflow graph JSON. Every deploy recompiles that saved graph on the server, exactly like the editor's Deploy button.
  • Approval by default. Unless you choose otherwise on the Connected agents screen, each agent deploy waits for you to approve it in an open Nodes2Cloud tab. You can also turn deploys off for a connection, limit it to specific workflows, and set daily limits.
  • Scoped access. OAuth connections get only the permissions you approve. A Personal Access Token carries your account's default agent policy.
  • Secrets stay put. Credentials are encrypted at rest and deployed as Worker secrets in your Cloudflare account. No tool returns a secret.
  • This package forwards messages and nothing else. It sends your token only to the endpoint you configure (HTTPS by default) and never writes to disk, except when you run install.

Report a vulnerability to [email protected]. See SECURITY.md where available.

Privacy Policy

The full policy is at https://nodes2cloud.com/privacy. In short, for this MCP server:

  • Data collected. Your account identity, the workflow graphs and names agents create, and which tool was called, when, how long it took, its result code and the client's self-reported name. Tool arguments and results are not logged.
  • Use and storage. Workflow graphs and versions are stored to provide the service. Run data and logs from your deployed workflows stay in your Cloudflare account and are read on demand, not stored by Nodes2Cloud.
  • Third-party sharing. Deployed workflows call the services you connect, using your credentials, from your Cloudflare account. Nodes2Cloud's sub-processors are listed at https://nodes2cloud.com/sub-processors.
  • Retention. Account data is kept while your account is active and deleted when you delete the account, as described in the policy.
  • Contact. [email protected].

This package itself collects nothing. It sends a User-Agent of n2c-mcp/<version> with each request.

Support

[email protected] · Issues

License

Apache License 2.0

來源:README.md,提交 1ff8aa6

工具

28

list_workflows

List workflows

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_workflow

Get workflow

Get one workflow's editable graph (nodes, edges, settings) and metadata, including the `updatedAt` value update_workflow requires. Pass `versionNumber` to instead get that deployed version's frozen graph together with the version before it (`previousVersion`, null for version 1), so you can see what changed; list_workflow_versions gives the numbers.

輸入參數workflowId必填versionNumber

create_workflow

Create workflow

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 `updatedAt`. Nothing runs or deploys until deploy_workflow. Refused when the plan's workflow limit is reached or this connection is restricted to existing workflows.

輸入參數name必填edgesnodes

update_workflow

Update workflow

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 `updatedAt` from your last get_workflow or create_workflow; if someone edited it since, this returns `conflict` and changes nothing, so re-read and retry. Does not touch what is deployed. Returns the saved workflow with its new `updatedAt`.

輸入參數nameedgesnodesupdatedAt必填workflowId必填

validate_workflow

Validate workflow

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.

輸入參數edgesnodesworkflowIdincludeCode

deploy_workflow

Deploy workflow

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 `input_required` with a link and a `requestState`: show the link, wait, then retry with the same workflowId and that requestState. Returns the deployment id, version number and live URL.

輸入參數workflowId必填requestState

archive_workflow

Archive workflow

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.

輸入參數workflowId必填

list_connections

List connections

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_types

List node types

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 `name`, then call get_node_schemas for the exact types you will use. Needs no account data.

輸入參數name

get_node_schemas

Get node schemas

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 `data` so property names are exact rather than guessed. An unknown type comes back with an `error` entry instead of failing the call.

輸入參數types必填

test_run_node

Test run node

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, `{{ … }}` expressions are passed through as literal text; the result names any field that affected. To test with real data flowing between nodes, deploy and use run_workflow. Returns the node's raw output.

輸入參數nodeId必填workflowId必填

check_setup

Check setup

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 (`missingProviders`). Call it early, while building, so the user can fix setup in parallel. After request_connections, call it again with that sessionId to poll the user's progress: `connectionRequest.complete` turns true once they are done. Never returns a secret.

輸入參數sessionIdworkflowId

request_connections

Request connections

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 `missingProviders`, plus `cloudflare` if it is not connected. You cannot create a connection yourself, and must never ask the user to paste a secret into the chat: give them this link instead. Then poll check_setup with the returned sessionId and continue once `connectionRequest.complete` is true. Returns sessionId, connectUrl and expiresAt.

輸入參數providers必填workflowId

run_workflow

Run workflow

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.

輸入參數viapayloadinstanceIdworkflowId必填

list_runs

List runs

List a deployed workflow's recent runs, newest first, read on demand from the user's own Cloudflare account. `source: history` (default) lists completed runs with an executionId, status and duration from the workflow's run log; it is empty until something has actually run. `source: instances` lists durable runs with an instanceId, including ones still queued, waiting or paused, and can filter by `status`. Pass the returned `cursor` back to get the next page. Open one run with get_run.

輸入參數limitordercursorsourcestatusworkflowId必填

get_run

Get run

Get one run's details. Pass `executionId` (from list_runs source history) for step-by-step status, durations and recorded inputs and outputs. Pass `instanceId` (from run_workflow or list_runs source instances) for a durable run's state, step history, output and error, plus `awaitingEvents`: the event types it is parked on, which control_run send_event must use. Pass exactly one of the two. Set `simple` with instanceId to get only the status, for cheap polling.

輸入參數simpleinstanceIdworkflowId必填executionId

control_run

Control run

Act on one in-flight durable run: `pause`, `resume`, `terminate` (stops it where it is; completed steps are not undone), or `send_event` to deliver an event to a run parked on a wait or approval, resuming it. For send_event, read get_run first and use one of its `awaitingEvents` as `eventType`: Cloudflare accepts any type, so a wrong one silently does nothing. To run a workflow again from the start, use run_workflow; replaying from a step is not offered because it would repeat effects that already happened.

輸入參數action必填payloadeventTypeinstanceId必填workflowId必填

get_deployment_status

Get deployment status

Answer 'is this deployed workflow healthy, and is it still what we deployed?' in one call. `stats`: run counts, error rates and p50/p95 durations per node type from the workflow's own telemetry. `health`: Cloudflare's independent count of invocations, errors and CPU time, which also catches failures the telemetry cannot see. `drift`: whether the deployed script still exists in the user's Cloudflare account (catching one deleted by hand) and, with GitHub sync, how far the mirror is behind; plan-gated. Each section answers on its own: one that cannot be read carries an `error` and is listed in `warnings`, and the rest still return. Read each section's `caveats` before concluding. For raw log lines use get_deployment_logs.

輸入參數sinceincludeworkflowId必填

get_deployment_logs

Get deployment logs

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. `source` in the answer says which log store responded; null means neither had anything for this window, which is not an error.

輸入參數limitsincesourceworkflowId必填

list_workflow_versions

List workflow versions

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).

輸入參數workflowId必填

rollback_workflow

Roll back workflow

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.

輸入參數workflowId必填restoreDraftversionNumber必填

list_workflow_files

List workflow files

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. `readPath` is the URL template that downloads one file. A workflow that never stored a file returns an empty list, not an error. Pass `cursor` back for the next page.

輸入參數limitcursorworkflowId必填

verify_connection

Verify connection

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 `not_eligible`.

輸入參數credentialId必填

rotate_webhook_secret

Rotate webhook secret

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.

輸入參數workflowId必填

get_plan

Get plan and limits

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_options

Get dynamic options

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 `options` (label and value pairs) or, for field pickers, `fields` with types and allowed values.

輸入參數loader必填paramsworkflowId必填credentialId必填

call_deployed_workflow

Call deployed workflow

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.

輸入參數name必填arguments

list_deployed_tools

List deployed tools

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.

無需輸入參數。

版本歷史

1
  1. v1.2.0最新Oct 24, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分