A side-by-side look at the Adeu and N8n MCP Community MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Adeu for workplace & productivity work as a local process; choose N8n MCP Community for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
accept_all_changes, apply_text_revision, diff_docx_files.N8N_API_URL, N8N_API_KEY.n8n_workflows_list, n8n_workflows_get, n8n_workflows_create.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 69/100 · Great | 64/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | API key required |
| Pricing | Free | Free |
| Required env vars | None listed | N8N_API_URLN8N_API_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 168 | 2 |
| Directory activity | 3 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 6 | 44 |
| Full listing | View Adeu | View N8n MCP Community |
accept_all_changesAccepts every tracked change in the document, producing a finalized clean document.
remove_comments (boolean, DEFAULT TRUE): also delete every comment. The default is TRUE because this tool's purpose is a distributable clean document, and comments are internal review notes that must not travel to a counterparty. Pass remove_comments=false to accept the tracked changes while KEEPING the comments — use that when the review conversation is still live. Either way the response reports how many comments were deleted and names each one with its author, and comments whose anchored text an accepted deletion consumes are removed regardless, exactly as Word does. [Adeu v3.0.6+df9e00c]apply_text_revisionApplies whole-text revised text to a DOCX document by computing a diff and generating tracked changes. Includes a clean-text verification gate to ensure the applied document matches the supplied text.
`revised_text` must be the complete CLEAN view of the document: read it with `read_docx` (`clean_view=true`, `page='all'`), edit that text, and send ALL of it back. Never CriticMarkup ({++, {--, {>>) — this tool diffs against the clean view, so markup tokens would land in the document as literal prose. Never one page of a paginated extract — everything absent from the text is applied as a tracked deletion.
INTERLOCK: a revision that drops >50% of the characters (>75% for documents under 2000 characters) is refused unless you pass allow_major_deletions=true.
If the applied document's clean text does not then match `revised_text`, NOTHING is written to output_path: a diagnostic copy is kept at <name>.unverified.docx and the call fails. output_path defaults to <name>_redlined.docx; an existing _redlined/_processed artifact is revised in place. [Adeu v3.0.6+df9e00c]diff_docx_filesCompares two DOCX files and returns a compact `@@ Word Patch @@` diff — Adeu's token-level, sub-word patch format — of their text content. Useful for analyzing differences between versions before editing. [Adeu v3.0.6+df9e00c]finalize_documentPrepares a document for external distribution or e-signature. Note: in this zero-dependency environment, protection_mode='encrypt' is unsupported and falls back to a native read-only lock; export_pdf and password are ignored. [Adeu v3.0.6+df9e00c]process_document_batchApplies a batch of edits and review actions to a DOCX.
Batches apply SEQUENTIALLY: each change validates against state from prior changes. Valid changes apply when others fail (salvage default): response LEADS with `PARTIAL: applied K of N` listing unapplied changes. Pass partial=false for all-or-nothing.
Each item in `changes` needs a `type`:
1. 'modify': search-and-replace. `target_text` must match uniquely (`match_mode`:'strict', default) — add context or set `match_mode`:'first'/'all'. Set `regex`:true for regex matching (groups in `new_text` as $1, $2…). `new_text` supports Markdown: '#'–'######' headings, '**bold**', '_italic_', '\n\n' paragraph split. Omit it (with a comment) to annotate without changing text; empty string deletes. Never write CriticMarkup manually — use `comment`.
• EMPTY CELLS: blank cells carry `{#cell:<id>}` anchors — set `target_text` to the anchor and value in `new_text`. Pipes are display separators.
2. 'accept'/'reject': finalize or revert a tracked change by `target_id` (e.g. 'Chg:12').
3. 'reply': reply to a comment by `target_id` (e.g. 'Com:5') with `text`.
4. 'set_field': fill a form field — `field` is its 'CC:<N>' id, tag or alias, `value` the text; list via `read_docx` `mode`:'fields'. Checkboxes take true/false, dates YYYY-MM-DD, dropdowns a listed option. Dual-writes bound stores. A locked/protected control refuses and names the override permitting it.
5. 'insert_row': add table row — `target_text` anchors on an existing row's text, `cells` holds cell values (left-to-right), `position` is 'above'/'below' (default below). 'delete_row': remove row matching `target_text`. Disk mode only.
ID VOLATILITY: 'Chg:N'/'Com:N' ids shift between states — call `read_docx` before accept/reject/reply; never reuse ids from earlier turns.
`author_name` sets Track Changes attribution; defaults to 'Adeu AI (TS)' when omitted. [Adeu v3.0.6+df9e00c]read_docxReads a DOCX file. Returns text with inline CriticMarkup for Tracked Changes and Comments: {++inserted++}, {--deleted--}, {==highlighted==}{>>comment<<}. Set clean_view=True for the finalized 'Accepted' text without markup.
Modes:
- 'full' (default): paginated body content. Use page=N to navigate.
- 'outline': heading map only — start here for large docs to plan targeted reads. Defaults to L1-L2 headings; pass outline_max_level=3-6 to see deeper structure.
- 'appendix': defined terms, anchors, and cross-reference targets. Consult before editing legal/technical docs to avoid breaking references.
- 'changes' (mode='changes'): a ledger of every tracked change and comment (id, type, author, page, snippet) — start here for review work instead of reading pages. Filter with changes_author, page, and changes_offset.
- 'fields' (mode='fields'): a ledger of every content control (ordinal, class, alias/tag, location, lock/binding state, current value) — start here to discover fillable fields. Paginate with fields_offset; `page` and `search_query` do not apply.
`page`: a positive integer (1-indexed, default 1), a page RANGE like '2-6' (returns up to 8 pages in one call, then names the next range), or 'all'. Pages are synthetic length-based chunks sized for LLM consumption, NOT printed Word pages. In mode='full', page='all' returns the whole body with no page chrome; oversized documents are refused with an outline and a bounded-read recipe unless force=true. With `search_query`, `page` instead restricts matches to that page (default: search all pages). [Adeu v3.0.6+df9e00c]n8n_workflows_listList one Public API page of workflows visible to the configured API key. Use n8n_search_workflows for substring matching or n8n_workflows_get for a known ID. Omit cursor for page one. active, tags, and name are combined upstream; keep those filters and excludePinnedData unchanged when passing nextCursor. limit sizes only that page, and the tool never auto-paginates. Requires workflow-list permission; returns projected workflows and nextCursor, never pin/static values.n8n_workflows_getGet one current workflow for inspection or reviewed editing. workflowId is the stable ID returned by n8n_workflows_list or create, not a workflow name or version ID. Use n8n_workflows_get_version for history. excludePinnedData changes only the upstream request and the pinDataPresent/staticDataPresent flags; pinned values are withheld whether true or false. Requires permission to read the target; returns structure, state, settings, and presence flags.n8n_workflows_createCreate and persist one workflow as an additive write without activating its triggers. name, nodes, and connections define a new record; nodes and connections must form one complete graph, while omitting settings uses an empty object. Optional pinData, staticData, description, and nodeGroups are forwarded only when supplied. Use n8n_workflows_update for an existing workflow and activate for triggers. Requires write or unsafe mode plus create permission; returns the validated projection without pin/static values.n8n_workflows_updateUpdate selected top-level fields through a non-atomic full PUT. workflowId selects the current record; copy expectedVersionId from its latest read, and supply at least one writable field. The version must match both pre-write reads. Omitted fields are preserved, but each supplied array or object replaces that whole field. Use n8n_update_node for one node property and n8n_workflows_update_tags for tags. Requires write/unsafe mode plus read and update permission; returns the confirmed projection.n8n_update_nodeUpdate one path on one node while preserving sibling data. workflowId selects the current workflow, nodeId selects exactly one node inside it, and path selects the mutable field whose contract validates value. Copy expectedVersionId from the latest workflow read and set acknowledgeNonAtomicRisk=true; both guards are required before the full PUT. Use n8n_workflows_update for top-level or multi-node edits. Requires write/unsafe mode plus read and update permission; returns the changed path and residual race risk.n8n_workflows_deletePermanently delete one workflow and its saved definition. workflowId must be the current stable ID from n8n_workflows_list or get; a name or version ID is not accepted. Use n8n_workflows_archive for reversible removal and n8n_workflows_get for inspection. This action has no rollback or transfer. Requires unsafe mode plus delete permission; returns the request-bound workflowId with deleted=true.n8n_workflows_activateActivate one workflow so production triggers can accept future events; this does not execute it now. workflowId must be the current stable ID from n8n_workflows_list or get, not a name or version ID. Review the workflow first; use n8n_workflows_deactivate to stop future triggers. Requires unsafe mode plus activation permission; returns target-validated active state metadata.n8n_workflows_deactivateDeactivate one workflow's future production triggers without deleting saved data or stopping runs already in progress. workflowId must be the current stable ID from n8n_workflows_list or get, not a name or version ID. Use n8n_workflows_activate to reverse the state or archive for lifecycle removal. Requires unsafe mode plus deactivation permission; returns target-validated inactive state metadata.n8n_workflows_get_versionGet one retained workflow snapshot. workflowId is the stable workflow ID; versionId is that workflow's separate retained-version ID. Do not swap them or pass a workflow name. Use n8n_workflows_get for current state or n8n_workflows_diff for comparison. Both returned IDs must match the selectors; a missing endpoint and a pruned version share an explicit ambiguous 404 outcome. Requires history-read permission; returns validated nodes and connections subject to retention.n8n_workflows_get_tagsList tags currently assigned to one workflow. workflowId selects the workflow from n8n_workflows_list or get; it is not a tag ID and this call does not list unassigned tags. Use it before n8n_workflows_update_tags when assignments must be preserved; use n8n_tags_list for all tags. The endpoint has no cursor, so the tool keeps at most 100 records and reports exact omissions. Requires assignment-read permission; returns validated tag metadata.n8n_workflows_update_tagsReplace one workflow's complete tag assignment; this is not a merge. workflowId selects the workflow, while every tagIds item must be a stable tag ID from n8n_tags_list or get; tag names are not accepted. tagIds is the whole desired set, so omitted IDs are removed and [] clears all tags. Use n8n_workflows_get_tags first to preserve assignments. Requires write/unsafe mode plus assignment permission; returns n8n's validated replacement.n8n_workflows_archiveArchive one workflow without deleting its saved definition. workflowId must be the current stable ID from n8n_workflows_list or get, not a name or version ID. Use this instead of delete for reversible removal; use deactivate only to stop triggers. The availability change can disrupt callers. Requires unsafe mode plus archive permission; returns target-validated metadata with isArchived=true.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"adeu": {
"command": "npx",
"args": [
"-y",
"@adeu/mcp-server"
]
}
}
}
{
"mcpServers": {
"drzamarian-n8n-mcp-community": {
"command": "npx",
"args": [
"--yes",
"n8n-mcp-community@latest"
],
"env": {
"N8N_API_URL": "YOUR_N8N_API_URL_HERE",
"N8N_API_KEY": "YOUR_N8N_API_KEY_HERE"
}
}
}
}