Skip to main content
Glama
Pankaj-Deswal

battery-analyzer-mcp

README.md
# Battery Analyzer MCP Server

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/docs/getting-started/intro) server that exposes Dunn and GITT battery analysis calculations to AI assistants like Cursor and Claude Desktop.

This package is **fully standalone** — calculation code is copied here and does not import from `battery-analyzer/`.

## Tools


| Tool                   | Description                                                   |
| ---------------------- | ------------------------------------------------------------- |
| `list_battery_methods` | List available methods and expected Excel input formats       |
| `list_data_files_tool` | List `.xlsx` files in the data folder                         |
| `calculate_dunn`       | Run Dunn method (K1, K2, b values) on cyclic voltammetry data |
| `calculate_gitt`       | Run GITT method (diffusion coefficients) on titration data    |




## Data folder

Place input Excel files in:

```
battery-analyzer-mcp/data/
```

Tools take **only the file name** (not a full path), for example `dunn_method_data.xlsx`. The `.xlsx` extension is optional.

Results are saved in the same `data/` folder next to the input file.

Override the data folder with the `BATTERY_ANALYZER_DATA_DIR` environment variable if needed.

## Input file formats



### Dunn method

No header row in the Excel file:


|            | Col 1+               |                           |
| ---------- | -------------------- | ------------------------- |
| **Row 0**  | Scan rates (V/s)     |                           |
| **Row 1**  | (unused)             |                           |
| **Row 2+** | Voltage (V) in col 0 | Current (A) per scan rate |




### GITT method

- Skip first `skip_rows` metadata rows (default: 6)
- Column 0: time (s)
- Column 1: voltage (V)



## Install

Requires Python 3.10+ and [uv](https://docs.astral.sh/uv/):

```bash
cd battery-analyzer-mcp
uv sync
```



## Run locally(if needed in case of local mcp client)

```bash
uv run battery-analyzer-mcp
```

Or with MCP Inspector for development:

```bash
uv run mcp dev src/battery_analyzer_mcp/server.py
```



## Cursor MCP configuration

## Claude Desktop configuration

Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "battery-analyzer": {
      "command": "uv",
      "args": [
        "--directory",
        "<absolute path to your directory>/battery-analyzer-mcp",
        "run",
        "battery-analyzer-mcp"
      ]
    }
  }
}
```

Restart Claude Desktop after saving.

## Troubleshooting

`Failed to spawn process: No such file or directory`

Claude Desktop / Cursor could not find the `command` binary. GUI apps use a limited PATH and usually cannot resolve bare `uv`. Fix:

1. Run `cd battery-analyzer-mcp && uv sync` to create `.venv/`
2. Use the full path to `.venv/bin/battery-analyzer-mcp` as the `command` (see Option A above)
3. Or use the full path to `uv` (e.g. `/Users/pankaj/anaconda3/bin/uv`) instead of just `"uv"`



## Example tool calls

**List methods:**

```
list_battery_methods()
```

**List available input files:**

```
list_data_files_tool()
```

**Dunn calculation:**

```
calculate_dunn(file_name="dunn_method_data.xlsx")
```

**GITT calculation:**

```
calculate_gitt(
  file_name="GITT_67.xlsx",
  skip_rows=6,
  L=1e-4,
  tau=1800
)
```



## Output

Each calculation tool returns a **compact JSON** response (under Claude Desktop's 1 MB MCP limit):

- `results_path` — path to the saved Excel file (`*_dunn_results.xlsx` or `*_gitt_results.xlsx`)
- `message` — status message
- `preview` — first rows of core results (Dunn: Voltage, K1, K2, b only)
- `plots` — plot titles and series metadata only (**no x/y coordinates**)
- `summary` — method-specific metadata
- `note` — explains that full data is in the Excel file

Full numeric results and all columns are always written to `results_path`. Open that Excel file for complete data and plotting.

Results Excel files are written to the `data/` folder next to the input file.

## Dependencies

- `mcp[cli]` — MCP Python SDK
- `pandas`, `numpy`, `scipy`, `openpyxl` — calculation and Excel I/O

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: two specific calculation methods (Dunn, GITT) plus two listing tools (methods, data files). No ambiguity between them.

Naming Consistency4/5

All tool names use snake_case with verb_noun pattern (calculate_, list_). Only minor inconsistency is 'list_data_files_tool' includes the word 'tool', but overall pattern is clear.

Tool Count5/5

Four tools is appropriate for a specialized battery analyzer MCP. Not too few, not too many, covering core functionality without bloat.

Completeness4/5

Covers listing methods/data and running two major analysis methods. Missing a generic 'run analysis' tool that selects method, but list_battery_methods helps guide the agent. Minor gap.

Maintenance

ActivityStale
ResponsivenessNo issues