MCP连接与工作流管理工具

Porch是一个用于发现、安装、连接和链式管理MCP(模型上下文协议)的工具,支持通过URL或stdio连接,提供工作流编排、隧道功能及与LLM集成。

  • by dev-nolant
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 dev-nolant/MCP-Orchestrator

使用说明

门廊

⭐ 在GitHub上为我们投票 --它可以帮助其他人发现这个项目!

你的MCP不会互相交谈。Porch从npm和PyPI发现并安装MCP,通过URL或stdio连接它们,将它们的工具链接到工作流中,将任何MCP隧道到互联网(根据MCP令牌快速或命名),并让您最喜欢的LLM添加MCP,构建工作流,管理隧道,并从聊天中运行所有这些。Web UI、易于安装的Cursor、Claude、Windsurf和Continue、CLI、一个命令引导和自动启动。

瓷器 --网站上有文档、安装指南和安装说明。

目录

设置

cd porch
npm install
npm run build

配置

复制示例并针对您的设置进行编辑:

cp porch.config.example.json porch.config.json

您的配置被忽略,从未提交。两种MCP类型:

URL(HTTP/SSE)

对于暴露HTTP端点的MCP(例如Pieces):

"pieces": {
  "type": "url",
  "url": "http://localhost:39300/model_context_protocol/2025-03-26/mcp"
}

Stdio(生成过程)

对于作为流程运行的MCP(例如Spotify MCP):

"spotify": {
  "type": "stdio",
  "command": "node",
  "args": ["./spotify-mcp-server/build/index.js"],
  "cwd": "./spotify-mcp-server"
}

如果从其他地方运行,请使用绝对路径。对于文件系统MCP,替换 /path/to/your/projects 使用您想要允许的目录(例如您的主页或项目文件夹)。

承载令牌(URL MCP)

对于需要承载令牌的URL MCP,添加 authorizationToken:

"pieces": {
  "type": "url",
  "url": "http://localhost:39300/.../mcp",
  "authorizationToken": "env:MCP_PIECES_TOKEN"
}

支持的格式:

  • env:VAR_NAME --阅读自 process.env.VAR_NAME (推荐给CI)
  • secret:key --阅读自 porch.secrets.json (本地存储,gitignored)
  • 纯字符串——在提交的配置中避免使用

通过API存储令牌: PUT /api/secrets/:key 随着 { "value": "your-token" }.

加密机密(推荐)

当主密钥可用时,会存储秘密 加密的 (AES-256-GCM)英寸 porch.secrets.json。密钥存储在 操作系统钥匙链 (macOS钥匙串、Windows凭据管理器、Linux特勤局)——没有纯文本密钥文件。

安装脚本 提示输入密码,并将导出的密钥存储在OS密钥链中。没有包含秘密的文件。

手动设置: 跑 npm run setup-encryption 并输入密码(最少8个字符)。或者使用设置界面:输入密码并单击“设置加密”。现有的秘密会立即重新加密。

以(权力)否决 集 PORCH_MASTER_KEY (base64 32字节密钥或密码)在您的环境中使用与密钥链不同的密钥。

没有主密钥: 回到传统的纯JSON。限制权限: chmod 600 porch.secrets.json.

工具路由:网关与完整

违约: proxyMode: "gateway" --每个MCP有一条路线,而不是每个工具。保持工具数量低(3 MCP→ 3 网关工具+本地编排工具)。

  • 呼叫 spotify__call(tool="getNowPlaying", args={}) 或 P__call(tool="create_pieces_memory", args={})
  • 使用 list_tools(mcp="spotify") 发现可用工具
  • 工作流不变——它们使用 mcp + tool 逐步

遗产: proxyMode: "full" --每个MCP工具都是自己的代理(spotify__getNowPlaying, Pieces__create_pieces_memory等等)。完全符合人体工程学,但许多MCP可以超过80个工具限制。使用 proxyPrefix, toolsInclude,或 toolsExclude 根据MCP进行修剪。

工作流

工作流链式步骤。使用占位符将上一步的输出注入到下一步的参数中:

占位符 用例
{{step0}} 步骤0的全文输出
{{step1.id}} JSON路径-当步骤返回有效的JSON时,提取 id
{{step1:regex:Playlist ID: (\w+)}} Regex——单捕获组
{{step0:regexAll:ID: (\w+)}} Regex all–全部捕获为 数组
{{now}} ISO格式的当前时间
{{isoDate}} 今天的日期(YYYY-MM-DD)
{{date}} 本地日期字符串
{{timestamp}} Unix毫秒
{{uuid}} 随机UUID
{{year}}, {{month}}, {{day}}, {{weekday}} 日期部件
{{js: new Date().toLocaleDateString('en-US', {month:'long'}) }} 任意JavaScript表达式

示例:Spotify→ 碎片

{
  "name": "Spotify to Pieces",
  "steps": [
    { "mcp": "spotify", "tool": "getRecentlyPlayed", "args": { "limit": 15 } },
    {
      "mcp": "pieces",
      "tool": "create_pieces_memory",
      "args": {
        "summary_description": "Spotify listening history",
        "summary": "# Recently Played\n\n{{step0}}"
      }
    }
  ]
}

易于安装(Mac、Linux、Windows)

一个命令安装程序,在后台运行服务器并添加 瓷器本地 因此,您可以使用友好的URL打开UI。默认情况下,服务器设置为 登录时自动启动.

单线安装(粘贴到终端)

Mac和Linux:

bash <(curl -sSL https://raw.githubusercontent.com/dev-nolant/porch/main/scripts/bootstrap.sh)

跳过自动启动:

bash <(curl -sSL https://raw.githubusercontent.com/dev-nolant/porch/main/scripts/bootstrap.sh) --no-startup

Windows PowerShell:

irm https://raw.githubusercontent.com/dev-nolant/porch/main/scripts/bootstrap.ps1 | iex

Windows,跳过自动启动: $env:NO_STARTUP=1; irm https://raw.githubusercontent.com/dev-nolant/porch/main/scripts/bootstrap.ps1 | iex

引导程序将仓库克隆到 ~/porch,运行 npm install 和 npm run build,注册 porch 全局CLI,然后启动服务器。它将提示可选工具(uv、cloudflared)和加密密钥设置。

非交互式 (CI、自动化、跳过所有提示): curl -sSL https://raw.githubusercontent.com/dev-nolant/porch/main/scripts/bootstrap.sh | bash


Mac和Linux(手动,克隆后):

cd porch
chmod +x scripts/*.sh
./scripts/install.sh

然后打开 http://porch.local:3847 (或http://localhost:3847)

Windows(PowerShell作为主机文件的管理员):

cd porch
.\scripts\install.ps1

然后打开 http://porch.local:3847

跳过自动启动 (安装时登录时不自动启动):

./scripts/install.sh --no-startup
.\scripts\install.ps1 -NoStartup

云雾缭绕 (适用于公共URL/隧道):安装程序提示安装cloudflared。要跳过提示,请执行以下操作:

./scripts/install.sh --cloudflared    # Install cloudflared
./scripts/install.sh --no-cloudflared # Skip (default when non-interactive)
.\scripts\install.ps1 -Cloudflared    # Install cloudflared
.\scripts\install.ps1 -NoCloudflared  # Skip

紫外线 (对于Discover的Python mcp,例如快速mcp电报):安装程序提示安装uv。要跳过提示,请执行以下操作:

./scripts/install.sh --uv     # Install uv
./scripts/install.sh --no-uv  # Skip (default when non-interactive)
.\scripts\install.ps1 -Uv     # Install uv
.\scripts\install.ps1 -NoUv   # Skip

控制脚本:

  • ./scripts/start.sh / .\scripts\start.ps1 --在后台启动服务器
  • ./scripts/stop.sh / .\scripts\stop.ps1 --停止服务器
  • ./scripts/update.sh / .\scripts\update.ps1 --更新(git pull、npm安装、构建、重启)
  • ./scripts/enable-startup.sh / .\scripts\enable-startup.ps1 --登录时启用自动启动
  • ./scripts/disable-startup.sh / .\scripts\disable-startup.ps1 --登录时禁用自动启动
  • 日志: tail -f .porch.log (Mac/Linux)或 Get-Content .porch.log -Wait -Tail 20 (Windows)。在Windows上,stderr转到 .porch.err.

安装程序添加 127.0.0.1 porch.local 到您的hosts文件(首次运行时需要sudo/admin)。

禁用自动启动

如果您在安装时启用了自动启动,并希望将其关闭:

雨衣:

./scripts/disable-startup.sh

这将停止服务器并删除启动代理。下次登录时不会启动。

Linux:

./scripts/disable-startup.sh

这将停止服务器并删除systemd用户服务。

窗户:

.\scripts\disable-startup.ps1

这将停止服务器并删除计划任务。

要稍后重新启用自动启动,请运行 ./scripts/enable-startup.sh 或 .\scripts\enable-startup.ps1.

卸载

Mac和Linux:

cd ~/porch
./scripts/disable-startup.sh

这将停止服务器并删除launchd/systemd自动启动条目。

窗户:

cd ~\porch
.\scripts\disable-startup.ps1

这将停止服务器并删除计划任务。

可选清理:

  • 移除 porch CLI: npm unlink -g porch
  • 移除 127.0.0.1 porch.local 从您的hosts文件(/etc/hosts 在Mac/Linux上, C:\Windows\System32\drivers\etc\hosts 在Windows上)。
  • 删除项目文件夹: rm -rf ~/porch (Mac/Linux)或删除 ~\porch (Windows)。

如果使用自定义安装位置,请从该目录运行脚本,而不是 ~/porch.

Web用户界面

npm run ui
# → http://localhost:3847

或 porch open 在浏览器中打开UI(需要服务器运行)。仪表板页脚有 文档 和 在GitHub上查看 链接。

UI允许您:

  • 添加MCP 按URL(例如。 http://localhost:39300/.../mcp)或通过文件/stdio(命令、args、cwd)
  • 连接 --将Porch添加到Cursor、Claude Desktop、Windsurf,或通过简易安装继续
  • 构建工作流 通过链接MCP中的操作;使用 {{step0}}, {{step1}}, {{now}}, {{isoDate}},等等
  • 安排工作流程 通过“计划”选项卡自动运行(cron)
  • 运行工作流 并查看输出

配置已保存到 porch.config.json 在项目目录中。

命令行界面

安装后 porch 命令在全球范围内可用。或使用 npm run 从项目目录。

porch help                    # List all commands
porch list                    # List tools from all MCPs
porch workflow "Spotify to Pieces"
porch workflow show "Spotify to Pieces"   # Show workflow config
porch workflows [--json]      # List workflows
porch mcps [--json]           # List MCPs + status
porch tunnel status|start|stop
porch logs [--tail=N]         # Recent logs
porch open                    # Open UI in browser

选项: --config=PATH 用于自定义配置。在以下位置搜索配置:cwd、包根或 --config= 路径。

工作流输入: porch workflow "Start Study" --input='{"subject":"math"}' 或 --input=@input.json

手动(无全局安装): npm run list 和 npm run workflow -- "Spotify to Pieces"

每30分钟跑一次(可选)

同步Spotify→ 每30分钟自动处理一次:

克朗:

*/30 * * * * cd /path/to/porch && porch workflow "Spotify to Pieces"

连接(MCP客户端设置)

这 连接 Web UI中的选项卡使将Porch添加到AI客户端变得容易。

  1. 打开用户界面(npm run ui) → 连接 标签
  2. 选择您的 平台 (macOS、Windows、Linux——自动检测)
  3. 选择您的 客户端 (光标、克劳德桌面、风帆、继续)
  4. 点击 简易安装 将配置写入正确的文件,同时保留现有的MCP

或使用 复制配置 手动粘贴JSON。保存后重新启动客户端。

客户端 配置路径(macOS)
光标 ~/.cursor/mcp.json
克劳德桌面 ~/Library/Application Support/Claude/claude_desktop_config.json
风帆冲浪 ~/.codeium/windsurf/mcp_config.json
继续 ~/.continue/config.json

克劳德桌面笔记: Claude只支持stdio MCP,不支持HTTP。Easy Install使用内置的stdio桥(mcp-bridge.js)这样Claude就可以与编排器的HTTP端点进行通信。在打开Claude之前,确保MCP Orchestrator正在运行。

从mcp编排器目录运行 使用Easy Install时,桥路径会正确解析(例如。 cd mcp-orchestrator && npm run ui).

用作MCP

Porch是一流的MCP服务器。将其添加到任何MCP客户端(Cursor、Claude Desktop、Windsurf、Continue、MCP Inspector或自定义应用程序),并操作工作流、MCP、隧道和安装——所有这些都可以通过聊天完成,不需要web UI。

资源(请阅读这些内容以了解上下文)

  • orchestrator://glossary --首先阅读:每个工具的参考、参数、用法、示例(通过自定义 docs/glossary.md)
  • orchestrator://workflow-guide --创建工作流的指令集:手动运行、输出检查、占位符(请参见 docs/creating-workflows.md)
  • orchestrator://config --完整配置(mcps、工作流)
  • orchestrator://status --MCP健康+隧道状态
  • orchestrator://logs --最近日志

按类别划分的工具

类别 工具
工作流 list_workflows, run_workflow, get_workflow, add_workflow, update_workflow, delete_workflow, schedule_workflow, unschedule_workflow
单核细胞趋化蛋白 list_mcps, get_mcp_status, add_mcp, remove_mcp, enable_mcp, disable_mcp, call_tool, list_tools
隧道 get_tunnel_status, start_tunnel, stop_tunnel, set_tunnel_domain, cloudflare_login, generate_tunnel_token, revoke_tunnel_token
注册表 search_registry, install_from_registry, install_npm_mcp
可观测性 get_config, get_logs, clear_logs

直接MCP访问: 每个MCP的工具都公开为 mcpName__toolName (例如。 spotify__getNowPlaying, pieces__create_pieces_memory).直接给他们打电话——不需要工作流。使用 call_tool 当您需要显式指定mcp/tool时。

设置

将Porch添加为 流式HTTP 带URL的MCP http://localhost:3847/mcp (或 http://porch.local:3847/mcp 如果使用主机条目)。 最简单: 使用“连接”选项卡→ 易于安装。

光标,风帆,继续: 这些客户端支持HTTP MCP。添加URL http://localhost:3847/mcp 在客户端的MCP设置中,或使用Connect→ 易于安装。

克劳德桌面: Claude仅支持stdio MCP。使用连接→ 易于安装(它添加了一个stdio桥配置),或手动添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "porch": {
      "command": "node",
      "args": ["/path/to/porch/build/mcp-bridge.js"],
      "env": {
        "PORCH_URI": "http://localhost:3847/mcp"
      }
    }
  }
}

替换 /path/to/porch 使用您的安装路径。确保Porch服务器正在运行(npm run ui 或通过安装脚本)进行连接。

公共URL(隧道)

暴露 任何MCP 使用令牌身份验证连接到互联网。两种选择:

快速通道(无配置)

免费,无需注册。URL每次开始都会更改。

  1. 安装cloudflared: brew install cloudflared
  2. 打开 公共URL tab → 启动隧道
  3. 创建 https://xxx.trycloudflare.com
  4. 根据MCP生成令牌;远程客户端使用URL+承载令牌

命名隧道(稳定URL)

需要Cloudflare帐户。每次都是相同的URL。

  1. 登录 --在“公共URL”选项卡中,单击 登录Cloudflare浏览器打开;登录并批准。
  2. 设置子域库 --输入您的域名(例如。 porch.sh)在“子域库”字段中单击“保存”。该域必须在您的Cloudflare帐户中。
  3. 启动隧道 --创建命名隧道,路由DNS(spotify.porch.sh, pieces.porch.sh等),并运行。每个MCP都有自己的子域。

或者,使用基于令牌的命名隧道:set CLOUDFLARE_TUNNEL_TOKEN 和 CLOUDFLARE_TUNNEL_PUBLIC_URL (或秘密)。

URL MCP 通过编排器进行隧道传输; 标准 MCP 使用HTTP到stdio网桥。所有流量都使用每个MCP令牌进行代理和验证。没有令牌,访问将被拒绝。

示例(任何MCP客户端):

URL: https://your-tunnel.trycloudflare.com/tunnel/pieces
Authorization: Bearer <your-token>

安全:

  • MCP令牌 porch.secrets.json.使用 撤销 无效。
  • 隧道令牌/URL:使用env变量或secrets;永远不要承诺。

先决条件

  • Node.js (v18+)