SciPilot

Interface de linguagem natural para ferramentas científicas de linha de comando via MCP

Documentação

SciPilot

Interface de linguagem natural para ferramentas científicas de linha de comando via Model Context Protocol (MCP).

scipilot Python License: MIT MCP

O SciPilot preenche a lacuna entre linguagem natural e ferramentas científicas de CLI. Defina sua ferramenta uma vez em YAML e deixe os LLMs cuidarem do resto — parâmetros, caminhos de arquivo, análise de saída, tudo. Funciona para qualquer linha de comando que valha a pena conversar.

Início Rápido

git clone https://github.com/grebenyyk/scipilot
cd scipilot
pip install -e .
scipilot --tools-dir ./tools

Uso

  1. Adicione descritores de ferramentas a tools/ (veja examples/raspa.yaml)
  2. Conecte o cliente MCP (Claude Desktop, VS Code, etc.)
  3. Pergunte em linguagem natural:
    • "Execute um cálculo de fração de vazio de hélio em MIL-47 a 298 K"
    • "Compare os resultados das simulações de ontem"

Formato do Descritor de Ferramenta

Você escreve um descritor de ferramenta — um arquivo YAML que informa ao SciPilot:

• O que sua ferramenta espera (entradas, tipos, padrões) • Como construir o comando (modelos) • Onde encontrar a saída (caminhos de arquivo, padrões regex) O SciPilot expõe esses como ferramentas MCP que qualquer LLM pode chamar.

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.]+)"

Consulte examples/ para descritores de ferramentas completos.

⚠️ Nota de Segurança: Arquivos YAML de ferramentas são executados com privilégios totais de shell. Carregue apenas descritores de ferramentas em que você confia e que tenha revisado. As entradas do usuário são substituídas diretamente nos modelos de comando do shell.

Estrutura do Projeto

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

Desenvolvimento

# Run tests
pytest

# Type checking
mypy scipilot/

# Format
ruff format .

Licença

MIT