From 193b4083e52242dd9c5be7ab7cc87f60d242eac6 Mon Sep 17 00:00:00 2001 From: Paolo Di Tommaso Date: Tue, 9 Dec 2025 14:41:03 +0100 Subject: [PATCH 1/2] Add Seqera MCP documentation section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add MCP as a new top-level documentation section alongside Wave, Fusion, etc. MCP documentation is sourced from the seqeralabs/mcp repository via git submodule. - Add mcp_docs/mcp_repo submodule pointing to seqeralabs/mcp - Add MCP plugin configuration in docusaurus.config.js - Add MCP to navbar - Add sidebar configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .gitmodules | 3 +++ docusaurus.config.js | 27 +++++++++++++++++++++++++++ mcp_docs/mcp_repo | 1 + mcp_docs/sidebar.json | 5 +++++ 4 files changed, 36 insertions(+) create mode 160000 mcp_docs/mcp_repo create mode 100644 mcp_docs/sidebar.json diff --git a/.gitmodules b/.gitmodules index e69de29bb..393c69e52 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "mcp_docs/mcp_repo"] + path = mcp_docs/mcp_repo + url = https://github.com/seqeralabs/mcp.git diff --git a/docusaurus.config.js b/docusaurus.config.js index 65e67a41e..3173e1dde 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -148,6 +148,26 @@ export default async function createConfigAsync() { }, ]; + const docs_mcp = [ + "@docusaurus/plugin-content-docs", + { + id: "mcp", + routeBasePath: "/mcp", + path: "mcp_docs/mcp_repo/docs", + remarkPlugins: [ + (await import("remark-code-import")).default, + (await require("remark-math")).default, + (await import("docusaurus-remark-plugin-tab-blocks")).default, + (await require("remark-yaml-to-table")).default, + ], + rehypePlugins: [(await require("rehype-katex")).default], + editUrl: ({ docPath }) => { + return `https://github.com/seqeralabs/mcp/blob/master/docs/${docPath}`; + }, + sidebarPath: "./mcp_docs/sidebar.json", + }, + ]; + console.log( "\n EXCLUDE_CHANGELOG: " + (process.env.EXCLUDE_CHANGELOG ? true : false), "\n EXCLUDE_PLATFORM_ENTERPRISE: " + @@ -161,6 +181,7 @@ export default async function createConfigAsync() { "\n EXCLUDE_MULTIQC: " + (process.env.EXCLUDE_MULTIQC ? true : false), "\n EXCLUDE_FUSION: " + (process.env.EXCLUDE_FUSION ? true : false), "\n EXCLUDE_WAVE: " + (process.env.EXCLUDE_WAVE ? true : false), + "\n EXCLUDE_MCP: " + (process.env.EXCLUDE_MCP ? true : false), "\n INCLUDE_NEXT: " + (process.env.INCLUDE_NEXT ? true : false), ); @@ -265,6 +286,7 @@ export default async function createConfigAsync() { process.env.EXCLUDE_MULTIQC ? null : docs_multiqc, process.env.EXCLUDE_FUSION ? null : docs_fusion, process.env.EXCLUDE_WAVE ? null : docs_wave, + process.env.EXCLUDE_MCP ? null : docs_mcp, // Disable expensive bundler options. // https://github.com/facebook/docusaurus/pull/11176 @@ -367,6 +389,11 @@ export default async function createConfigAsync() { label: "Fusion", position: "left", }, + { + to: "/mcp", + label: "MCP", + position: "left", + }, { to: "https://training.nextflow.io/latest/", html: 'Nextflow Training ', diff --git a/mcp_docs/mcp_repo b/mcp_docs/mcp_repo new file mode 160000 index 000000000..3b9f88fd7 --- /dev/null +++ b/mcp_docs/mcp_repo @@ -0,0 +1 @@ +Subproject commit 3b9f88fd7a976b1950d6879a9cbb185dc14003f9 diff --git a/mcp_docs/sidebar.json b/mcp_docs/sidebar.json new file mode 100644 index 000000000..26d7ff64b --- /dev/null +++ b/mcp_docs/sidebar.json @@ -0,0 +1,5 @@ +{ + "sidebar": [ + "index" + ] +} From 524716ba20b792a1591169d81a714054933b9ac0 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 10 Dec 2025 14:46:43 +1300 Subject: [PATCH 2/2] Add MCP page --- .gitmodules | 3 - docusaurus.config.js | 6 +- mcp_docs/index.md | 129 ++++++++++++++++++ mcp_docs/mcp_repo | 1 - .../Desktop/ProductSwitcher/index.jsx | 1 + .../HeaderDesktop/NavItems/index.jsx | 7 +- 6 files changed, 138 insertions(+), 9 deletions(-) delete mode 100644 .gitmodules create mode 100644 mcp_docs/index.md delete mode 160000 mcp_docs/mcp_repo diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 393c69e52..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "mcp_docs/mcp_repo"] - path = mcp_docs/mcp_repo - url = https://github.com/seqeralabs/mcp.git diff --git a/docusaurus.config.js b/docusaurus.config.js index 3173e1dde..b4a335190 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -153,7 +153,7 @@ export default async function createConfigAsync() { { id: "mcp", routeBasePath: "/mcp", - path: "mcp_docs/mcp_repo/docs", + path: "mcp_docs", remarkPlugins: [ (await import("remark-code-import")).default, (await require("remark-math")).default, @@ -161,9 +161,7 @@ export default async function createConfigAsync() { (await require("remark-yaml-to-table")).default, ], rehypePlugins: [(await require("rehype-katex")).default], - editUrl: ({ docPath }) => { - return `https://github.com/seqeralabs/mcp/blob/master/docs/${docPath}`; - }, + editUrl: "https://github.com/seqeralabs/docs/tree/master/", sidebarPath: "./mcp_docs/sidebar.json", }, ]; diff --git a/mcp_docs/index.md b/mcp_docs/index.md new file mode 100644 index 000000000..5d3af4372 --- /dev/null +++ b/mcp_docs/index.md @@ -0,0 +1,129 @@ +--- +title: Seqera MCP +description: "Connect AI assistants to Seqera Platform using the Model Context Protocol" +date: "09 Dec 2024" +tags: [mcp, ai, integration] +--- + +Seqera MCP is a [Model Context Protocol](https://modelcontextprotocol.io/) server that enables AI assistants to interact with the Seqera ecosystem. It provides access to Seqera Platform, Wave containers, nf-core modules, and bioinformatics data resources. + +## Features + +- **Seqera Platform integration**: Launch, monitor, and manage Nextflow pipelines +- **Wave container service**: Create containerized environments with conda/pip packages +- **nf-core modules**: Search and execute 1000+ standardized bioinformatics modules +- **Data resources**: Access reference genomes, sequencing data, and scientific literature + +## Remote server + +The hosted Seqera MCP server is available at: + +```console +https://mcp.seqera.io/mcp +``` + +## Authentication + +Seqera MCP supports two authentication methods: + +- **OAuth 2.1** (recommended): Interactive login through Seqera Platform. Your browser opens automatically to authenticate when connecting. +- **Personal Access Token**: Use your Seqera Platform [access token](https://docs.seqera.io/platform-cloud/credentials/overview) as a Bearer token. Useful for clients that don't support OAuth. + +## Client setup + +### Cursor + +Create or edit `~/.cursor/mcp.json`: + +```json +{ + "mcpServers": { + "seqera": { + "url": "https://mcp.seqera.io/mcp" + } + } +} +``` + +Restart Cursor to apply the configuration. On first use, your browser will open for authentication. + +### VS Code + +Create or edit `~/Library/Application Support/Code/User/mcp.json` (macOS) or `%APPDATA%\Code\User\mcp.json` (Windows): + +```json +{ + "servers": { + "seqera": { + "url": "https://mcp.seqera.io/mcp", + "type": "http" + } + } +} +``` + +### Windsurf + +Create or edit `~/.codeium/windsurf/mcp_config.json`: + +```json +{ + "mcpServers": { + "seqera": { + "serverUrl": "https://mcp.seqera.io/mcp" + } + } +} +``` + +### Claude Code + +```bash +claude mcp add seqera --url https://mcp.seqera.io/mcp +``` + +### Claude Desktop + +1. Open Claude Desktop settings +2. Select **Add connectors** +3. Click **Add custom connector** +4. Enter the URL: `https://mcp.seqera.io/mcp` +5. Select **OAuth** as the authentication method + +### OpenAI Codex + +First, enable the MCP client feature in `~/.codex/config.toml`: + +```toml +[features] +rmcp_client = true +``` + +Then add the Seqera MCP server and authenticate: + +```bash +codex mcp add seqera --url https://mcp.seqera.io/mcp +codex mcp login seqera +``` + +### Using Personal Access Token + +For clients that don't support OAuth, add your access token as a header: + +```json +{ + "mcpServers": { + "seqera": { + "url": "https://mcp.seqera.io/mcp", + "headers": { + "Authorization": "Bearer " + } + } + } +} +``` + +## Resources + +- [Model Context Protocol specification](https://modelcontextprotocol.io/) +- [Seqera MCP repository](https://github.com/seqeralabs/seqera-mcp) diff --git a/mcp_docs/mcp_repo b/mcp_docs/mcp_repo deleted file mode 160000 index 3b9f88fd7..000000000 --- a/mcp_docs/mcp_repo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3b9f88fd7a976b1950d6879a9cbb185dc14003f9 diff --git a/src/theme/DocSidebar/Desktop/ProductSwitcher/index.jsx b/src/theme/DocSidebar/Desktop/ProductSwitcher/index.jsx index 28008d1ce..d7641fd02 100644 --- a/src/theme/DocSidebar/Desktop/ProductSwitcher/index.jsx +++ b/src/theme/DocSidebar/Desktop/ProductSwitcher/index.jsx @@ -25,6 +25,7 @@ const products = [ { name: "MultiQC", url: "/multiqc" }, { name: "Wave", url: "/wave" }, { name: "Fusion", url: "/fusion" }, + { name: "MCP", url: "/mcp" }, ]; const ProductSwitcher = ({ isDropdown }) => { diff --git a/src/theme/Navbar/Layout/SeqeraHeader/HeaderDesktop/NavItems/index.jsx b/src/theme/Navbar/Layout/SeqeraHeader/HeaderDesktop/NavItems/index.jsx index 1d5a77f9e..04b889fbb 100644 --- a/src/theme/Navbar/Layout/SeqeraHeader/HeaderDesktop/NavItems/index.jsx +++ b/src/theme/Navbar/Layout/SeqeraHeader/HeaderDesktop/NavItems/index.jsx @@ -86,7 +86,12 @@ const NavItems = ({ isDark = false, hideMenu }) => { Fusion - +
  • + + MCP + +
  • +