# dsh-stockmcp

[English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md)

[![npm version](https://img.shields.io/npm/v/dsh-stockmcp)](https://www.npmjs.com/package/dsh-stockmcp) ![license](https://img.shields.io/npm/l/dsh-stockmcp)

**Stock market intelligence for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH)** — quotes, financial statements, SEC filings, earnings and economic data, dynamically synced from the [stockmcp.net](https://stockmcp.net) remote MCP server as model tools.

The tool list and parameter schemas are **never frozen**: they are re-synced at activation, every 10 minutes, and on demand whenever a call reports an unknown tool.

## Features

- 📈 Real-time quotes & price history, biggest gainers / losers / most actives
- 📊 Income statements, balance sheets, cash flow, dividends, splits
- 🗂️ SEC filings (list / sections / insider trades), company news
- 🌍 Economic indicators, treasury rates, sector & industry snapshots
- ⚙️ Hot-reloaded API key: settings page, `settings.yaml`, or environment variable
- 🌐 Multilingual UI (中文 / English): the settings page, tool descriptions and errors follow the DSH language environment automatically — browser language, the Settings → Language preference, then the process locale
- 🧩 Zero dependencies — pure ESM, no build step

## Requirements

- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh` CLI) with a `web` profile
- Node.js >= 20

## Install (one command)

```bash
dsh plugin --profile web add dsh-stockmcp
```

or use the one-key installer (it handles pnpm 11 quirks like the 24-hour minimum release age for brand-new versions):

```bash
bash <(curl -fsSL https://raw.githubusercontent.com/StockMCP-net/dsh-stockmcp/main/scripts/install.sh)
```

Restart your web profile (`pm2 restart dsh-web` or restart the `dsh web` process) and the stock tools appear in your model's toolset.

> Migrating from the old manual mount? Remove any `./node_modules/StockMCP/...` insert from your profile's `cordis.patch.yml` before restarting, to avoid double-mounting.

## API key

Tool calls require an API key from stockmcp.net. Configure it any of three ways:

1. **Settings page** — DSH web → Settings → StockMCP (writes to `~/.dsh/settings.yaml`, hot-reloaded)
2. **Config file** — add `stockmcp: { apiKey: ... }` to `~/.dsh/settings.yaml` (hot-reloaded)
3. **Environment variable** — `STOCKMCP_API_KEY`

Without a key the plugin stays up, but tool calls return a clear configuration error.

## How it works

The host plugin wraps the stockmcp.net MCP server (JSON-RPC 2.0 over HTTPS) as model tools and exposes same-origin `/stockmcp-api` routes for the settings page (`lib/client.js`).

## Development & publishing

```bash
pnpm pack --dry-run   # inspect what would be published
pnpm publish          # publish to npm (run pnpm login first)
```

## License

MIT
