Skip to main content
Glama
tapelog-journal

TapeLog MCP

Official
README.md
# TapeLog MCP: a private AI trade-journal coach

<!-- mcp-name: io.github.tapelog-journal/tapelog-mcp -->

An open-source [Model Context Protocol](https://modelcontextprotocol.io) server that lets Claude, ChatGPT, Cursor or any MCP client analyze **your own** broker exports. It parses **DAS Trader Pro** and **Robinhood** CSVs, rebuilds round trips, and reports your stats plus the behavioral patterns where your results were weakest: time of day, sizing after a loss, hold time, symbol and day of week.

- **Local and private:** no broker login, no cloud. Fills are stored in `~/.tapelog/fills.json` on your machine.
- **Free:** MIT licensed.
- **Process, not picks:** TapeLog describes what you already did. It never suggests trades.

> **Disclaimer:** TapeLog is an educational, record-keeping tool. It is **not investment advice**, and TapeLog is **not a registered investment adviser** or broker-dealer. It does not recommend buying, selling or holding any security, does not give price targets, signals or market predictions, and does not place trades. Past results don't predict future results.

## Tools

| Tool | What it does |
|---|---|
| `import_fills` | Import a DAS Trader Trades-window CSV, a Robinhood account activity CSV, or a generic CSV (`date,time,symbol,side,qty,price,fees`). Duplicates are skipped. |
| `get_stats` | Net P&L, win rate, profit factor, expectancy, average win and loss, payoff ratio, max drawdown, losing streak, hold time, and PDT day-trade count over the last 5 business days |
| `find_leaks` | Descriptive breakdowns of your weakest groups, for example *"Your 18 trades entered 11:00-12:00 netted -$2,039 (win rate 11%)"* or *"After a loss your position was 2.1x larger"* |
| `compare_periods` | Period A vs period B, such as last week vs this week |
| `weekly_habit_report` | This week vs your prior weeks: which habits appeared and which faded, with counts (size-up after a loss, losers held longer than winners, overtrading bursts, a time-of-day slump). For example *"Size-up after a loss: this showed up 8 times this week vs 0 per week before."* Returns JSON plus a rendered markdown report. |
| `list_trades` | Your reconstructed round trips |
| `clear_data` | Deletes all stored fills (requires `confirm=true`) |

## Install

You need Python 3.10+ and [uv](https://docs.astral.sh/uv/), or pip.

**Claude Desktop:** add this to `claude_desktop_config.json` (Settings, then Developer, then Edit Config):

```json
{
  "mcpServers": {
    "tapelog": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/tapelog-journal/tapelog-mcp", "tapelog-mcp"]
    }
  }
}
```

**Cursor:** add the same block under `mcpServers` in `~/.cursor/mcp.json`.

**Claude Code:** `claude mcp add tapelog -- uvx --from git+https://github.com/tapelog-journal/tapelog-mcp tapelog-mcp`

**Other MCP clients (Windsurf, VS Code, Cline, Goose):** use a stdio server with command `uvx` and the args shown above. Or run `pip install git+https://github.com/tapelog-journal/tapelog-mcp` and use the command `tapelog-mcp`.

Optional: set the env var `TAPELOG_DATA=/path/to/fills.json` to change where fills are stored.

## Use it

> "Import ~/Downloads/trades.csv with trade_date 2026-10-15, then show my stats and find my leaks."

> "Compare Sept 1-15 to Sept 16-30."

> "Give me my weekly habit report."

See a [sample weekly habit report](https://github.com/tapelog-journal/tapelog-mcp/blob/main/samples/SAMPLE_weekly_habit_report.md) (synthetic sample data), also on the [TapeLog site](https://tapelog-journal.github.io/tapelog/habit-report/).

**Exporting your trades:** in DAS Trader, open the Trades window, right-click and choose Export. DAS files have no date, so pass `trade_date`. In Robinhood, go to Account, then Reports and statements, then Account activity report (CSV). Step-by-step guides are on the [TapeLog site](https://tapelog-journal.github.io/tapelog/guides/).

**No MCP?** The [`/coach`](https://github.com/tapelog-journal/tapelog-mcp/tree/main/coach) folder has a ready-to-paste Custom GPT or Claude Project instruction pack and a one-shot prompt that works on an uploaded CSV.

## Scope rules (enforced in the server instructions and coach prompts)

TapeLog analyzes only your past behavior and process: timing, sizing, hold times and discipline. Findings are descriptive. Small samples are flagged, and patterns are framed as prompts for reflection, not signals.

## Develop

```bash
python -m venv .venv && .venv/bin/pip install -e . pytest && .venv/bin/pytest -q
```

Everything in `samples/` is synthetic sample data. More free tools are at [tapelog-journal.github.io/tapelog](https://tapelog-journal.github.io/tapelog/ai-coach/), and there's a weekly newsletter at [thetapelog.beehiiv.com](https://thetapelog.beehiiv.com/subscribe).

Not affiliated with DAS Inc., Robinhood Markets, Inc., Anthropic or OpenAI.

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

get_stats, find_leaks, and compare_periods all operate on performance analytics, so an agent might briefly hesitate between them, but each has a clearly stated distinct purpose (general stats vs. descriptive weakness analysis vs. period-vs-period comparison). list_trades, import_fills, and clear_data are unambiguously separate.

Naming Consistency5/5

Every tool follows a consistent snake_case verb_noun pattern (get_stats, find_leaks, compare_periods, list_trades, clear_data, import_fills). The convention is uniform throughout with no stylistic deviations.

Tool Count5/5

Six tools is well-scoped for a local trade-journaling/analytics server. Each tool covers a distinct operation (import, list, analyze, compare, find weaknesses, reset) and none feels redundant or filler.

Completeness4/5

The import -> list -> analyze lifecycle is well covered, including a data-reset operation. Minor gaps exist: no way to edit or delete a single misparsed fill, and no export of reconstructed trades, but these are workable around via clear_data plus re-import.

Maintenance

ActivityMaintained
ResponsivenessNo issues