diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 65e67a41e..b4a335190 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -148,6 +148,24 @@ export default async function createConfigAsync() {
},
];
+ const docs_mcp = [
+ "@docusaurus/plugin-content-docs",
+ {
+ id: "mcp",
+ routeBasePath: "/mcp",
+ path: "mcp_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: "https://github.com/seqeralabs/docs/tree/master/",
+ sidebarPath: "./mcp_docs/sidebar.json",
+ },
+ ];
+
console.log(
"\n EXCLUDE_CHANGELOG: " + (process.env.EXCLUDE_CHANGELOG ? true : false),
"\n EXCLUDE_PLATFORM_ENTERPRISE: " +
@@ -161,6 +179,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 +284,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 +387,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/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/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"
+ ]
+}
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
+
+
+