返回市场
操作链接-MCP

操作链接-MCP

作者:regenrek10 星标更新:2025-11-16

项目介绍

Oplink

Oplink Logo

使用MCP应用创建自己的无代码工作流。Oplink将多个MCP服务器组合成您在简单YAML文件中定义的统一工作流。

为什么选择Oplink? <br /><br /> 🚀 无代码代理工作流 — 通过编辑YAML文件创建自己的代理工作流。<br /> 🧩 一个端点,多个服务器 — 将任何MCP服务器(如Chrome DevTools、shadcn、Context7等)捆绑到单一的MCP服务器入口后面。<br /> 🛡️ 引导提示与模式 — 每个工作流都暴露类型化的参数、指令和精选辅助工具。<br /> 💾 上下文高效发现mcporter 在内存中缓存工具模式,因此代理通过 describe_tools 发现工具时不会向您的MCP客户端发送数十个外部命令。只有您精选的工作流出现在工具列表中。<br /> 🧠 适用于任何MCP客户端 — Cursor、Claude Code、Codex、Windsurf及其朋友可以运行复杂的流程而无需自定义粘合代码。<br /><br />

想象一下您正在调试前端问题,并需要:

  • Chrome DevTools 来检查浏览器状态,捕获截图并分析网络请求
  • shadcn 来理解组件API并获取最新的库文档

示例

没有Oplink,您需要手动协调多个MCP服务器,切换上下文并拼凑结果。有了Oplink,您可以定义一个单一的 frontend_debugging 工作流,在一次调用中协调两个服务器。

概览

Oplink将基于YAML的工作流定义转换为可执行的MCP工具。与仅在提示中引用工具名称的工具不同,Oplink实际上可以执行您通过轻量级注册表(.mcp-workflows/servers.json)连接的外部MCP工具。

Oplink将多个MCP服务器组合成统一的工作流。 在YAML中定义提示和工具序列,通过简单的注册表连接外部MCP服务器,并将一切作为单个MCP工具暴露出来,该工具可以在任何MCP客户端(如Cursor、Claude、Windsurf等)中运行。

示例:前端调试工作流

frontend_debugging:
  description: "使用Chrome DevTools和shadcn组件调试前端问题"
  prompt: |
    系统地分析报告的问题。
    使用Chrome DevTools检查浏览器状态并捕获诊断信息。
    参考shadcn组件文档以了解UI库。
  externalServers:
    - chrome-devtools
    - shadcn

一个工作流,多个服务器,无缝执行。这就是Oplink存在的原因。

安装

npx -y oplink@latest init

Cursor配置

{
  "mcpServers": {
    "oplink-get-docs": {
      "command": "npx",
      "args": [
        "oplink@latest",
        "server",
        "--config",
        "examples/deepwiki-demo/.mcp-workflows"
      ]
    },
    "oplink-frontend-debugging": {
      "command": "npx",
      "args": [
        "oplink@latest",
        "server",
        "--config",
        "examples/frontend-mcp-demo/.mcp-workflows"
      ],
      "env": {
        "FRONTEND_ROOT": "/path/to/oplink/examples/frontend-ms-workflow-demo"
      }
    }
  }
}

自定义配置

{
  "mcpServers": {
    "oplink": {
      "command": "npx",
      "args": [
        "oplink@latest",
        "server",
        "--config",
        "/path/to/.mcp-workflows"
      ]
    }
  }
}

配置

创建一个 .mcp-workflows 目录并添加YAML工作流文件:

debug_workflow:
  description: "调试应用程序问题"
  prompt: |
    系统地分析问题。
    收集日志和错误信息。
  externalServers:
    - your-server-alias

MCP服务器注册表

外部工具通过 .mcp-workflows/servers.json 解析。每个条目将友好的别名映射到MCP服务器定义(stdio命令或HTTP端点)。使用 ${ENV_VAR} 占位符来存放秘密。当您使用 --config <dir> 运行时,Oplink会自动加载该目录下的 .env 文件,然后扩展占位符(优先级顺序:shell > .env.{NODE_ENV}.local > .env.{NODE_ENV} > .env.local > .env)。您不需要 mcporter.json 文件即可运行Oplink。

{
  "servers": {
    "context7": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"],
      "env": { "CONTEXT7_TOKEN": "${CONTEXT7_TOKEN}" }
    },
    "grafana": {
      "type": "http",
      "url": "https://grafana.example.com/mcp",
      "headers": { "Authorization": "Bearer ${GRAFANA_TOKEN}" }
    }
  }
}

别名(如 context7grafana 等)成为您在脚本化工作流步骤中引用外部工具时的前缀(例如,chrome-devtools:take_screenshot)。如果工作流中引用的别名缺失,注册表格式不正确,或者环境占位符无法解析,则启动失败。

查看 examples/context7-demo/(Context7)和 examples/deepwiki-demo/(DeepWiki)中的示例设置,这些设置通过此注册表+工作流对将真实的MCP服务器连接到Oplink。

自动工作流(零配置)

要暴露MCP服务器而不编写自定义步骤,声明一个带有 externalServers 的工作流。Oplink现在为每个工作流暴露一个工具以及提供内置的 describe_tools 辅助工具,以便代理可以动态发现代理命令。推荐流程是:

  1. 调用 describe_tools({ "workflow": "frontend_debugger" }) 以检索缓存的目录(名称、描述、JSON模式、最后刷新时间)。
  2. 从响应中选择一个工具,并使用 { "tool": "name", "args": { ... } } 调用工作流。

每个自动工作流提示都会自动附加一个提醒,先运行 describe_tools,所以您不必手动提及它——尽管您可以根据需要自定义提示文本以提供额外的上下文。

frontend_debugger:
  description: "Chrome DevTools助手"
  prompt: |
    使用Chrome DevTools MCP工具(例如,take_screenshot,list_network_requests)。
    调用此工作流时提供 {"tool": "name", "args": { ... }}。
  externalServers:
    - chrome-devtools

shadcn_helper:
  description: "shadcn助手"
  prompt: |
    使用shadcn MCP工具列出/搜索组件。
  externalServers:
    - shadcn

full_helper:
  description: "Chrome DevTools + shadcn"
  prompt: |
    从一个工作流访问Chrome DevTools和shadcn MCP工具。
  externalServers:
    - chrome-devtools
    - shadcn

使用以下方式调用工作流:

  • tool:工具名称(例如,take_screenshotchrome-devtools:take_screenshot)。
  • server:除非您配置了多个别名(如 full_helper)且未前缀工具,否则可选。
  • args:传递给MCP工具的参数对象。
describe_tools({
  "workflow": "frontend_debugger"
})

frontend_debugger({
  "tool": "take_screenshot",
  "args": {
    "url": "https://example.com",
    "format": "png"
  }
})

describe_tools 接受诸如 aliasessearchlimitrefresh 的可选过滤器。如果您更改了上游MCP服务器后需要强制重新发现,请设置 refresh: true。使用自动工作流进行快速连接,然后在需要精选流程、默认值或多步编排时切换到脚本化工作流(如下)。

可选的每工具代理

默认情况下,Oplink将MCP表面限制为您工作流加上辅助实用程序(如 describe_toolsexternal_auth_setup)。如果您希望将每个外部MCP工具作为其自身的MCP工具公开(例如,deepwiki.read_wiki_structure),可以通过设置 OPLINK_AUTO_REGISTER_EXTERNAL_TOOLS=1 启动服务器之前(或在调用 createMcpServer 时传递 autoRegisterExternalTools: true)选择加入。这主要用于调试或当客户端不能调用 describe_tools 时。类似地,oplink_info 辅助工具仅在 OPLINK_INFO_TOOL=1(或 includeInfoTool: true)时注册,用于故障排除构建。

脚本化工作流步骤

现代Oplink工作流完全在服务器上运行:您声明要执行的外部步骤,而MCP客户端只看到高级工具(例如,frontend_debugger)。每个步骤使用来自 servers.jsonalias:tool 格式引用外部MCP工具,并可以从工作流参数模板化参数。

take_screenshot:
  description: "为文档或测试捕获截图"
  runtime: scripted
  parameters:
    url:
      type: string
      required: true
    wait_for:
      type: string
      description: "等待的可选文本"
    format:
      type: string
      enum: [png, jpeg, webp]
      default: png
  steps:
    - call: chrome-devtools:navigate_page
      args:
        type: url
        url: "{{ url }}"
        ignoreCache: false
    - call: chrome-devtools:wait_for
      requires: wait_for
      args:
        text: "{{ wait_for }}"
        timeout: 10000
    - call: chrome-devtools:take_screenshot
      args:
        fullPage: true
        format: "{{ format }}"
  • runtime: scripted 告诉Oplink通过mcporter在服务器端执行这些步骤。
  • requires 除非命名参数(或保存的值)为真值,否则跳过该步骤。
  • 参数可以使用 {{ paramName }} 模板化。
  • 只有工作流工具(如 take_screenshot)暴露给MCP客户端;chrome-devtools助手保持内部。
  • 默认参数如 format 使快乐路径简单(无需额外参数),同时允许覆盖以获取不同的图像类型。
  • 如果您不想让运行器为该调用发出“步骤X”日志(对于已经返回二进制内容的截图步骤很有用),可以在步骤中添加 quiet: true

提示型工作流

对于只需要提示而无需外部工具执行的简单工作流,您可以使用参数注入:

thinking_mode:
  description: "反思思想"
  parameters:
    thought:
      type: "string"
      description: "要反思的思想"
      required: true
    context:
      type: "string"
      description: "附加上下文"
  prompt: |
    深入反思:{{ thought }}
    考虑这个上下文:{{ context }}
    分析影响和权衡。

示例

仓库中的 examples/ 包含提示型和脚本化工作流的示例配置。创建您自己的 .mcp-workflows/ 中的YAML时,请参考这些示例。

外部工具集成

Oplink使用 mcporter 连接到外部MCP服务器,但读取注册表来自您选择的 --config 目录下的 .mcp-workflows/servers.json

  1. .mcp-workflows/servers.json 中定义服务器(参见上面的示例)
  2. 在脚本化工作流步骤中引用工具为 server:tool
  3. 只有工作流工具本身暴露给MCP客户端;辅助工具保持内部

工具调用流程:

MCP客户端 → Oplink → mcporter运行时 → 外部MCP服务器 → 结果

外部工具在启动时被发现,模式哈希被缓存,并通过 describe_tools 辅助工具暴露,而不是向MCP客户端发送数十个代理命令。缓存会在过期时自动刷新,如果您更改了上游服务器,可以通过调用 describe_tools({ "workflow": "name", "refresh": true }) 手动触发刷新。

另见:

  • 高级:Oplink如何使用mcporter → docs/oplink-docs/content/5.advanced/3-mcporter.md
  • 高级:外部MCP服务器的身份验证(API密钥,OAuth) → docs/oplink-docs/content/5.advanced/4-authentication.md

连接到托管的MCP服务器(OAuth)

托管提供商如Linear通过HTTPS/SSE暴露MCP服务器,并期望OAuth流程。mcporter 0.5+已经处理了浏览器/设备交互,因此您只需为每个服务器配置一个条目:

"linear": {
  "type": "stdio",
  "command": "npx",
  "args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"],
  "auth": "oauth",
  "clientName": "oplink-linear-demo",
  "oauthRedirectUrl": "http://127.0.0.1:43115/callback",
  "tokenCacheDir": "./.tokens/linear",
  "env": {
    "MCP_REMOTE_CLIENT_ID": "${LINEAR_CLIENT_ID}",
    "MCP_REMOTE_CLIENT_SECRET": "${LINEAR_CLIENT_SECRET}"
  }
}

注意事项:

  1. type: "stdio" + npx mcp-remote 允许Oplink即使服务器位于HTTPS上也能启动托管服务器。
  2. mcporter在 tokenCacheDir 下缓存刷新令牌,因此OAuth提示只会发生一次。
  3. 如果您更喜欢动态注册,可以跳过客户端ID/密钥提示——mcporter将在第一次工具调用期间打开浏览器。
  4. 运行 pnpm bootstrap:linear 以复制示例配置并将您的凭据(可选)注入 examples/linear-discord-demo/.mcp-workflows/servers.json

要检查任何别名暴露的工具,重复使用相同的配置目录:

npx mcporter list linear --config examples/linear-discord-demo/.mcp-workflows

对于演示中的Discord,导出 `DISCORD_BOT_TOKEN` 到您的shell;Oplink将其映射到 `DISCORD_TOKEN`,用于在 `examples/linear-discord-demo/.mcp-workflows/servers.json` 中定义的MCP服务器。

要求

  • Node.js 18+ 或 20+
  • 可选:mcporter CLI 本地检查 (npx mcporter list <alias> --config path/to/.mcp-workflows)
  • MCP客户端(如Cursor、Claude Desktop等)

故障排除

  • 缺少 FRONTEND_ROOT(shadcn):设置 export FRONTEND_ROOT=$(pwd)/examples/frontend-mcp-demo 或在您的MCP客户端条目的 env 块中设置它。
  • Chrome无法启动:确保已安装Chrome并能本地启动。对于远程/调试Chrome,单独启动它并根据其文档更新Chrome DevTools服务器标志。
  • 没有工具出现:确认 --config 指向预期的 .mcp-workflows 目录,并且您的IDE已识别MCP服务器条目。
  • 工具目录看起来过时:更改上游MCP服务器后,运行 describe_tools({ "workflow": "name", "refresh": true }) 强制重新发现。

开发

# 安装依赖
pnpm install

# 构建包
pnpm build

# 运行测试
pnpm test

# 启动开发服务器
cd packages/oplink
pnpm dev

定义

Oplink是一个MCP服务器,通过结合提示与外部MCP工具执行来编排工作流。它将您的工作流定义与mcporter配置的MCP服务器桥接,实现自动工具发现和执行。

致谢

许可证

MIT

仓库

https://github.com/instructa/oplink

  • Chrome DevTools截图错误:如果工作流调用 chrome-devtools:take_screenshot 而未指定 format,DevTools将拒绝请求。提供的示例设置了默认值(png),并通过 format/screenshot_format 参数允许覆盖。