1仕組みと動作原理
ツールの機能はすべて外部の n8n-mcp MCP サーバーから提供され、当リポジトリはスキル層のみを担当します。ホスト型モードは streamable-http エンドポイントとして宣言され、ツール名は `mcp__n8n-mcp__*` の形式をとります。
"url": "https://api.n8n-mcp.com/mcp"
エントリポイントスキルは、SessionStart フックによって各セッション(resume/clear/compact を含む)で SKILL.md 全体を読み込んで additionalContext に注入することで、「常時ロード」を実現しています。
META_SKILL="${PLUGIN_ROOT}/skills/using-n8n-mcp-skills/SKILL.md"
「判断の瞬間に提示するヒント」はフック登録テーブルによって実現されており、アンカー付き正規表現で MCP ツールの完全名にマッチした場合、同ディレクトリの bash スクリプトを実行します。
"matcher": "^mcp__.*__get_node$",
一般的なリマインダーは 1 回限りの重複排除を実施:一時ディレクトリに session_id + マーカー名の .loaded ファイルを作成し、同一セッション内での不要な再通知を防ぎます。
MARKER="${STATE_DIR}/${SESSION_ID}-${MARKER_NAME}.loaded"
ノードレベルの高リスクリマインダーは意図的に重複排除を行いません:Set/Code/Merge/Loop/DateTime/DataTable/Agent が照会されるたびに再注入されます。これは、繰り返しの照会が同じアンチパターンの再検討を意味することが多いためです。
# High-risk-node warnings: NOT deduped. Each lookup fires the warning fresh.
PostToolUse は validate_workflow の実行後にワークフロー JSON のノードタイプを解析し、残存リスクを対応する専門スキルにルーティングするとともに、「検証通過 ≠ 正常動作」であることを強調します。
(.tool_input.workflow.nodes // .tool_input.nodes // [])
スキル内容は段階的開示(Progressive Disclosure)を採用:SKILL.md にはコア情報とインデックスのみを残し、詳細は同ディレクトリの参照用 .md に分離して本文の相対リンク経由でオンデマンドに読み込みます。
**See**: [DATA_ACCESS.md](DATA_ACCESS.md) → "Mode Performance" for the corollaries, hop costs, and scale check.
セルフホストスキルはデプロイ用テンプレートを assets/ に配置し、エージェントが SSH 経由で対象マシンに転送した上で docker compose を起動させます。これは本パック内で唯一「エージェントにリモートコマンド実行を指示する」スキルです。
`ssh <target> 'cat > <DATA_FOLDER>/docker-compose.yml' < assets/docker-compose.single.yml`.
パッケージングスクリプトはバージョン整合性を厳格にアサートします:2 つのマニフェスト間でバージョンが一致しない場合は exit 1 で停止し、一致する場合のみディレクトリ構造からスキルを自動検出して zip 化します。
VERSION=$(read_version .claude-plugin/plugin.json)
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| api | n8n-mcp 托管 MCP 端点(streamable-http,OAuth 登录) |
| network | 托管端点的接入说明(OAuth 后于 dashboard 连接自己的 n8n 实例) |
| package | npm 包 n8n-mcp(经 npx 从 registry 拉取,自托管模式) |
| cli | npx(启动 stdio 模式 MCP server 的示例配置) |
| cli | docker / docker compose(自托管技能在目标机上执行) |
| package | 容器镜像:Caddy(自动 TLS)与 n8n 本体 |
| network | 部署前公网 IP / DNS 预检(curl 与 dig) |
| cli | hook 运行时依赖 jq,缺失时回退 python3,都没有则静默放弃 |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: ホストが hooks.json に基づきリポジトリ内スクリプトを実行:SessionStart→hooks/session-start.sh(`"command": "${C
- 网络端点: 外部ネットワークアクセスの宣言: フック内でのネットワーク呼び出しはゼロ:hooks/ 全体で curl/wget/nc/dev-tcp/eval の呼び出し箇所はなく、stdin 読み込み、/tmp マーカー書き込み、出力のみ
- 本地工作目录: ファイルの読み書きと成果物の出力: 重複排除マーカーファイル:`MARKER="${STATE_DIR}/${SESSION_ID}-${MARKER_NAME}.loaded"` + `touch
5二重目の独立検証
- [ok] skill.path = skills/using-n8n-mcp-skills — 重读 skills/ 目录:15 个子目录、该层无 SKILL.md;glob **/SKILL.md 得 15 个且全部位于 skills/<name>/SKILL.md。重读 hooks/session-start.sh 确认 META_SKILL 指向 using-n8n-mcp-skills,重读 .claude-plugin/marketplace.json 确认同一 bundle 枚举 15 条路径——router 即入口,选它作路径。
- [ok] official_desc 逐字 — 重读 skills/using-n8n-mcp-skills/SKILL.md L2-4:description 为单行长文本,正文 L6 才是标题,说明未使用 YAML 折行,逐字转录无拼接误差。
- [ok] external_deps:MCP 端点与两种接入方式 — 重读 mcp.json 全 9 行(streamable-http + https://api.n8n-mcp.com/mcp)、.mcp.json.example(npx + MCP_MODE=stdio + N8N_API_URL/N8N_API_KEY 占位)、SKILL.md 的 Hosted/Self-hosted 两段。端点、命令、变量名逐字一致。
- [ok] security:hooks 是否联网 — 对 hooks/ 全目录独立 grep(curl|wget|nc |/dev/tcp|eval |base64|N8N_API|API_KEY|TOKEN|\.env):仅命中提醒文本里的 tokens 字样。逐行重读 _emit.sh 与 session-start.sh 确认无子进程下载、无网络命令。结论不变:hooks 不联网。
- [ok] security:hooks 读取的环境变量集合 — 重读 session-start.sh(CLAUDE_PLUGIN_ROOT、HOME、TMPDIR、stdin)与 _emit.sh(TMPDIR、stdin,无 jq 时 python3 兜底);全仓 grep keychain 零命中,`\.claude` 仅命中 .gitignore 与文档安装指令。
- [ok] security:写文件路径 — 重读 _emit.sh 的 STATE_DIR/MARKER/touch、get-node.sh 的同名目录、session-start.sh 的 CACHE_DIR + mkdir 与 rm -f 清理:写路径只有 ${TMPDIR:-/tmp}/n8n-mcp-skills-state/*.loaded(约定前缀)与 ~/.cache/n8n-mcp-skills(仅建目录),另有 build.sh 的 dist/。
- [ok] 去重策略:通用一次 vs 节点级每次 — 重读 _emit.sh(有 marker 即 exit 0)与 get-node.sh(通用提醒走 has_marker 去重,高危节点分支无 marker 检查)。题面所述『节点级提醒不去重』在源码注释与逻辑上均成立。
- [discrepancy] 披露 vs 实际:评估套件能否运行 — README 写 `npm test` 与 `claude-code --skill n8n-expression-syntax "Test webhook data access"`,但全仓无 package.json、无测试框架配置、无 CI workflow;evaluations/ 下 57 个 JSON 只有 id/skills/query/expected_behavior 字段,无 runner;docs/DEVELOPMENT.md 自述 `*Coming soon: Evaluation framework*`。README 的注释行也写着 `# Run evaluations (if testing framework available)`——即该命令在仓内无法兑现,评估实为人工对照流程。
6結論
9b92af0c1951282e…