Labsco
grebenyyk logo

SciPilot

from grebenyyk

Natural language interface for scientific command-line tools via MCP

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

SciPilot

Natural language interface for scientific command-line tools via Model Context Protocol (MCP).

scipilot

SciPilot bridges the gap between natural language and scientific CLI tools. Define your tool once in YAML, then let LLMs handle the rest โ€” parameters, file paths, output parsing, the works. Works for any command-line worth talking to.

Tool Descriptor Format

You write a tool descriptor โ€” a YAML file that tells SciPilot:

โ€ข What your tool expects (inputs, types, defaults) โ€ข How to build the command (templates) โ€ข Where to find the output (file paths, regex patterns) SciPilot exposes these as MCP tools that any LLM can call.

tool:
  name: mytool
  binary: mytool
  
operations:
  - name: run_simulation
    description: "Run a simulation"
    inputs:
      - name: input_file
        type: file
        required: true
    outputs:
      - name: result
        path: "output.txt"
        extract_pattern: "Result: ([0-9.]+)"

See examples/ for complete tool descriptors.

โš ๏ธ Security Note: Tool YAML files execute with full shell privileges. Only load tool descriptors you trust and have reviewed. User inputs are substituted directly into shell command templates.

Project Structure

scipilot/
โ”œโ”€โ”€ server.py          # MCP server entry point
โ”œโ”€โ”€ tool_loader.py     # YAML parsing, tool discovery
โ”œโ”€โ”€ executor.py        # Subprocess execution, output parsing
โ””โ”€โ”€ models.py          # Dataclasses for tool descriptors

tools/                 # Your tool descriptors (gitignored)
examples/              # Example descriptors

Development

# Run tests
pytest

# Type checking
mypy scipilot/

# Format
ruff format .