A shared AI coding-agent environment for the Imperial College London Neurogenomics lab, with integrated access to Labstep (lab notebook), OneDrive/SharePoint (shared data files), and external scientific AI platforms.
Compatible with any agent that supports the Agent Skills standard — Claude Code, OpenCode, GitHub Copilot, and others.
Tool layer lives in
neurogenomics/lab-mcp. This repo holds the agent layer — skills, APM config, OpenClaw workspace. The underlying clients and MCP servers (Labstep today, SharePoint / Slack / HPC later) live inlab-mcpand are consumed here viapip install lab-mcp.
lab-agents/
├── .github/skills/ # Skills for GitHub Copilot (all 8 skills)
├── lab-skills/skills/ # Skills for Claude Code / OpenCode via APM (all 8 skills)
├── lab-skills/.apm/ # APM context and instructions loaded into every agent session
├── openclaw-workspace/ # OpenClaw agent persona and workspace config (see below)
├── completeness-checker/ # Automated Labstep experiment completeness checker (see below)
├── support/ # Shared assets (Experiment Summary Word template)
└── docs/planning/ # Feature plans and design specs
Two skill directories:
.github/skills/is where GitHub Copilot looks for skills.lab-skills/skills/is the APM-managed package installed by Claude Code and OpenCode. Both contain the same 8 skills — always update both when editing a skill.
- An AI coding agent CLI (e.g. Claude Code, OpenCode, GitHub Copilot)
- APM installed
- Labstep API key
- Install with APM:
apm install neurogenomics/lab-agents/lab-skills apm compile --target all
- Add your Labstep API key to
.env:LABSTEP_API_KEY=your_key_here
- Install the shared Labstep client:
This puts four commands on your PATH:
uv tool install "lab-mcp @ git+https://github.com/neurogenomics/lab-mcp.git"labstep,labstep-preflight,labstep-mirror,labstep-mcp. - Verify credentials:
You should see
labstep-preflight
"stage": "ready". - Launch your agent from the repo directory and ask what skills are available.
Eight skills are available. Each lives in both .github/skills/<name>/ and lab-skills/skills/<name>/.
Query, create, and manage experiments, protocols, inventory, and other entities in the Labstep electronic lab notebook.
> Show me the last 10 experiments
> What protocols are linked to SK543?
> Search for experiments mentioning "lysis buffer"
> List all resources tagged "antibody"
Summarise key findings and researcher thoughts from Labstep experiments. Export to Excel.
> Summarise findings from all experiments in January 2026
> What were the key results from the IVT optimisation experiments?
> Give me a research summary across all lysis buffer experiments
> Export experiment summaries to Excel
Read and extract RNA quantification data (Qubit, TapeStation, qPCR) from experiment folders on OneDrive.
> What are the Qubit concentrations for SK443?
> Show me the TapeStation results for SK134
> Compare RNA Qubit yields between SK443 and SK447
> Compare HiScribe vs RiboMax RNA yields across all IVT experiments
> Are there any TapeStation warnings or alerts in SK172?
> What are the TapeStation peak sizes for each sample in SK297?
Read-only access to lab data files from synced OneDrive (SharePoint) folders. Auto-discovers all shared libraries, or set DATA_DIR to your data folder.
> List all experiment folders in the scRNA-seq library
> Find the experiment folder for SK457
> What files are in the SK443 folder?
> Show me the Metadata.xlsx for SK297
Generate a filled-in Experiment Summary .docx from Labstep metadata and OneDrive QC data. User-invocable via /experiment-summary.
> /experiment-summary SK443
> Write up an experiment summary for SK297
> Generate the experiment summary for "IVT kit comparison"
Generate and modify PowerPoint presentations from data or text.
> Create a slide deck summarising the IVT optimisation results
> Add a slide with the Qubit bar chart to my presentation
> Read the contents of results_deck.pptx
Process voice notes, photos, and data files delivered via Telegram or Slack, then post them to the correct Labstep experiment with context-aware descriptions (transcription via Fireworks Whisper).
> [sends audio recording] Post this note to SK592
> [sends image] Attach this EVOS image to SK550
> [sends data file] Upload this to the right experiment
Dependencies: FIREWORKS_API_KEY in .env, ffmpeg, Pillow, pandas.
Run Edison Scientific tasks via edison-client — cited literature synthesis, experimental dataset analysis, novelty checks, and cheminformatics.
> Search the literature for CRISPR delivery methods in primary neurons
> Analyse this RNA-seq dataset for differentially expressed pathways
> Check the novelty of our IVT optimisation approach
> What ADMET properties does this molecule have?
Dependencies: EDISON_API_KEY in .env, uv pip install edison-client.
The lab-mcp package provides one canonical client for all Labstep access. Three interfaces, one codebase.
labstep experiments # list ALL (auto-paginates)
labstep experiments --search "lysis buffer"
labstep experiments -n 5 # cap results
labstep experiment SK592 # detail by SK number
labstep reagents SK592 # inventory fields
labstep protocols --search "buffer prep"
labstep resources --search "antibody"
labstep --json experiments # machine-readable outputclaude mcp add labstep labstep-mcpOr in an MCP JSON config (Claude Desktop, OpenCode, etc.):
{ "mcpServers": { "labstep": { "command": "labstep-mcp" } } }from lab_mcp.labstep import LabstepClient
client = LabstepClient()
rows = client.list_experiments(search_query="lysis", count=None) # all pages
detail = client.find_experiment_by_sk("SK592")
client.add_experiment_comment(detail["id"], "Reviewed 2026-04-24")Resolved in order:
LABSTEP_API_KEYenvironment variable~/.config/lab-mcp/credentials.json—{"api_key": "lsp_..."}~/Projects/lab-agents/.env(legacy fallback)
Configuration for OpenClaw — an agent persona layer that gives the assistant a persistent identity, soul, and heartbeat. The lab's OpenClaw persona is A Cat Named Glia. If you're not using OpenClaw, this directory can be ignored.
A Python tool that runs on GitHub Actions every weekday at 09:00 UTC. It fetches all completed Labstep experiments, scores them for documentation completeness (aims, methods, discussion, protocols), and posts a Slack notification for any that are missing required sections.
Required secrets (set in GitHub repository settings):
LABSTEP_API_KEYSLACK_WEBHOOK_URL
To run manually: python completeness-checker/checker.py (needs both env vars set).
Contains Experiment Summary Template.docx — the Word template used by the experiment-summary skill to generate filled-in experiment write-ups.