A Model Context Protocol (MCP) server that exposes the NGS360 REST API as tools for AI assistants.
This MCP server wraps the NGS360 bioinformatics platform API, providing tools for:
| Domain | Tools | Description |
|---|---|---|
| Runs | 14 tools | Sequencing run CRUD, sample sheets, metrics, demultiplexing |
| Jobs | 6 tools | AWS Batch job submission, monitoring, and logs |
| Projects | 11 tools | Project CRUD, samples, pipeline actions, vendor ingestion |
| Files | 7 tools | File record management, S3 browsing |
| Search | 1 tool | Cross-index search (projects, runs, samples) |
| Workflows | 11 tools | Workflow identity, versions, aliases, deployments |
| Pipelines | 5 tools | Pipeline CRUD, workflow associations |
| QC Metrics | 5 tools | QC record creation, search, retrieval |
| Vendors | 5 tools | Vendor CRUD |
| Settings | 3 tools | Application settings management |
| Platforms | 3 tools | Workflow execution platform registry |
| Manifest | 2 tools | Manifest retrieval and validation |
cd mcp-server
pip install -e .Or with uv:
cd mcp-server
uv pip install -e .The server uses environment variables for configuration:
| Variable | Default | Description |
|---|---|---|
NGS360_API_URL |
http://localhost:8000 |
Base URL of the NGS360 API |
NGS360_API_TOKEN |
(empty) | Bearer token for authentication |
ngs360-mcp-serverAdd to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ngs360": {
"command": "ngs360-mcp-server",
"env": {
"NGS360_API_URL": "https://your-ngs360-api.example.com",
"NGS360_API_TOKEN": "your-bearer-token"
}
}
}
}Add to your MCP settings:
{
"mcpServers": {
"ngs360": {
"command": "ngs360-mcp-server",
"env": {
"NGS360_API_URL": "https://your-ngs360-api.example.com",
"NGS360_API_TOKEN": "your-bearer-token"
}
}
}
}mcp-server/
├── pyproject.toml
├── README.md
└── ngs360_mcp_server/
├── __init__.py
├── client.py # HTTP client wrapper for the NGS360 API
├── server.py # MCP server entry point
└── tools/
├── __init__.py
├── runs.py # Sequencing run tools
├── jobs.py # Batch job tools
├── projects.py # Project & sample tools
├── files.py # File management tools
├── search.py # Cross-index search tools
├── workflows.py # Workflow management tools
├── pipelines.py # Pipeline management tools
├── qcmetrics.py # QC metrics tools
├── vendors.py # Vendor management tools
├── settings.py # Settings tools
├── platforms.py # Platform registry tools
└── manifest.py # Manifest tools
npx @modelcontextprotocol/inspector ngs360-mcp-server- Create or edit a file in
ngs360_mcp_server/tools/ - Define a
register_*_tools(mcp, client)function - Register it in
ngs360_mcp_server/server.py
Each tool is a decorated async function:
@mcp.tool()
async def my_new_tool(param1: str, param2: int = 10) -> dict:
"""Tool description shown to the AI assistant.
Args:
param1: Description of param1
param2: Description of param2
"""
return await client.get("/my/endpoint", params={"p": param1})This MCP server covers the full NGS360 API surface at /api/v1/*:
POST/GET /runs— Create and list sequencing runsGET/PUT /runs/{run_id}— Get/update a runGET /runs/{run_id}/samplesheet— Sample sheetGET /runs/{run_id}/metrics— Demux metricsGET/POST /runs/demultiplex— Demux workflowsPOST/GET/DELETE /runs/{run_id}/samples— Sample associationsPOST/GET /jobs— Submit and list batch jobsGET/PUT /jobs/{job_id}— Get/update jobGET /jobs/{job_id}/log— Job logsPOST/GET /projects— Create and list projectsGET/PUT/PATCH /projects/{project_id}— Project CRUDPOST/GET /projects/{project_id}/samples— Project samplesPOST /projects/{project_id}/actions/submit— Pipeline submissionPOST/GET /files— File record managementGET/PATCH/DELETE /files/{file_id}— File operationsGET /files/list— S3 browserGET /search— Global searchPOST/GET /workflows— Workflow identityPOST/GET /workflows/{id}/versions— VersionsPUT/GET/DELETE /workflows/{id}/aliases— AliasesPOST/GET/DELETE /workflows/.../deployments— DeploymentsPOST/GET /pipelines— Pipeline CRUDPOST/DELETE /pipelines/{id}/workflows— Workflow membershipPOST/GET/DELETE /qcmetrics— QC recordsGET/POST /qcmetrics/search— QC searchPOST/GET/PUT/DELETE /vendors— Vendor managementGET/PUT /settings— Application settingsPOST/GET /platforms— Platform registryGET/POST /manifest— Manifest operations