
使用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 />
想象一下您正在调试前端问题,并需要:

没有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
{
"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-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}" }
}
}
}
别名(如 context7、grafana 等)成为您在脚本化工作流步骤中引用外部工具时的前缀(例如,chrome-devtools:take_screenshot)。如果工作流中引用的别名缺失,注册表格式不正确,或者环境占位符无法解析,则启动失败。
查看 examples/context7-demo/(Context7)和 examples/deepwiki-demo/(DeepWiki)中的示例设置,这些设置通过此注册表+工作流对将真实的MCP服务器连接到Oplink。
要暴露MCP服务器而不编写自定义步骤,声明一个带有 externalServers 的工作流。Oplink现在为每个工作流暴露一个工具以及提供内置的 describe_tools 辅助工具,以便代理可以动态发现代理命令。推荐流程是:
describe_tools({ "workflow": "frontend_debugger" }) 以检索缓存的目录(名称、描述、JSON模式、最后刷新时间)。{ "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_screenshot 或 chrome-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 接受诸如 aliases、search、limit 和 refresh 的可选过滤器。如果您更改了上游MCP服务器后需要强制重新发现,请设置 refresh: true。使用自动工作流进行快速连接,然后在需要精选流程、默认值或多步编排时切换到脚本化工作流(如下)。
默认情况下,Oplink将MCP表面限制为您工作流加上辅助实用程序(如 describe_tools、external_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.json 的 alias: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 使快乐路径简单(无需额外参数),同时允许覆盖以获取不同的图像类型。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。
.mcp-workflows/servers.json 中定义服务器(参见上面的示例)server:tool工具调用流程:
MCP客户端 → Oplink → mcporter运行时 → 外部MCP服务器 → 结果
外部工具在启动时被发现,模式哈希被缓存,并通过 describe_tools 辅助工具暴露,而不是向MCP客户端发送数十个代理命令。缓存会在过期时自动刷新,如果您更改了上游服务器,可以通过调用 describe_tools({ "workflow": "name", "refresh": true }) 手动触发刷新。
另见:
docs/oplink-docs/content/5.advanced/3-mcporter.mddocs/oplink-docs/content/5.advanced/4-authentication.md托管提供商如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}"
}
}
注意事项:
type: "stdio" + npx mcp-remote 允许Oplink即使服务器位于HTTPS上也能启动托管服务器。tokenCacheDir 下缓存刷新令牌,因此OAuth提示只会发生一次。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服务器。
npx mcporter list <alias> --config path/to/.mcp-workflows)FRONTEND_ROOT(shadcn):设置 export FRONTEND_ROOT=$(pwd)/examples/frontend-mcp-demo 或在您的MCP客户端条目的 env 块中设置它。--config 指向预期的 .mcp-workflows 目录,并且您的IDE已识别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:take_screenshot 而未指定 format,DevTools将拒绝请求。提供的示例设置了默认值(png),并通过 format/screenshot_format 参数允许覆盖。