n8n-mcp-community 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/CODE_OF_CONDUCT.md +51 -0
  3. package/CONTRIBUTING.md +69 -0
  4. package/LICENSE +21 -0
  5. package/README.md +271 -0
  6. package/ROADMAP.md +41 -0
  7. package/SECURITY.md +53 -0
  8. package/SUPPORT.md +19 -0
  9. package/THIRD_PARTY_NOTICES.md +48 -0
  10. package/dist/config.js +76 -0
  11. package/dist/content/node-docs.js +47 -0
  12. package/dist/content/official-urls.js +11 -0
  13. package/dist/doctor.js +88 -0
  14. package/dist/index.js +119 -0
  15. package/dist/introspect/collector.js +642 -0
  16. package/dist/introspect/contracts.js +309 -0
  17. package/dist/introspect/engine.js +184 -0
  18. package/dist/introspect/http-client.js +142 -0
  19. package/dist/introspect/index.js +5 -0
  20. package/dist/introspect/order.js +3 -0
  21. package/dist/introspect/render.js +25 -0
  22. package/dist/introspect/rule-ids.js +25 -0
  23. package/dist/introspect/rules.js +905 -0
  24. package/dist/introspect/sanitize.js +66 -0
  25. package/dist/n8n/client.js +170 -0
  26. package/dist/prompts.js +69 -0
  27. package/dist/resources.js +42 -0
  28. package/dist/security/operation-policy.js +20 -0
  29. package/dist/security/redaction.js +253 -0
  30. package/dist/server.js +16 -0
  31. package/dist/tools/common.js +54 -0
  32. package/dist/tools/credentials.js +259 -0
  33. package/dist/tools/definition.js +169 -0
  34. package/dist/tools/endpoint-contracts.js +53 -0
  35. package/dist/tools/executions.js +180 -0
  36. package/dist/tools/registry.js +24 -0
  37. package/dist/tools/schemas.js +203 -0
  38. package/dist/tools/tags.js +73 -0
  39. package/dist/tools/users.js +130 -0
  40. package/dist/tools/utilities.js +347 -0
  41. package/dist/tools/workflows.js +771 -0
  42. package/dist/version.js +1 -0
  43. package/docs/README.md +21 -0
  44. package/docs/architecture.md +122 -0
  45. package/docs/assets/demo.gif +0 -0
  46. package/docs/clients.md +95 -0
  47. package/docs/compatibility.md +112 -0
  48. package/docs/configuration.md +87 -0
  49. package/docs/demo-transcript.md +31 -0
  50. package/docs/examples.md +86 -0
  51. package/docs/faq.md +90 -0
  52. package/docs/getting-started.md +93 -0
  53. package/docs/installation.md +120 -0
  54. package/docs/provenance.md +152 -0
  55. package/docs/security-model.md +170 -0
  56. package/docs/tools.md +937 -0
  57. package/docs/troubleshooting.md +185 -0
  58. package/package.json +126 -0
  59. package/server.json +51 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,116 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented here. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and releases use
5
+ [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.1.0] - 2026-07-20
10
+
11
+ ### Added
12
+
13
+ - Secure stdio MCP runtime with exactly 44 tools, five resources, and four prompts.
14
+ - Three operation modes with exact confirmations for unsafe calls.
15
+ - Deterministic local Introspect engine v2 with 23 diagnostic rules.
16
+ - Strict Node 22/24 test, build, dependency-license, and package gates.
17
+ - Native-English public documentation and complete tool reference.
18
+ - Embedded synthetic terminal demonstration with a packaged transcript and an
19
+ automated orphan-asset documentation gate.
20
+
21
+ - Optional `doctor` floor-compatibility probe behind `N8N_MCP_DOCTOR_PROBE=1`:
22
+ two bounded single-item reads diagnose `floor_compatible`,
23
+ `below_floor_indicators`, or `inconclusive` without claiming a remote version.
24
+
25
+ ### Changed
26
+
27
+ - Every confirmation-guarded tool now documents its exact required confirmation
28
+ phrase (for example `DELETE <workflowId>`) directly in the `confirmation`
29
+ field description, derived from the tool's own confirmation function so the
30
+ documented and enforced phrases can never drift. The phrase is discoverable in
31
+ the tool schema an MCP client sees, yet is still never echoed back on a
32
+ mismatch, so the deliberate-action guard is preserved.
33
+
34
+ ### Fixed
35
+
36
+ - Redact URL userinfo credentials, cookie and session values, suffixed secret
37
+ keys, and complete quoted multi-word secrets in strings.
38
+ - Reject API keys that are illegal HTTP header values at configuration load and
39
+ keep request-construction failures value-free.
40
+ - Validate surgical node updates against per-field type contracts and
41
+ re-validate the mutated node before any write reaches n8n.
42
+ - Stop re-validating trusted server round-trip data under caller input rules so
43
+ workflows with large or prototype-keyed upstream data remain updatable.
44
+ - Reject out-of-bounds array indexes in update paths instead of fabricating
45
+ sparse null elements.
46
+ - Exclude pinned data from workflow-diff and introspect reads, and fail before
47
+ writing when an instance omits workflow version identity.
48
+ - Distinguish below-floor endpoint absence from retention pruning in
49
+ version-history errors and add version-floor guidance to floor-marker 404s.
50
+ - Tolerate name-only credential references in usage scans and expose value-free
51
+ coverage counts instead of aborting.
52
+ - Report over-cap successful mutations as truncated successes, derive
53
+ execution-stop outcomes from the validated upstream body, and preserve
54
+ completed credential-test outcomes by truncating over-long diagnostics.
55
+ - Map upstream response-shape mismatches to a stable `upstream_shape_mismatch`
56
+ code without exposing schema internals.
57
+ - Emit stable, secret-free configuration reason codes aligned with `doctor`
58
+ guidance, and end broken-stdio sessions with one structured stderr line.
59
+ - Count literal secrets in canonical `{name, value}` parameter entries and
60
+ recognize core entry nodes without "trigger" in their type names.
61
+ - Authenticate artifact-baseline approval receipts with an operator-held HMAC
62
+ key, bind `server.json` and SBOM digests to the reviewed baseline, verify the
63
+ MCPB dependency file count, and pin gitleaks and npm versions in CI.
64
+ - Remove private identifiers from the public-language gate, scan the gate
65
+ itself, and align registry metadata with the HTTP(S) connection contract.
66
+
67
+ - Report all mutable node execution-behavior fields in value-free workflow
68
+ diffs instead of silently omitting nine supported fields, while normalizing
69
+ absent and explicit `false` default-false flags.
70
+ - Validate the real n8n invitation response, report truthful delivery metadata,
71
+ and keep capability-bearing invitation URLs out of MCP output.
72
+ - Invoke npm, npx-compatible execution, and MCPB through JavaScript entrypoints
73
+ so package, audit, baseline, and bundle gates remain shell-free and portable
74
+ on Windows and Corepack-managed layouts.
75
+ - Encode every valid email selector as one RFC 3986-safe path segment, including
76
+ apostrophe-containing addresses accepted by the public input contract.
77
+ - Reject retained workflow snapshots whose returned version identity differs
78
+ from either selector requested by the workflow-diff tool.
79
+ - Publish every tool input and output schema fully inline. Reusing one Zod
80
+ instance across two properties of the same tool previously emitted
81
+ intra-schema `$ref` pointers that not every MCP client resolves.
82
+
83
+ ### Security
84
+
85
+ - Same-origin Public API client with redirect rejection, timeouts, body limits,
86
+ boundary validation, output redaction, and zero-request policy denial.
87
+ - Official documentation URLs and validated Introspect identifiers survive
88
+ output sanitization. Untrusted values that merely look similar stay redacted.
89
+ - All 23 Introspect rule identifiers come from one closed list. Long workflow
90
+ identifiers receive bounded hash suffixes so distinct findings stay distinct.
91
+ - Introspect detects stored non-positive node type versions and keeps partial
92
+ reports within their output budget after synchronizing disclosed findings.
93
+ - Git ignores and index checks reject every `.env*` form and transient npm or
94
+ MCPB artifact. Only fixed public CA slots may appear during an active release
95
+ transition.
96
+ - Executable metadata gates protect the private-to-public transition. Semgrep
97
+ rules are pinned to an exact commit instead of a mutable remote alias.
98
+ - Changelog anchors handle prerelease versions, both release-verification layers
99
+ enforce fixed certificate paths, and a real `private: false` package survives
100
+ pack and install.
101
+ - Public certificates must be regular files. CI pins exact runners and Node
102
+ versions for Linux, macOS, and Windows.
103
+ - Explicit rejection tests for inconsistent package/signing states, an isolated
104
+ empty-cache public-package round trip, package-derived Markdown scan coverage,
105
+ and a SemVer-constrained unpublished-candidate anchor.
106
+ - Artifact receipts are required only for a publishable `private: false`
107
+ candidate. Private development remains fully automated, while an absent or
108
+ stale receipt still blocks the actual release transition.
109
+ - Public-boundary verification now rejects shallow checkouts and scans every
110
+ changed path in the complete ancestry reachable from `HEAD` and all locally
111
+ available refs. Deleted SDDs, private-development receipts, local context,
112
+ credentials, keys, and generated release artifacts cannot survive in that
113
+ publishable history; authenticated public release receipts remain supported.
114
+
115
+ [Unreleased]: https://github.com/drzamarian/n8n-mcp-community/compare/v0.1.0...HEAD
116
+ [0.1.0]: https://github.com/drzamarian/n8n-mcp-community/releases/tag/v0.1.0
@@ -0,0 +1,51 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our pledge
4
+
5
+ We pledge to make participation in this project a harassment-free experience
6
+ for everyone, regardless of age, body size, visible or invisible disability,
7
+ ethnicity, sex characteristics, gender identity and expression, level of
8
+ experience, education, socioeconomic status, nationality, personal appearance,
9
+ race, caste, color, religion, or sexual identity and orientation.
10
+
11
+ We pledge to act and interact in ways that contribute to an open, welcoming,
12
+ diverse, inclusive, and healthy community.
13
+
14
+ ## Our standards
15
+
16
+ Positive behavior includes demonstrating empathy, respecting differing
17
+ viewpoints and experiences, giving and accepting constructive feedback,
18
+ accepting responsibility and apologizing for mistakes, and focusing on what is
19
+ best for the community.
20
+
21
+ Unacceptable behavior includes sexualized language or imagery, trolling,
22
+ insulting or derogatory comments, personal or political attacks, public or
23
+ private harassment, publishing another person's private information without
24
+ permission, and other conduct reasonably considered inappropriate in a
25
+ professional setting.
26
+
27
+ ## Enforcement responsibilities
28
+
29
+ Project maintainers are responsible for clarifying and enforcing acceptable
30
+ behavior and may remove, edit, or reject contributions, comments, commits, code,
31
+ issues, and other contributions that are not aligned with this Code of Conduct.
32
+
33
+ ## Scope
34
+
35
+ This Code applies within project spaces and when an individual officially
36
+ represents the project in public spaces.
37
+
38
+ ## Enforcement
39
+
40
+ Report abusive, harassing, or otherwise unacceptable behavior through a private
41
+ maintainer channel. Until a dedicated conduct address is published, request a
42
+ private contact through a non-sensitive GitHub issue. Do not include personal or
43
+ sensitive details in the public request.
44
+
45
+ All complaints will be reviewed promptly and fairly. Maintainers will respect
46
+ the privacy and security of reporters.
47
+
48
+ ## Attribution
49
+
50
+ This Code of Conduct is adapted from the Contributor Covenant, version 2.1,
51
+ available at <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
@@ -0,0 +1,69 @@
1
+ # Contributing
2
+
3
+ Thank you for helping make n8n MCP Community safer and more useful. Changes are
4
+ welcome when they preserve the Community Edition scope, the exact documented
5
+ tool contract, and the project's data-minimization defaults.
6
+
7
+ ## Before you begin
8
+
9
+ - Read the [security model](docs/security-model.md) and
10
+ [architecture](docs/architecture.md).
11
+ - Use synthetic fixtures only. Never submit real credentials, workflows,
12
+ executions, instance URLs, cookies, or identifying data.
13
+ - For a vulnerability, follow [SECURITY.md](SECURITY.md) instead of opening a
14
+ public issue.
15
+ - Discuss a new tool or public behavior before implementing it. Tool additions
16
+ change the compatibility, documentation, and release contract.
17
+
18
+ ## Development setup
19
+
20
+ Node.js 22 and 24 are the supported development lines.
21
+
22
+ ```bash
23
+ npm ci
24
+ npm run check
25
+ ```
26
+
27
+ The complete gate covers formatting, dependency licenses and notices, strict
28
+ TypeScript, the full automated test suite, a real stdio inventory check, and the
29
+ production build.
30
+ Run `npm run sbom > sbom.cdx.json` when reviewing dependency changes.
31
+
32
+ ## Branch and commit conventions
33
+
34
+ - Create a focused branch from `dev`: `feat/<topic>`, `fix/<topic>`,
35
+ `docs/<topic>`, or `chore/<topic>`.
36
+ - Keep changes small and traceable. Avoid unrelated refactors.
37
+ - Use Conventional Commit subjects such as `feat:`, `fix:`, `docs:`,
38
+ `test:`, or `chore:`.
39
+ - Never commit `.env`, generated packages, build output, logs, or secrets.
40
+ - Do not force-push a shared review branch.
41
+
42
+ ## Pull requests
43
+
44
+ A pull request should explain the problem, the chosen minimal change, security
45
+ and compatibility impact, tests performed, and documentation updated. Every
46
+ tool change must update both the runtime contract and
47
+ [docs/tools.md](docs/tools.md). A registration-only tool is not acceptable.
48
+
49
+ Reviewers will check:
50
+
51
+ - Community Edition support through a documented Public API path;
52
+ - operation mode and MCP annotations matching actual side effects;
53
+ - input validation before upstream requests;
54
+ - response allowlisting, redaction, pagination, and size limits;
55
+ - zero-request denial for invalid or unauthorized operations;
56
+ - Node 22 and 24 behavior;
57
+ - documentation and inventory parity;
58
+ - package, provenance, and license impact.
59
+
60
+ All actionable review findings must be resolved or explicitly dispositioned with
61
+ evidence before merge. `dev` is the integration branch; releasable changes reach
62
+ `main` only through the reviewed release process.
63
+
64
+ ## Style
65
+
66
+ Write code, tests, comments, commit messages, issues, and documentation in clear
67
+ native-quality English. TypeScript is strict, `any` is prohibited, and external
68
+ data must be validated at the boundary. Prefer the smallest implementation that
69
+ satisfies the actual contract.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Walter Zamarian Jr.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,271 @@
1
+ # n8n MCP Community
2
+
3
+ **A security-focused Model Context Protocol server for self-hosted n8n Community Edition.**
4
+
5
+ Connect an MCP client to n8n through 44 carefully bounded tools for workflows,
6
+ executions, credentials, tags, users, diagnostics, and instance metadata. The
7
+ server starts offline, defaults to read-only, uses the supported n8n Public API,
8
+ and never sends workflow data to an external AI provider.
9
+
10
+ > **v0.1.0:** install the exact published version or use a source checkout. See
11
+ > [Installation](docs/installation.md) for the pinned npm and signed MCPB
12
+ > options.
13
+
14
+ [Read the synthetic terminal demo transcript](docs/demo-transcript.md). It shows
15
+ the planned exact-version startup, 44-tool inventory, and local Introspect
16
+ diagnostics using only synthetic identifiers and documented output shapes.
17
+
18
+ [![Animated synthetic terminal demonstration showing the planned exact-version startup, MCP inventory, and local Introspect result](docs/assets/demo.gif)](docs/demo-transcript.md)
19
+
20
+ ## Why this project
21
+
22
+ - **Community Edition first.** The release surface is designed for self-hosted
23
+ n8n Community Edition, without presenting paid-only capabilities as available.
24
+ - **44 useful tools, one explicit contract.** Every tool has bounded inputs,
25
+ documented side effects, MCP safety annotations, and contract tests.
26
+ - **Safe by default.** Read-only mode is the default. Writes and destructive or
27
+ externally contacting operations require progressively stronger gates.
28
+ - **Deterministic Introspect.** `n8n_introspect` runs a local 23-rule engine;
29
+ it does not execute workflows, call an agent, or contact an external model.
30
+ - **Surgical node updates.** `n8n_update_node` changes one validated node path
31
+ while preserving the rest of the workflow and disclosing the Public API's
32
+ non-atomic limitation.
33
+ - **Truthful discovery.** `n8n_list_node_types` reports only types observed in
34
+ accessible workflows. It does not claim to be a complete installed catalog.
35
+ - **Data minimization.** Credential values, raw execution values, pin data, and
36
+ static workflow data are not returned by the generic public tools.
37
+
38
+ ## Current verification
39
+
40
+ The current source candidate has been verified with:
41
+
42
+ - exactly **44 tools**, **5 resources**, and **4 prompts** over real stdio;
43
+ - **271 passing tests** and the complete verification gate on Node.js 22.23.1
44
+ and 24.18.0;
45
+ - zero findings from Gitleaks, Semgrep, Trivy, and both production/full
46
+ `npm audit` runs; all three source scanners are reproduced in CI, with
47
+ immutable scanner/action identities;
48
+ - a reproducible dependency-license gate covering 224 installed package paths;
49
+ - bounded same-origin HTTP contracts and zero-request policy-denial tests;
50
+ - all 44 compiled tool lifecycles on disposable n8n Community 2.30.5 and 2.30.7
51
+ instances with egress isolation, revoked keys, cleanup, and zero residue; and
52
+ - a clean-installed npm tarball plus a byte-reproducible unsigned MCPB with the
53
+ same compiled runtime and complete production dependency notices.
54
+
55
+ Publication proceeds only through the reviewed release procedure: the
56
+ repository-pinned MCPB signing identity, a human artifact-baseline receipt,
57
+ tag-scoped protected-environment approval, and an externally signed MCPB
58
+ handoff verified byte for byte against the reviewed unsigned candidate.
59
+
60
+ ## Quick start from source
61
+
62
+ Requirements: Node.js 22 or 24, npm, a self-hosted n8n Community Edition
63
+ instance, and an n8n Public API key with only the permissions you need.
64
+
65
+ ```bash
66
+ npm ci
67
+ npm run build
68
+ ```
69
+
70
+ Configure your MCP client to run the compiled stdio entry point:
71
+
72
+ ```json
73
+ {
74
+ "mcpServers": {
75
+ "n8n-community": {
76
+ "command": "node",
77
+ "args": ["/absolute/path/to/n8n-mcp-community/dist/index.js"],
78
+ "env": {
79
+ "N8N_API_URL": "https://n8n.example.com",
80
+ "N8N_API_KEY": "replace-with-your-api-key",
81
+ "N8N_MCP_MODE": "read-only"
82
+ }
83
+ }
84
+ }
85
+ }
86
+ ```
87
+
88
+ Restart the MCP client and list tools. The server can initialize and expose its
89
+ inventory without n8n credentials; connected tools validate the URL and API key
90
+ only when called.
91
+
92
+ The release provides both a signed MCPB for compatible clients and
93
+ exact-version `npx` configuration for portability. `@latest`, global installs,
94
+ and `curl | shell` are not reproducible defaults. See
95
+ [Installation](docs/installation.md) for the release policy and client-specific
96
+ guidance.
97
+
98
+ ## Safety modes
99
+
100
+ | Mode | What it allows | Required configuration |
101
+ | --------- | ----------------------------------------------------------------- | ---------------------------------------------------------- |
102
+ | Read-only | Read-only tools only | Default, or `N8N_MCP_MODE=read-only` |
103
+ | Write | Read-only and mutation tools without the unsafe confirmation gate | `N8N_MCP_MODE=write` |
104
+ | Unsafe | All tools | `N8N_MCP_MODE=unsafe` plus the exact per-call confirmation |
105
+
106
+ Unsafe mode is necessary but not sufficient. Every unsafe call also requires a
107
+ confirmation such as `DELETE wf_123`, `STOP exec_123`, or `TEST cred_123`.
108
+ The n8n API key remains the final upstream permission boundary.
109
+
110
+ Plain HTTP is accepted automatically only for loopback URLs. A non-loopback
111
+ HTTP instance additionally requires `N8N_ALLOW_INSECURE_HTTP=1`, which accepts
112
+ the risk of exposing the API key and data in transit.
113
+
114
+ ## Tool catalog
115
+
116
+ Every entry links to its complete input, output, endpoint, compatibility,
117
+ failure, and security reference.
118
+
119
+ ### Workflows
120
+
121
+ | Tool | Mode | Purpose |
122
+ | ---------------------------------------------------------------------- | --------- | ---------------------------------------------------------------------- |
123
+ | [`n8n_workflows_list`](docs/tools.md#n8n_workflows_list) | Read-only | List accessible workflows with bounded filters and pagination. |
124
+ | [`n8n_workflows_get`](docs/tools.md#n8n_workflows_get) | Read-only | Read one workflow while withholding pin and static data values. |
125
+ | [`n8n_workflows_create`](docs/tools.md#n8n_workflows_create) | Write | Create a validated workflow through the Public API. |
126
+ | [`n8n_workflows_update`](docs/tools.md#n8n_workflows_update) | Write | Guard and update selected fields while preserving omitted fields. |
127
+ | [`n8n_update_node`](docs/tools.md#n8n_update_node) | Write | Change one validated node property with non-atomic concurrency guards. |
128
+ | [`n8n_workflows_delete`](docs/tools.md#n8n_workflows_delete) | Unsafe | Permanently delete one workflow after exact confirmation. |
129
+ | [`n8n_workflows_activate`](docs/tools.md#n8n_workflows_activate) | Unsafe | Activate one workflow after exact confirmation. |
130
+ | [`n8n_workflows_deactivate`](docs/tools.md#n8n_workflows_deactivate) | Unsafe | Deactivate one workflow after exact confirmation. |
131
+ | [`n8n_workflows_get_version`](docs/tools.md#n8n_workflows_get_version) | Read-only | Retrieve one retained historical workflow version. |
132
+ | [`n8n_workflows_get_tags`](docs/tools.md#n8n_workflows_get_tags) | Read-only | List tags assigned to a workflow. |
133
+ | [`n8n_workflows_update_tags`](docs/tools.md#n8n_workflows_update_tags) | Write | Replace a workflow's complete tag assignment. |
134
+ | [`n8n_workflows_archive`](docs/tools.md#n8n_workflows_archive) | Unsafe | Archive one workflow after exact confirmation. |
135
+ | [`n8n_workflows_unarchive`](docs/tools.md#n8n_workflows_unarchive) | Unsafe | Restore one archived workflow after exact confirmation. |
136
+ | [`n8n_workflows_diff`](docs/tools.md#n8n_workflows_diff) | Read-only | Compare nodes and connections without returning raw values. |
137
+
138
+ ### Executions
139
+
140
+ | Tool | Mode | Purpose |
141
+ | -------------------------------------------------------------- | --------- | ------------------------------------------------------------------ |
142
+ | [`n8n_executions_list`](docs/tools.md#n8n_executions_list) | Read-only | List execution metadata with value-free data-presence summaries. |
143
+ | [`n8n_executions_get`](docs/tools.md#n8n_executions_get) | Read-only | Read one execution's metadata without returning workflow payloads. |
144
+ | [`n8n_executions_delete`](docs/tools.md#n8n_executions_delete) | Unsafe | Permanently delete a saved execution. |
145
+ | [`n8n_executions_retry`](docs/tools.md#n8n_executions_retry) | Unsafe | Retry an eligible saved execution. |
146
+ | [`n8n_executions_stop`](docs/tools.md#n8n_executions_stop) | Unsafe | Stop one running execution and bind identity from validated input. |
147
+
148
+ ### Credentials
149
+
150
+ | Tool | Mode | Purpose |
151
+ | ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------------- |
152
+ | [`n8n_credentials_create`](docs/tools.md#n8n_credentials_create) | Write | Create a credential without returning its values. |
153
+ | [`n8n_credentials_delete`](docs/tools.md#n8n_credentials_delete) | Unsafe | Permanently delete one credential. |
154
+ | [`n8n_credentials_schema`](docs/tools.md#n8n_credentials_schema) | Read-only | Read the public schema for a credential type. |
155
+ | [`n8n_credentials_list`](docs/tools.md#n8n_credentials_list) | Read-only | List credential metadata verified on n8n 2.30.5 and 2.30.7. |
156
+ | [`n8n_credentials_get`](docs/tools.md#n8n_credentials_get) | Read-only | Read one credential's public metadata. |
157
+ | [`n8n_credentials_update`](docs/tools.md#n8n_credentials_update) | Write | Update credential metadata or values without echoing secrets. |
158
+ | [`n8n_credentials_test`](docs/tools.md#n8n_credentials_test) | Unsafe | Test a stored credential, potentially contacting its external service. |
159
+ | [`n8n_credentials_usage`](docs/tools.md#n8n_credentials_usage) | Read-only | Find exact credential-ID references in one bounded workflow page. |
160
+
161
+ ### Tags
162
+
163
+ | Tool | Mode | Purpose |
164
+ | -------------------------------------------------- | --------- | ------------------------------------------------ |
165
+ | [`n8n_tags_list`](docs/tools.md#n8n_tags_list) | Read-only | List workflow tags. |
166
+ | [`n8n_tags_get`](docs/tools.md#n8n_tags_get) | Read-only | Read one tag. |
167
+ | [`n8n_tags_create`](docs/tools.md#n8n_tags_create) | Write | Create a tag with the live 1–24 character bound. |
168
+ | [`n8n_tags_update`](docs/tools.md#n8n_tags_update) | Write | Rename a tag with the live 1–24 character bound. |
169
+ | [`n8n_tags_delete`](docs/tools.md#n8n_tags_delete) | Unsafe | Permanently delete one tag. |
170
+
171
+ ### Users
172
+
173
+ | Tool | Mode | Purpose |
174
+ | ---------------------------------------------------- | --------- | ----------------------------------------------------------------- |
175
+ | [`n8n_users_list`](docs/tools.md#n8n_users_list) | Read-only | List users visible to the API key. |
176
+ | [`n8n_users_get`](docs/tools.md#n8n_users_get) | Read-only | Read one user by stable ID or exact email. |
177
+ | [`n8n_users_create`](docs/tools.md#n8n_users_create) | Unsafe | Invite a member or admin after exact email confirmation. |
178
+ | [`n8n_users_delete`](docs/tools.md#n8n_users_delete) | Unsafe | Delete one API-eligible user without unsupported transfer claims. |
179
+
180
+ ### Diagnostics and instance metadata
181
+
182
+ | Tool | Mode | Purpose |
183
+ | -------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------- |
184
+ | [`n8n_health`](docs/tools.md#n8n_health) | Read-only | Perform a bounded same-origin health check. |
185
+ | [`n8n_insights_summary`](docs/tools.md#n8n_insights_summary) | Read-only | Read the official insights summary with optional date filters. |
186
+ | [`n8n_audit_generate`](docs/tools.md#n8n_audit_generate) | Unsafe | Generate n8n's instance security audit after exact confirmation. |
187
+ | [`n8n_search_workflows`](docs/tools.md#n8n_search_workflows) | Read-only | Search one workflow page locally by name, node type, or tag. |
188
+ | [`n8n_get_node_docs`](docs/tools.md#n8n_get_node_docs) | Read-only | Read one of four immutable offline core-node references. |
189
+ | [`n8n_list_node_types`](docs/tools.md#n8n_list_node_types) | Read-only | Inventory node types observed in bounded accessible workflow pages. |
190
+ | [`n8n_introspect`](docs/tools.md#n8n_introspect) | Read-only | Run deterministic local workflow and execution diagnostics. |
191
+ | [`n8n_community_packages_list`](docs/tools.md#n8n_community_packages_list) | Read-only | List installed community-package metadata without mutation paths. |
192
+
193
+ ## Resources and prompts
194
+
195
+ The server also exposes five static resources:
196
+
197
+ - `n8n://usage-guide`
198
+ - `n8n://node-docs/webhook`
199
+ - `n8n://node-docs/code`
200
+ - `n8n://node-docs/http-request`
201
+ - `n8n://node-docs/if`
202
+
203
+ Four prompts guide safe workflow creation, debugging, optimization, and
204
+ credential management: `create-workflow`, `debug-workflow`,
205
+ `optimize-workflow`, and `manage-credentials`.
206
+
207
+ ## Security model in one minute
208
+
209
+ - The server uses local stdio; it does not expose an inbound HTTP listener.
210
+ - Connected requests are same-origin and limited to the configured n8n host.
211
+ - Redirects are rejected; request and response bodies are bounded to 2 MiB.
212
+ - Generic output is validated, sanitized, bounded to 256 KiB, and wrapped as
213
+ `{ "data": ..., "redacted": boolean, "untrusted": true }`.
214
+ - Raw credential values and generic execution payload values are never returned.
215
+ - `n8n_introspect` uses fixed local rules and has no external-model code path.
216
+ - Security controls reduce risk; they do not make untrusted n8n content safe to
217
+ execute or authorize broader API-key permissions.
218
+
219
+ Read the complete [security model](docs/security-model.md) and use
220
+ [SECURITY.md](SECURITY.md) to report a vulnerability privately.
221
+
222
+ ## Documentation
223
+
224
+ - [Documentation map](docs/README.md)
225
+ - [Getting started](docs/getting-started.md)
226
+ - [Installation and upgrades](docs/installation.md)
227
+ - [Configuration](docs/configuration.md)
228
+ - [Complete tool reference](docs/tools.md)
229
+ - [Tested examples](docs/examples.md)
230
+ - [FAQ](docs/faq.md)
231
+ - [Client configuration](docs/clients.md)
232
+ - [Architecture](docs/architecture.md)
233
+ - [Security model](docs/security-model.md)
234
+ - [Compatibility](docs/compatibility.md)
235
+ - [Troubleshooting](docs/troubleshooting.md)
236
+ - [Provenance](docs/provenance.md)
237
+ - [Roadmap](ROADMAP.md)
238
+ - [Changelog](CHANGELOG.md)
239
+
240
+ ## Development
241
+
242
+ ```bash
243
+ npm ci
244
+ npm run check
245
+ npm run sbom > sbom.cdx.json
246
+ ```
247
+
248
+ `npm run check` verifies formatting, dependency licenses/notices, strict
249
+ TypeScript, all tests, the compiled runtime, and documentation inventory parity.
250
+ See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a change.
251
+
252
+ ## Scope and non-affiliation
253
+
254
+ This project is not affiliated with, endorsed by, or sponsored by n8n GmbH.
255
+ “n8n” is used only to identify compatibility with the n8n product and Public
256
+ API. The project does not redistribute the `n8n-nodes-base` catalog and does not
257
+ use browser cookies, interactive session routes, or runtime package downloads to
258
+ construct one.
259
+
260
+ The v0.1.0 surface intentionally excludes arbitrary workflow execution,
261
+ credential/workflow transfer, folders, data tables, beta evaluation endpoints,
262
+ and execution annotations. See the [roadmap](ROADMAP.md) for the annotation
263
+ proposal retained outside the release target.
264
+
265
+ ## License and maintainer
266
+
267
+ The project is released under the [MIT License](LICENSE). Third-party
268
+ dependencies retain their own licenses.
269
+
270
+ Created and maintained by
271
+ [Dr. Walter Zamarian Jr.](https://www.walterzamarianjr.com/).
package/ROADMAP.md ADDED
@@ -0,0 +1,41 @@
1
+ # Roadmap
2
+
3
+ This roadmap communicates direction, not a promise of features or dates. A
4
+ proposal enters the release surface only after a versioned specification,
5
+ Community Edition evidence, security review, documentation, tests, and
6
+ maintainer approval.
7
+
8
+ ## v0.1.0 release gate
9
+
10
+ - Complete native-English documentation and inventory parity.
11
+ - Pass disposable release-candidate lifecycles on n8n Community 2.30.5 and
12
+ 2.30.7 using synthetic data and no production credentials.
13
+ - Inspect clean npm and MCPB artifacts, SBOMs, checksums, signatures, and
14
+ dependency notices.
15
+ - Pass two independent adversarial implementation audits with zero actionable
16
+ findings.
17
+ - Enable repository security controls before the first public release.
18
+
19
+ ## Accepted backlog proposal
20
+
21
+ Execution annotations remain a coherent two-tool proposal outside v0.1.0:
22
+
23
+ - `n8n_executions_get_tags`
24
+ - `n8n_executions_update_tags`
25
+
26
+ They will not be added individually. A future proposal must prove that both
27
+ operate through supported Community Edition endpoints and define strict IDs,
28
+ write policy, bounds, redaction, tests, and migration behavior.
29
+
30
+ ## Areas for future evaluation
31
+
32
+ - Additional deterministic Introspect rules backed by counterexamples and
33
+ stable evidence.
34
+ - More immutable offline node references where provenance and maintenance cost
35
+ are clear.
36
+ - Client-specific MCPB installation verification as compatible clients evolve.
37
+ - Performance and pagination improvements justified by measured workloads.
38
+
39
+ Folders, data tables, beta evaluation APIs, paid-only project transfers,
40
+ arbitrary workflow execution, browser-cookie access, and runtime package
41
+ downloads are not implied by this roadmap.
package/SECURITY.md ADDED
@@ -0,0 +1,53 @@
1
+ # Security policy
2
+
3
+ Security is part of the product contract. Please report suspected
4
+ vulnerabilities privately and give the maintainer reasonable time to investigate
5
+ before public disclosure.
6
+
7
+ ## Supported versions
8
+
9
+ No public version is supported until the first signed release. After release,
10
+ the latest maintained minor line will receive security fixes. Older lines may be
11
+ asked to upgrade when a safe backport is impractical.
12
+
13
+ ## Report a vulnerability
14
+
15
+ Use GitHub's **Security → Report a vulnerability** form. This repository will
16
+ not be published until GitHub private vulnerability reporting is enabled and
17
+ verified. Do not open a public issue with exploit details, credentials, workflow
18
+ payloads, or identifying instance data.
19
+
20
+ If the private form is unavailable, open a public issue containing only the
21
+ sentence “Private security contact requested.” Do not include technical details
22
+ until a private channel has been established.
23
+
24
+ Include, when safe:
25
+
26
+ - the affected version or commit;
27
+ - the tool, resource, prompt, or package path involved;
28
+ - a minimal reproduction using synthetic data;
29
+ - the expected and observed security boundary;
30
+ - impact and any known prerequisites;
31
+ - whether the issue may already have been exploited.
32
+
33
+ Never send a real n8n API key, credential value, cookie, workflow payload,
34
+ execution payload, or private instance URL. Replace them with unmistakable
35
+ placeholders.
36
+
37
+ ## Response process
38
+
39
+ The maintainer will acknowledge a complete report, reproduce it against a safe
40
+ environment, classify impact, prepare a fix and regression test, and coordinate
41
+ disclosure. Timelines depend on severity and reproducibility; no fixed response
42
+ time is promised before the project has a public support process.
43
+
44
+ Security fixes must pass the normal Node 22/24 checks, secret and static scans,
45
+ package inspection, and independent review before release.
46
+
47
+ ## Security boundaries
48
+
49
+ The MCP server reduces risk but does not replace n8n access control. The n8n API
50
+ key determines upstream permissions; unsafe mode can authorize destructive
51
+ requests; explicitly allowing non-loopback HTTP accepts transport risk; and all
52
+ n8n content remains untrusted after sanitization. See
53
+ [docs/security-model.md](docs/security-model.md) for the complete model.
package/SUPPORT.md ADDED
@@ -0,0 +1,19 @@
1
+ # Support
2
+
3
+ This project is pre-release and currently has no guaranteed support response
4
+ time. Before requesting help, read the
5
+ [getting-started guide](docs/getting-started.md),
6
+ [configuration reference](docs/configuration.md), and
7
+ [troubleshooting guide](docs/troubleshooting.md).
8
+
9
+ Use a GitHub issue for reproducible, non-sensitive bugs and documentation
10
+ questions after the public repository is available. Include the project version,
11
+ Node version, n8n Community version, operating system, MCP client, configured
12
+ mode, safe reproduction steps, and sanitized error code. Never include secrets,
13
+ cookies, real workflow or execution payloads, or a private instance URL.
14
+
15
+ Feature requests should explain the Community Edition Public API path, user
16
+ outcome, security and compatibility implications, and why an existing tool
17
+ cannot satisfy the need.
18
+
19
+ Report vulnerabilities privately according to [SECURITY.md](SECURITY.md).