MCP server for Japanese stock market data via J-Quants API — tools for price history, financials, screeners, and candlestick charts
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
claude mcp add jquants-mcp -- python -m jquants-mcp{
"mcpServers": {
"jquants-mcp": {
"command": "python",
"args": ["-m", "jquants-mcp"],
"env": {
"GITHUB_CLIENT_SECRET": "<github_client_secret>",
"OAUTH_BASE_URL": "<oauth_base_url>",
"OAUTH_JWT_SIGNING_KEY": "<oauth_jwt_signing_key>",
"MCP_ENCRYPTION_KEY": "<mcp_encryption_key>"
}
}
}
}GITHUB_CLIENT_SECRETOAUTH_BASE_URLOAUTH_JWT_SIGNING_KEYMCP_ENCRYPTION_KEYMCP Servers overview
<!-- mcp-name: io.github.shigechika/jquants-mcp --> # jquants-mcp English | [日本語](README.ja.md) An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that retrieves Japanese stock market data via [J-Quants API v2](https://jpx-jquants.com/). User-facing documentation site: <https://shigechika.github.io/jquants-mcp/> (also available in [日本語](https://shigechika.github.io/jquants-mcp/ja/)) — start there if you want a gentler 5-minute introduction. This README is the technical reference (config schema, all 55 tools with parameter tables, deployment). Release history and changelog: [GitHub Releases](https://github.com/shigechika/jquants-mcp/releases). Deployment shapes (stdio / Docker Compose / self-hosted HTTP / Cloud Run) and how to pick between them: see [docs/deploy/](docs/deploy/). ## Demo <p align="center"> <img src="docs/screenshots/jquants-mcp-demo.gif" alt="24-second loop on the Claude iPhone app cycling through sector performance, top turnover ranking, candlestick chart with SMA, quarterly financial summary, and a 5-stock return comparison" width="330"> </p> 24-second loop showing real output from the Claude iPhone app calling jquants-mcp tools: - Sector performance ranking (業種別騰落率) — `get_sector_performance` - Top turnover by trading value (売買代金ランキング) — `get_top_turnover_value` - Candlestick chart with SMA — `get_candlestick_data` - Quarterly financial summary (決算ダイジェスト) — `get_fins_summary` - 5-stock return comparison — `get_comparison_chart_data` Individual frames are in [docs/screenshots/](docs/screenshots/). ## Features - **55 MCP tools** — 22 J-Quants API v2 endpoints, 11 market overview + valuation, 10 offline screener, 1 technical indicators, 1 single-stock summary, 3 cache-only equity search + earnings (schedule + results), 2 chart tools (JSON, no optional dependencies), and 5 server utilities - **Two-tier SQLite cache** — row-level cache for time-series data, response-level cache with TTL for others - **Stock split detection** — automatic cache invalidation when AdjFactor changes - **Rate limiting** — plan-aware sliding window (Free: 5/min, Light: 60, Standard: 120, Premium: 500) - **Retry with backoff** — automatic retry for 429/5xx errors - **Pagination** — transparent multi-page fetching - **Plan-aware** — all tools registered regardless of plan; graceful error messages on restriction ## Requirements - Python 3.10+ - [J-Quants API key](https://jpx-jquants.com/) (Free plan or above) ## Installation ```bash # Using uv (recommended) uv pip install jquants-mcp # Using pip pip install jquants-mcp ``` ### From source ```bash git clone https://github.com/shigechika/jquants-mcp.git cd jquants-mcp uv sync --dev ``` ## Configuration Settings are loaded with the following priority (later wins): 1. `~/.jquants-api/jquants-api.toml` — API key only (J-Quants official config) 2. `~/.config/jquants-mcp/config.ini` (user global) 3. `./config.ini` (current directory) 4. Environment variables (from MCP client or shell) ### API Key (zero-config) If you already use [jquants-api-client](https://github.com/J-Quants/jquants-api-client-python), your API key is automatically read from `~/.jquants-api/jquants-api.toml`. No extra configuration needed. ### API Key via browser login ```sh jquants-mcp login ``` Opens a browser to J-Quants (AWS Cognito, PKCE flow), and on success writes the API key to `~/.config/jquants-mcp/config.ini` (mode 0600). Same auth backend as the [official jquants-cli](https://github.com/J-Quants/jquants-cli). Use `jquants-mcp logout` to clear the saved key. ### config.ini MCP-specific settings (cache, client behavior): ```ini [jquants] # cache_dir = ~/.cache/jquants-mcp # base_url = https://api.jquants.com/v2 [client] # max_retries = 5 # retry_base_delay = 1.0 # max_pages = 10 [server] # ssl_certfile = /path/to/fullchain.pem # ssl_keyfile = /path/to/privkey.pem # bearer_token = <secret> # encryption_key = <random-secret> # enables per-user API key storage (multi-user mode) [oauth] # github_client_id = <your-github-client-id> # github_client_secret = <your-github-client-secret> # base_url = https://mcp.example.com # jwt_signing_key = <random-secret> # optional: auto-generated if blank # require_consent = true ``` ### Environment Variables | Variable | Required | Default | Description | |---|---|---|---| | `JQUANTS_API_KEY` | No* | — | J-Quants API key | | `JQUANTS_API_TOML_PATH` | No | `~/.jquants-api/jquants-api.toml` | Path to the J-Quants official config file. Override to avoid macOS 26+ launchd sandbox restrictions (see [macOS launchd note](#macos-launchd-note) below) | | `JQUANTS_PLAN` | No | auto-detect | Plan: `free` / `light` / `standard` / `premium` (auto-detected from the API key at server startup; set this variable only to override) | | `JQUANTS_CACHE_DIR` | No | `~/.cache/jquants-mcp` | Cache directory path | | `JQUANTS_BASE_URL` | No | `https://api.jquants.com/v2` | API base URL | | `MAX_RETRIES` | No | `5` | Max retry attempts for failed requests | | `RETRY_BASE_DELAY` | No | `1.0` | Base delay (seconds) for exponential backoff | | `MAX_PAGES` | No | `10` | Max pages to fetch per paginated request | | `SSL_CERTFILE` | No | — | Path to SSL certificate file (HTTP transport) | | `SSL_KEYFILE` | No | — | Path to SSL private key file (HTTP transport) | | `MCP_BEARER_TOKEN` | No | — | Bearer token for HTTP authentication | | `GITHUB_CLIENT_ID` | No | — | GitHub OAuth App client ID (enables GitHub OAuth 2.1) | | `GITHUB_CLIENT_SECRET` | No | — | GitHub OAuth App client secret | | `GOOGLE_CLIENT_ID` | No | — | Google OAuth 2.0 client ID (enables Google OAuth 2.1) | | `GOOGLE_CLIENT_SECRET` | No | — | Google OAuth 2.0 client secret | | `OAUTH_PROVIDER` | No | `github` | OAuth provider: `github` or `google` | | `OAUTH_BASE_URL` | No | — | Public base URL of the server (e.g. `https://mcp.example.com`) | | `OAUTH_JWT_SIGNING_KEY` | No | auto | Secret for JWT signing; auto-generated if blank | | `OAUTH_REQUIRE_CONSENT` | No | `true` | Show OAuth consent screen on every login (`true`/`false`) | | `MCP_ENCRYPTION_KEY` | No | — | Passphrase for AES-256-GCM encryption of per-user API keys | | `MCP_ENCRYPTION_KEY_PREVIOUS` | No | — | Previous encryption passphrase — enables dual-key decrypt during a rotation window. See [secrets rotation runbook](docs/runbooks/secrets-rotation.md) | | `RATE_LIMIT_PER_MINUTE` | No | `60` | Per-user request ceiling (multi-user mode). Applies per OAuth user | | `RATE_LIMIT_BURST` | No | `20` | Per-user burst allowance (token-bucket capacity) | | `JQUANTS_ALLOWED_EMAILS` | No | — | Comma-separated allowlist of emails. Empty = allow any authenticated user (self-host default). Set this on public Cloud Run instances to restrict access; unauthorized users get a 403-style message pointing them to self-host | \* API key is auto-detected from `~/.jquants-api/jquants-api.toml`. Set `JQUANTS_API_KEY` only to override. Environment variables override both `config.ini` and `jquants-api.toml`. This allows MCP clients (Claude Desktop, Claude Code) to pass settings via their `env` block while keeping defaults elsewhere. ### macOS launchd note If you run `jquants-mcp` as a **macOS LaunchAgent** and the API key lives in `~/.jquants-api/jquants-api.toml`, the server may silently hang during startup on macOS 26 or later. The TCC sandbox applied to launchd-spawned processes blocks `open()` on some dotfiles under `$HOME` (mode `600`), and the process never reaches the port-bind step. Workaround: copy the toml outside the sandboxed home hierarchy and point the server at it via `JQUANTS_API_TOML_PATH`: ```sh sudo mkdir -p /usr/local/etc/jquants-mcp sudo cp ~/.jquants-api/jquants-api.toml /usr/local/etc/jquants-mcp/jquants-api.toml sudo chown "$USER":staff /usr/local/etc/jquants-mcp/jquants-api.toml sudo chmod 600 /usr/local/etc/jquants-mcp/jquants-api.toml ``` Then add the following to your LaunchAgent plist's `EnvironmentVariables` dict: ```xml <key>JQUANTS_API_TOML_PATH</key> <string>/usr/local/etc/jquants-mcp/jquants-api.toml</string> ``` Alternatives: set `JQUANTS_API_KEY` directly in the plist (simpler but puts the key in a plist file that Time Machine / iCloud may back up), or put `api_key =` directly in `~/.config/jquants-mcp/config.ini` (if that path is not sandbox-blocked on your macOS version). Linux/systemd and other init systems are not affected. ## Authentication jquants-mcp supports four authentication modes: | Mode | When to use | |---|---| | None | Local stdio or trusted LAN (single user) | | Bearer Token | Single-user remote access over HTTPS | | GitHub OAuth 2.1 | Multi-user access / Claude Desktop Connectors | | Google OAuth 2.1 | Multi-user access via Google account | The mode is selected automatically at startup: 1. **Google OAuth 2.1** — when `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, and `OAUTH_BASE_URL` are all set, and `OAUTH_PROVIDER=google` 2. **GitHub OAuth 2.1** — when `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`, and `OAUTH_BASE_URL` are all set 3. **Bearer Token** — when `MCP_BEARER_TOKEN` (or `bearer_token` in `config.ini`) is set 4. **None** — no authentication (stdio transport or trusted environment) ### GitHub OAuth 2.1 The server acts as an OAuth 2.1 authorization server using GitHub as the upstream identity provider (IdP). Clients are redirected to GitHub's login page; the server exchanges the authorization code for a signed JWT that identifies the user across requests. #### 1. Create a GitHub OAuth App 1. Go to **GitHub → Settings → Developer settings → OAuth Apps → New OAuth App** 2. Fill in: - **Application name**: `jquants-mcp` (or any name) - **Homepage URL**: your server's public base URL (e.g. `https://mcp.example.com`) - **Authorization callback URL**: `https://mcp.example.com/oauth/callback` 3. Click **Register application**, then click **Generate a new client secret** 4. Copy the **Client ID** and the generated **Client secret** #### 2. Configure the server *
What people ask about jquants-mcp
What is shigechika/jquants-mcp?
+
shigechika/jquants-mcp is mcp servers for the Claude AI ecosystem. MCP server for Japanese stock market data via J-Quants API — tools for price history, financials, screeners, and candlestick charts It has 2 GitHub stars and was last updated today.
How do I install jquants-mcp?
+
You can install jquants-mcp by cloning the repository (https://github.com/shigechika/jquants-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is shigechika/jquants-mcp safe to use?
+
Our security agent has analyzed shigechika/jquants-mcp and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains shigechika/jquants-mcp?
+
shigechika/jquants-mcp is maintained by shigechika. The last recorded GitHub activity is from today, with 4 open issues.
Are there alternatives to jquants-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy jquants-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/shigechika-jquants-mcp)<a href="https://claudewave.com/repo/shigechika-jquants-mcp"><img src="https://claudewave.com/api/badge/shigechika-jquants-mcp" alt="Featured on ClaudeWave: shigechika/jquants-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface