# SCAPS-1D (pypi · scaps-mcp)

Design, simulate, fit and sanity-check thin-film solar cells with SCAPS-1D on your own installation.

- Trust score: 66/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `scaps-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp.md), [page](https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp)

## Channel facts

- Registry: `pypi`
- Package: `scaps-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 28 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 9 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 51/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4144 tokens (~259/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 86% of tool parameters carry a description.
  - Structured output schemas are declared (94% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the SCAPS-1D MCP server?

SCAPS-1D runs locally as a PyPI package, launched with uvx scaps-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add asiff00-scaps-mcp -- uvx scaps-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "asiff00-scaps-mcp": {
      "command": "uvx",
      "args": [
        "scaps-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "asiff00-scaps-mcp": {
      "command": "uvx",
      "args": [
        "scaps-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add asiff00-scaps-mcp -- uvx scaps-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "asiff00-scaps-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "scaps-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add asiff00-scaps-mcp --command uvx --arg scaps-mcp
```

### Hermes

```yaml
mcp_servers:
  asiff00-scaps-mcp:
    command: "uvx"
    args: ["scaps-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "asiff00-scaps-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "scaps-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add asiff00-scaps-mcp -t stdio -c uvx -a scaps-mcp
```

### Other

```json
{
  "mcpServers": {
    "asiff00-scaps-mcp": {
      "command": "uvx",
      "args": [
        "scaps-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-11-04 (score 51, −15)

- [security regression] Malware scan: pass → unverified

### 2026-11-03 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-30 (score 51, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-29 (score 66, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-26 (score 51)

First indexed and scored.

## MCP tools (16)

### `scaps_status` (~30 tokens)

SCAPS installation status

Report the SCAPS installation in use and how it was found, other installations, run folder and jobs.

Output parameters:

- `active_jobs` (array)
- `busy` (boolean)
- `executable` (string)
- `other_installations` (array)
- `plotting` (boolean)
- `runs_dir` (string)
- `scaps_home` (string)
- `scaps_home_source` (string)
- `scaps_version` (string)
- `script_commands` (integer)
- `timeout_s` (number)
- `wine_prefix`

### `scaps_list_files` (~68 tokens)

List SCAPS files

List files in a SCAPS data folder: definitions, spectra, absorption, grading, generation and more.

Input parameters:

- `contains`: Case-insensitive substring filter.
- `kind` (string): SCAPS data folder to list.
- `limit` (integer)
- `offset` (integer)

Output parameters:

- `files` (array)
- `kind` (string)
- `total` (integer)

### `scaps_script_reference` (~91 tokens)

Search SCAPS script commands

Search the command list of the installed SCAPS version.

layer, defect, interface and IFdefect stand for numbered forms (layer2, defect1); contact stands for
contactleft or contactright; <none> marks commands without a value.

Input parameters:

- `limit` (integer)
- `query` (string, required): Words to match, e.g. 'defect Ntotal' or 'action qe'.

Output parameters:

- `commands` (array)
- `query` (string)
- `source`
- `total` (integer)

### `scaps_describe_device` (~94 tokens)

Describe a SCAPS device

Read a .def file: layers, bulk defects, interfaces with band offsets, contacts and realism checks.

Fields use script names and units, so any value can be passed back as a parameter
(layers[0].NA -> 'layer1.NA'). Graded layers report their base value.

Input parameters:

- `definition` (string, required): Definition file in SCAPS def/, e.g. 'example CIGS.def'.

Output parameters:

- `absorber_layer`
- `checks` (array)
- `contacts` (object)
- `definition` (string)
- `interfaces` (array)
- `layers` (array)
- `sq_limit_mode`
- `units` (object)
- `working_point` (object)

### `scaps_edit_device` (~249 tokens)

Edit a SCAPS device

Change a device and save it as a .def file: parameters, layers, defects, materials and solver settings.

Input parameters:

- `base` (string, required): Existing definition to start from.
- `materials` (object): Load .material files into layers before the operations, e.g. {1: 'CIGSe.material'}.
- `numerics` (object): Numerical settings stored in the .def 'convergence' section, which scripts cannot set, e.g. {'maxiter': 2000, 'clamp_psi': 0.25, 'termination_psi': 1e-4, 'defectdiscretisations': 9}.
- `operations` (object): Ordered set commands, including structural ones: 'layer2.duplicate', 'layer3.remove', 'layer1.defect1.duplicate', 'layer1.defect2.gauss', 'interface1.2_default_IFdefects', 'layer1.Eg.file': 'profile.…
- `overwrite` (boolean): Replace an existing file of that name.
- `save_as` (string, required): New definition name, saved in SCAPS def/.

Output parameters:

- `definition` (string)
- `device`
- `notes` (array)
- `run_id` (string)

### `scaps_create_device` (~497 tokens)

Create a SCAPS device

Build a new device from scratch and save it as a .def file.

A layer may name a .material file ('material': 'CIGSe.material'); its properties apply first and
explicit keys override them.

Input parameters:

- `interfaces` (object): Interface defects by interface number (1 lies between layers 1 and 2), up to 3 each, e.g. {1: [{'Ntotal': 1e10, 'singledonor': null}]}.
- `layers` (array, required): Layers from the left (back) contact. Each maps set-command suffixes to values, e.g. {'name': 'absorber', 'thickness': 0.5, 'Eg': 1.55, 'chi': 3.9, 'epsilon': 10, 'NC': 2.2e18, 'NV': 1.8e19, 'mun': 2,…
- `left_contact` (object): e.g. {'workfunction': 5.1, 'Sn': 1e5, 'Sp': 1e7}; a work function switches flat band off.
- `name` (string, required): New definition name, saved in SCAPS def/.
- `numerics` (object): Numerical settings stored in the .def 'convergence' section, which scripts cannot set, e.g. {'maxiter': 2000, 'clamp_psi': 0.25, 'termination_psi': 1e-4, 'defectdiscretisations': 9}.
- `options` (object): Other set commands, e.g. {'illumination.fromleft': null, 'numerical.Shockley-Queisser_limit.always': null}.
- `overwrite` (boolean)
- `right_contact` (object): As left_contact.

Output parameters:

- `definition` (string)
- `device`
- `notes` (array)
- `run_id` (string)

### `scaps_simulate` (~539 tokens)

Run a SCAPS simulation

Simulate a device: J-V metrics, QE, C-V, C-f and spatial profiles, with analysis and realism checks.

Analysis gives the absorber's Shockley-Queisser limit, QE-integrated Jsc and a Mott-Schottky fit of
C-V. Overrides apply to this run only; files stay available through scaps_results and scaps_plot.

Input parameters:

- `actions` (object): SCAPS action commands, e.g. {'iv.startV': 0, 'iv.stopV': 1.2, 'iv.increment': 0.02, 'qe.startlambda': 300, 'cf.points.per.decade': 5, 'intensity.ND': 1, 'spectrumcutoff.on': null, 'spectrumcutoff.lon…
- `definition` (string, required): Definition file in SCAPS def/, e.g. 'example CIGS.def'.
- `frequency_hz`: Working point frequency in Hz.
- `illumination` (string): Calculate under the spectrum or in the dark.
- `measurements` (array): Measurements: iv (J-V), qe, cv, cf. May be empty when profiles are requested.
- `parameters` (object): Ordered SCAPS set commands in script units, e.g. {'layer1.thickness': 2, 'layer1.NA': 1e16, 'layer1.defect1.Ntotal': 1e14, 'layer1.defect1.singleacceptor': null, 'interface1.IFdefect1.Ntotal': 1e10,…
- `profiles` (array): Spatial results at the working point voltage: eb (bands, quasi-Fermi levels, carriers, field, currents, generation and recombination rates) and genrec (occupation of every defect level); ac (small si…
- `response_format` (string): detailed adds the key columns of each curve.
- `spectrum`: Spectrum file in SCAPS spectrum/; default AM1.5G 1 sun.
- `temperature_k`: Working point temperature in K.
- `voltage_v`: Working point bias in V.
- `wait_seconds` (number): Wait this long for the result; longer runs continue as a job.

Output parameters:

- `analysis`
- `checks` (array)
- `curves` (array)
- `definition` (string)
- `files` (array)
- `measurements` (array)
- `metrics`
- `profiles` (array)
- `progress`
- `run_id` (string)
- `scaps_errors` (array)
- `seconds`
- `status` (string)

### `scaps_batch` (~563 tokens)

Batch SCAPS simulations

Run one SCAPS session over many parameter values and tabulate the J-V metrics of every point.

Covers thickness, doping, defect, band offset, temperature, intensity and bias studies. Every point's
files are kept for scaps_results and scaps_plot.

Input parameters:

- `actions` (object): SCAPS action commands, e.g. {'iv.startV': 0, 'iv.stopV': 1.2, 'iv.increment': 0.02, 'qe.startlambda': 300, 'cf.points.per.decade': 5, 'intensity.ND': 1, 'spectrumcutoff.on': null, 'spectrumcutoff.lon…
- `definition` (string, required): Definition file in SCAPS def/, e.g. 'example CIGS.def'.
- `illumination` (string): Calculate under the spectrum or in the dark.
- `measurements` (array): Measurements: iv (J-V), qe, cv, cf. May be empty when profiles are requested.
- `mode` (string): grid runs every combination; zip pairs the lists element-wise.
- `parameters` (object): Ordered SCAPS set commands in script units, e.g. {'layer1.thickness': 2, 'layer1.NA': 1e16, 'layer1.defect1.Ntotal': 1e14, 'layer1.defect1.singleacceptor': null, 'interface1.IFdefect1.Ntotal': 1e10,…
- `profiles` (array): Spatial results at the working point voltage: eb (bands, quasi-Fermi levels, carriers, field, currents, generation and recombination rates) and genrec (occupation of every defect level); ac (small si…
- `spectrum`: Spectrum file in SCAPS spectrum/; default AM1.5G 1 sun.
- `temperature_k`: Working point temperature in K.
- `variables` (object, required): Set or action keys and their values, e.g. {'layer1.thickness': [0.3, 0.5, 1]} or {'workingpoint.temperature': [280, 300, 320], 'intensity.ND': [0, 1, 2]}.
- `wait_seconds` (number): Wait this long for the result; longer runs continue as a job.

Output parameters:

- `checks` (array)
- `definition` (string)
- `measurements` (array)
- `points` (array)
- `progress`
- `run_id` (string)
- `scaps_errors` (array)
- `seconds`
- `status` (string)
- `variables` (array)

### `scaps_jobs` (~85 tokens)

Manage SCAPS jobs

List recent runs, or get, wait for or cancel one. A finished job includes its full result.

Input parameters:

- `action` (string): What to do.
- `job_id`: Job (run) id for status, wait and cancel.
- `limit` (integer)
- `wait_seconds` (number): Wait this long for the result; longer runs continue as a job.

Output parameters:

- `jobs` (array)
- `result`

### `scaps_results` (~138 tokens)

Read SCAPS results

Return one table of a result file: J-V, QE, C-V, C-f curves or band, generation and AC profiles.

Input parameters:

- `columns`: Columns to keep; default all.
- `file`: Result file of the run; omit to list the files.
- `max_rows` (integer)
- `offset` (integer)
- `run_id` (string, required): Run id from scaps_simulate, scaps_batch or scaps_run_script.
- `step` (integer): Keep every n-th row to thin long profiles.
- `table`: Table title ('bulk', 'interface') or index; default the main table.

Output parameters:

- `columns` (array)
- `file` (string)
- `info` (object)
- `kind`
- `offset` (integer)
- `rows` (array)
- `run_id` (string)
- `tables` (array)
- `title`
- `total_rows` (integer)

### `scaps_plot` (~125 tokens)

Plot SCAPS results

Render result curves as a PNG image. Requires the optional 'plot' extra.

Input parameters:

- `files` (array, required): Result files of the run to overlay.
- `log_x` (boolean)
- `log_y` (boolean)
- `run_id` (string, required): Run id.
- `table`: Table title or index, as in scaps_results.
- `title`
- `width_px` (integer)
- `x`: X column; default the natural axis of the file type.
- `y`: Y columns; default the key column of the file type.

### `scaps_run_script` (~148 tokens)

Run a SCAPS script

Run a SCAPS script for workflows beyond the other tools: recorder, curve fitting, math, loops, tandem.

The server prepends quit and error-log settings and 'clear all'. Commands are checked against the
installed SCAPS; file names must be bare; system commands are rejected. Results saved with
'save results.<kind> name' are collected into the run.

Input parameters:

- `script` (string, required): SCAPS script text, one command per line.
- `timeout_s`: Override SCAPS_TIMEOUT.
- `validate_only` (boolean): Only check the script and report problems.
- `wait_seconds` (number): Wait this long for the result; longer runs continue as a job.

Output parameters:

- `files` (array)
- `problems` (array)
- `progress`
- `run_id` (string)
- `scaps_errors` (array)
- `seconds`
- `status` (string)
- `warnings` (array)

### `scaps_sq_limit` (~77 tokens)

Shockley-Queisser limit

Detailed-balance Jsc, Voc, FF and efficiency limits for given band gaps under a SCAPS spectrum.

Input parameters:

- `band_gaps_ev` (array, required): Band gaps in eV.
- `spectrum`: Spectrum file in SCAPS spectrum/; default AM1.5G 1 sun.
- `temperature_k` (number)

Output parameters:

- `limits` (array)
- `spectrum` (string)

### `scaps_import_file` (~126 tokens)

Import a SCAPS file

Add a SCAPS file someone shared (device .def, .material, .abs, spectrum, measurement...) to the installation.

Definitions and materials are parsed to confirm they are valid, and files they reference but that are
missing (absorption, grading, filter) are listed.

Input parameters:

- `content` (string, required): Full text of the file.
- `kind` (string, required): File type; decides the SCAPS folder.
- `name` (string, required): File name with its SCAPS extension, e.g. 'perovskite cell.def'.
- `overwrite` (boolean)

Output parameters:

- `file` (string)
- `kind` (string)
- `missing_references` (array)
- `summary` (object)

### `scaps_write_data` (~429 tokens)

Write a SCAPS input file

Write numeric data as a SCAPS input file with the right format and units.

Use it for measured absorption (alpha or extinction coefficient k), custom spectra, external optical
generation profiles, contact filters, grading profiles and measurement files for comparison.

Input parameters:

- `area_cm2` (number): measurement only.
- `bias_v`: measurement only.
- `dark` (boolean): measurement only.
- `extra`: measurement only: conductance G in S.
- `frequency_hz`: measurement only.
- `interpolation`: grading only.
- `kind` (string, required): Input file type.
- `name` (string, required): File name; the SCAPS extension is added if missing.
- `normalise_w_m2`: spectrum only: scale total power.
- `note`: Source or description, written as comment lines.
- `overwrite` (boolean)
- `pin_mw_cm2`: measurement only.
- `position` (string): grading only.
- `quantity`: absorption: alpha_per_cm (default), alpha_per_m or k; spectrum: irradiance_w_m2_nm (default) or power_w_m2; generation: per_cm3_s (default) or per_m3_s; grading: the property, e.g. composition, Eg, N…
- `shared` (boolean): grading only: one profile over adjacent layers.
- `temperature_k`: measurement only.
- `x` (array, required): absorption: wavelength or photon energy (x_unit); spectrum, filter: wavelength nm; generation: position um; grading: position um, relative position or composition; measurement: V (iv, cv), Hz (cf) or…
- `x_unit` (string): absorption only: unit of x, wavelength or photon energy.
- `y` (array, required): absorption: alpha or k (see quantity); spectrum: W/m2/nm or W/m2 per point; generation: G; filter: % transmission or reflection; grading: property in script units; measurement: mA, nF or QE %.

Output parameters:

- `file` (string)
- `folder` (string)
- `kind` (string)
- `points` (integer)

### `scaps_optimize` (~673 tokens)

Fit or optimise a SCAPS device

Fit device parameters to measured curves, or optimise efficiency, Voc, Jsc or FF, by bounded Nelder-Mead.

Replaces the GUI-only SCAPS curve fitter and supports several measurements at once (light and dark J-V,
QE, C-V). Each simplex step is one SCAPS session per measurement condition; long runs continue as a
job past wait_seconds, so poll with scaps_jobs.

Input parameters:

- `actions` (object): SCAPS action commands, e.g. {'iv.startV': 0, 'iv.stopV': 1.2, 'iv.increment': 0.02, 'qe.startlambda': 300, 'cf.points.per.decade': 5, 'intensity.ND': 1, 'spectrumcutoff.on': null, 'spectrumcutoff.lon…
- `definition` (string, required): Definition file in SCAPS def/, e.g. 'example CIGS.def'.
- `goal` (string, required): fit measured curves, maximise or minimise a J-V metric, or reach a target value.
- `max_evaluations` (integer)
- `measured` (array): For fit: curves to match together, e.g. [{'kind': 'iv', 'file': 'Numos Ex 1 light.iv'}, {'kind': 'iv', 'x': [...], 'y': [...], 'illumination': 'dark', 'log': true, 'weight': 1}]. Files come from SCAP…
- `metric`: Metric for maximize, minimize and target.
- `parameters` (object): Ordered SCAPS set commands in script units, e.g. {'layer1.thickness': 2, 'layer1.NA': 1e16, 'layer1.defect1.Ntotal': 1e14, 'layer1.defect1.singleacceptor': null, 'interface1.IFdefect1.Ntotal': 1e10,…
- `spectrum`: Spectrum file in SCAPS spectrum/; default AM1.5G 1 sun.
- `target`: Target value of the metric for goal 'target'.
- `temperature_k`: Working point temperature in K.
- `variables` (object, required): Set or action keys to vary with bounds, e.g. {'layer1.defect1.Ntotal': {'min': 1e12, 'max': 1e16, 'log': true}, 'layer2.thickness': {'min': 0.03, 'max': 0.12, 'start': 0.05}}.
- `wait_seconds` (number): Wait this long for the result; longer runs continue as a job.

Output parameters:

- `best` (object)
- `best_metrics`
- `best_value`
- `checks` (array)
- `evaluations` (integer)
- `history` (array)
- `objective` (string)
- `progress`
- `run_id` (string)
- `status` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp#diagnostics

## Score history

- 2026-11-05: 66
- 2026-11-04: 51
- 2026-11-03: 66
- 2026-11-02: 51
- 2026-11-01: 51
- 2026-10-31: 51
- 2026-10-30: 51
- 2026-10-29: 66
- 2026-10-28: 51
- 2026-10-27: 51
- 2026-10-26: 51

## Common questions

### What is the SCAPS-1D MCP server?

SCAPS-1D is an MCP server listed in the public MCP registry as io.github.asiff00/scaps-mcp. Design, simulate, fit and sanity-check thin-film solar cells with SCAPS-1D on your own installation. This page covers its PyPI package (scaps-mcp).

### Is the SCAPS-1D MCP server safe to use?

SCAPS-1D scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SCAPS-1D MCP server expose?

SCAPS-1D exposes 16 tools: scaps_status, scaps_list_files, scaps_script_reference, scaps_describe_device, scaps_edit_device, and 11 more. Their descriptions and schemas cost roughly 3,932 tokens of context every time the server is loaded.

### Is the SCAPS-1D MCP server still maintained?

SCAPS-1D is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the SCAPS-1D MCP server under?

SCAPS-1D declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/scaps-mcp/
- Socket report: https://socket.dev/pypi/package/scaps-mcp
- Repository: https://github.com/asiff00/scaps-mcp
- Changelog RSS feed: https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp.json
- HTML version of this page: https://verifymcp.io/servers/asiff00-scaps-mcp/scaps-mcp
