# LC-MS Worklist Builder

Builds and checks LC-MS sample queues, then writes files for import into vendor software. Use it to prepare a run list without starting an acquisition.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 23
- Author: K-Dense-AI
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/K-Dense-AI/lab-instrument-mcps/tree/HEAD/servers/chemistry/ms-worklist
- Updated: 2026-09-26
- HTML: https://affpapa.org/en/nevibecode/mcp/lc-ms-worklist-builder

## What it does

The server creates a draft from sample details and settings such as methods, injection volume, tray positions, and data-file naming. You can add samples, place blanks and QC injections, shuffle run order with a saved seed, validate the draft, and export an import file for MassLynx, SCIEX OS, MassHunter, or Xcalibur. It can also read an existing file from the output folder so you can edit it or export it for another vendor format.

Validation checks required fields, file names, tray positions, injection volume, and method extensions. Errors stop export; warnings do not. The server handles files only. It does not control the mass spectrometer or begin data acquisition, so a person imports the exported file into the vendor software.

You need `uvx` and an output folder; the default is `./worklists`. Copy existing worklists or vendor templates into that folder before editing them. Files are not replaced unless `overwrite=true` is passed, and `--read-only` restricts the available tools to inspection and validation.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `LABMCP_ADDRESS`, `LABMCP_SIMULATE`, `LABMCP_READ_ONLY`, `LABMCP_LIMITS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> --transport stdio ms-worklist -- uvx labmcp-ms-worklist
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ms-worklist <command>

### Codex

**Platform CLI**
```bash
codex mcp add ms-worklist --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> -- uvx labmcp-ms-worklist
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ms-worklist <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ms-worklist": {
            "command": "uvx",
            "args": [
                "labmcp-ms-worklist"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ms-worklist <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "ms-worklist": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "labmcp-ms-worklist"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ms-worklist <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e LABMCP_ADDRESS=<LABMCP_ADDRESS> -e LABMCP_SIMULATE=<LABMCP_SIMULATE> -e LABMCP_READ_ONLY=<LABMCP_READ_ONLY> -e LABMCP_LIMITS=<LABMCP_LIMITS> ms-worklist uvx labmcp-ms-worklist
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-ms-worklist <command>

## When to use it
- Create an LC-MS sample queue
- Place blanks and QC injections in a run list
- Check tray positions and worklist fields
- Convert a worklist between vendor formats
- Write an import file for acquisition software

## Example prompts
- Build an LC-MS worklist for these samples and export it for MassLynx.
- Add blanks and QC injections, shuffle the run order, then validate the draft.
- Read the worklist from the output folder and prepare it for SCIEX OS.

## Similar
- [Zotero MCP](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — MCP server · ★ 5585
- [arxiv-mcp-server](https://affpapa.org/en/nevibecode/mcp/arxiv-mcp-server.md) — MCP server · ★ 3235
- [PaperBanana](https://affpapa.org/en/nevibecode/mcp/paperbanana.md) — MCP server · ★ 2418
- [MATLAB MCP Server](https://affpapa.org/en/nevibecode/mcp/matlab-mcp-server.md) — MCP server · ★ 1723
- [Hex Research](https://affpapa.org/en/nevibecode/mcp/hex-research.md) — MCP server · ★ 584
- [DocsAgent — Zotero, Obsidian & Apple Notes MCP Server](https://affpapa.org/en/nevibecode/mcp/docsagent-zotero-obsidian-apple-notes-mcp-server.md) — MCP server · ★ 578

From the same set: [k-dense-ai/lab-instrument-mcps](https://affpapa.org/en/nevibecode/by/k-dense-ai/lab-instrument-mcps.md) — 15 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
