n8n爪子技能
技能目录 n8n爪 MCP服务器。使用单个聊天命令安装预先构建的API集成-无需编码。
______________________________________________________________________
可用技能
分析
| 技能 | 描述 | 证书 | 作者 |
|---|
沟通
| 技能 | 描述 | 证书 | 作者 | |
|---|---|---|---|---|
| 电子邮件(IMAP/SMTP) | 通过IMAP/SMTP | 读取和发送电子邮件 | 电子邮件地址、密码、IMAP主机、SMTP主机 | @弗雷迪·舒茨 |
娱乐
| 技能 | 描述 | 证书 | 作者 |
|---|
金融
| 技能 | 描述 | 证书 | 作者 |
|---|
知识
| 技能 | 描述 | 证书 | 作者 |
|---|
语言
| 技能 | 描述 | 证书 | 作者 |
|---|
营销
| 技能 | 描述 | 证书 | 作者 |
|---|
会议
| 技能 | 描述 | 证书 | 作者 |
|---|
网络
| 技能 | 描述 | 证书 | 作者 |
|---|---|---|---|
| 网站检查 | 网站健康检查:加载时间、安全标头、元标签、结构化数据 | 无 | @弗雷迪·舒茨 |
生产力
| 技能 | 描述 | 证书 | 作者 |
|---|---|---|---|
| CalDAV日历 | 管理任何CalDAV服务器上的日历--列出、创建、更新、删除事件(Nextcloud、Radicale、Baikal) | CalDAV URL、用户名、密码 | @弗雷迪·舒茨 |
| 完整的GitHub集成:仓库、问题、PR、代码搜索、文件内容、发布、通知 | GitHub PAT | @弗雷迪·舒茨 |
新闻
| 技能 | 描述 | 证书 | 作者 |
|---|
参考
| 技能 | 描述 | 证书 | 作者 |
|---|
运输
| 技能 | 描述 | 证书 | 作者 |
|---|
公用事业
| 技能 | 描述 | 证书 | 作者 |
|---|
天气
| 技能 | 描述 | 证书 | 作者 |
|---|
______________________________________________________________________
用法
技能是通过与您的n8n爪代理聊天来管理的:
"What skills are available?" → lists all skills
"Install weather-openmeteo" → installs the skill
"Remove weather-openmeteo" → uninstalls and cleans up使用API键的技能
某些技能需要API证书。当你安装一个时,代理会向你发送一个 安全一次性链接 (10分钟有效)通过HTTPS表单输入您的API密钥。您的密钥在聊天中永远不可见。
"Install news-newsapi" → installs + sends credential link
"Add credential for news-newsapi" → generates a new credential link⚠️ 安全通知——技能证书以纯文本形式存储 通过凭证表单输入的API密钥当前已存储 未加密 在template_credentialsPostgreSQL中的表。这意味着: - 任何有权访问数据库的人都可以读取所有存储的API密钥 - Supabase工作室(localhost:3001,可通过SSH隧道访问)以纯文本显示凭据 - 泄露的VPS会暴露所有存储的API密钥 攻击者需要什么: 数据库和API都无法通过互联网访问。PostgREST仅在Docker内部网络上运行,PostgreSQL(端口5432)绑定到127.0.0.1。要读取凭据,攻击者需要SSH访问您的VPS——没有远程网络路径。 缓解措施: 安全的SSH访问(基于密钥的身份验证,无根密码,fail2ban),并尽可能使用权限最小的API密钥。 技能证书的静态加密已计划并正在进行中。
满足基础设施要求的技能
一些技能需要与n8n一起运行的其他服务:
| 技能 | 需要 |
|---|---|
email-imap-smtp | email-bridge docker-compose.yml中的服务(自v0.10起包含在n8n claw中) |
______________________________________________________________________
技能类型
| 类型 | 描述 |
|---|---|
native | n8n直接实现工具逻辑(HTTP请求、代码节点) |
bridge | n8n将请求代理到外部MCP服务器(尚不支持) |
______________________________________________________________________
创建模板
目录结构
每个模板都位于其自己的目录中 templates/:
templates/
index.json ← catalog (add your template here)
my-template/
manifest.json ← metadata (name, tools, credentials)
workflow.json ← n8n workflow bundle (two workflows)
README.md ← optional: usage notes步骤1:添加到 index.json
向添加条目 templates 数组输入 templates/index.json:
{
"id": "my-template",
"name": "My Template",
"type": "native",
"category": "utilities",
"description": "Short description of what this template does",
"credentials_required": [],
"version": "1.0.0"
}第二步:创建 manifest.json
{
"id": "my-template",
"name": "My Template",
"version": "1.0.0",
"updated": "2026-03-08",
"type": "native",
"category": "utilities",
"description": "Short description of what this template does",
"credentials_required": [],
"credentials_optional": [
{
"key": "some_api_key",
"label": "Some API Key",
"hint": "Only needed for premium features"
}
],
"tools": [
{
"name": "my_tool",
"description": "What this tool does"
}
],
"author": "your-github-username",
"license": "MIT",
"tested_n8n_version": "2.10.4"
}清单字段
| 字段 | 必填 | 描述 |
|---|---|---|
id | yes | 唯一模板ID(小写,仅限连字符) |
name | yes | 显示名称 |
version | 是 | 学期版本(例如。 1.0.0) |
updated | 是 | 上次更新日期(ISO格式,例如。 2026-03-08) |
type | 是的 | native 或 bridge |
category | yes | 筛选类别(例如。 weather, utilities, data) |
description | 是 | 简短描述 |
credentials_required | yes | 需要凭据密钥数组(如果没有,则为空数组) |
credentials_optional | no | 带提示的可选凭据数组 |
tools | yes | 此模板提供的工具数组(name + description) |
author | 是 | GitHub用户名 |
license | yes | 许可证标识符(例如。 MIT) |
tested_n8n_version | 是 | 测试的是n8n版本 |
步骤3:创建 workflow.json
工作流包使用 n8n-claw-template 格式。每个模板由以下部分组成 两个工作流:
- 子工作流程 (
sub)--包含实际的工具逻辑(代码节点) - 服务器工作流 (
server)--公开该工具的MCP服务器(mcpTrigger+toolWorkflow)
这两种工作流程模式是必需的,因为n8n的API忽略 specifyInputSchema 创建工作流时,因此 toolCode 参数不起作用 toolWorkflow 模式避免了这个bug。
{
"format": "n8n-claw-template",
"format_version": 1,
"sub": {
"name": "MCP Sub: My Template",
"settings": {
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner"
},
"nodes": [
{
"id": "sub-trigger",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [0, 0],
"parameters": { "inputSource": "passthrough" }
},
{
"id": "sub-code",
"name": "My Tool Logic",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [256, 0],
"parameters": {
"jsCode": "const input = $input.first().json;\nconst city = input.city || 'Berlin';\n\n// Make HTTP requests with helpers.httpRequest()\nconst data = await helpers.httpRequest({\n method: 'GET',\n url: 'https://api.example.com/data?q=' + encodeURIComponent(city)\n});\n\nreturn [{ json: { result: data } }];"
}
}
],
"connections": {
"Execute Workflow Trigger": {
"main": [[{ "node": "My Tool Logic", "type": "main", "index": 0 }]]
}
}
},
"server": {
"name": "MCP: My Template",
"settings": { "executionOrder": "v1" },
"nodes": [
{
"id": "mcp-trigger",
"name": "MCP Server Trigger",
"type": "@n8n/n8n-nodes-langchain.mcpTrigger",
"typeVersion": 2,
"position": [0, 0],
"parameters": { "path": "my-template" }
},
{
"id": "tool-wf",
"name": "my_tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [0, 300],
"parameters": {
"name": "my_tool",
"description": "What this tool does. Parameter: city (city name)",
"workflowId": {
"__rl": true,
"value": "REPLACE_SUB_WORKFLOW_ID",
"mode": "id"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"city": "={{ $fromAI('city', 'The city name', 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "city",
"displayName": "city",
"type": "string",
"description": "The city name",
"required": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
}
}
],
"connections": {
"my_tool": {
"ai_tool": [[{ "node": "MCP Server Trigger", "type": "ai_tool", "index": 0 }]]
}
}
}
}要点
| 主题 | 详细信息 |
|---|---|
| HTTP请求 | 使用 helpers.httpRequest() 在代码节点中-- 不 $helpers.httpRequest() (代码节点v2中未定义) |
| 子工作流ID | 使用 REPLACE_SUB_WORKFLOW_ID 作为占位符--库管理器在安装过程中会自动修补此占位符 |
| 数据库访问 | 读取凭据使用的模板 {{SUPABASE_URL}} 和 {{SUPABASE_SERVICE_KEY}} 占位符--在安装过程中自动替换 |
| MCP路径 | The path 在mcpTrigger中应与您的模板ID匹配 |
| 参数 | 工具参数通过以下方式到达子工作流程 $input.first().json.paramName |
$fromAI() | 在服务器工作流中用于告诉AI代理从用户消息中提取哪些参数 |
| 连接 | toolWorkflow通过以下方式连接到mcpTrigger ai_tool,不 main |
______________________________________________________________________
测试您的模板
在提交pull请求之前,请在本地测试您的模板:
- 验证JSON --确保
manifest.json和workflow.json是有效的JSON - 手动导入 -通过API或UI将子工作流和服务器工作流导入n8n实例
- 测试MCP服务器 --通过n8n claw代理或直接通过MCP客户端调用该工具
- 检查响应 --验证该工具是否以预期格式返回有用数据
您还可以通过库管理器测试是否将模板推送到分支并在库管理器工作流中临时更改CDN_BASE URL。
______________________________________________________________________
贡献
- 分叉此存储库
- 在下面创建一个目录
templates/使用您的模板ID - 添加
manifest.json和workflow.json(见上文) - 向添加条目
templates/index.json - 提交拉取请求
PR 检查清单
- \[\]模板ID仅使用连字符小写(例如。
my-api-tool) - \[ \]
manifest.json包含所有必填字段 - \[ \]
workflow.json用途n8n-claw-template格式与sub和server - \[ \]
REPLACE_SUB_WORKFLOW_ID用作工作流ID占位符 - \[\]代码使用
helpers.httpRequest()(不是$helpers) - \[ \]
index.json条目与清单数据匹配 - \[\]在实时n8n实例上测试的模板
- \[\]所有文本均为英文
______________________________________________________________________
内容分发网络
模板通过jsDelivr CDN提供,以实现快速、可靠的交付:
https://cdn.jsdelivr.net/gh/freddy-schuetz/n8n-claw-templates@master/templates/index.json
https://cdn.jsdelivr.net/gh/freddy-schuetz/n8n-claw-templates@master/templates/{id}/manifest.json
https://cdn.jsdelivr.net/gh/freddy-schuetz/n8n-claw-templates@master/templates/{id}/workflow.jsonCDN使用 @master 分支引用。推送更改后,缓存更新可能需要几分钟时间。有关模板文件的参考,请参见 templates/TEMPLATE_EXAMPLE.md.
______________________________________________________________________
许可证
麻省理工学院
