Bunpro

io.github.jbeshirPublished by GitHub account jbeshirv1.0.1Updated Oct 29, 2026

Read Bunpro SRS data: profile, study queue, reviews, JLPT progress, and grammar lookups.

Overview

AI-generated overview

Read-only MCP server for Bunpro that lets an assistant query a learner's Japanese SRS profile, study queue, reviews, JLPT progress and grammar or vocabulary…

What you can do
  • Read profile, study statistics, streak, badges and deck settings
  • Check due review counts, SRS stage overview and review forecasts by day or hour
  • Track JLPT N5-N1 progress and daily review activity for the past month
  • List paginated grammar or vocabulary items at a chosen SRS level
  • Look up a single grammar point or vocabulary entry, including readings, pitch accent and dictionary data
When to use it
Useful when a learner wants an assistant to summarize their Bunpro study state, plan review sessions around upcoming workload, or explain specific grammar points and vocabulary they are studying.
Requirements
Runs as a local process (pre-built binary or built from source with Go). Requires a Bunpro account (free or paid) and the environment variables BUNPRO_EMAIL and BUNPRO_PASSWORD. Optional BUNPRO_API_URL and BUNPRO_LOGIN_URL override the default endpoints. Network access to bunpro.jp and api.bunpro.jp is needed.
Before you install
The server logs in with your Bunpro email and password, so BUNPRO_PASSWORD is a real account credential stored in the client configuration; use a dedicated or limited account if possible. Credentials are submitted to Bunpro's login page and a session token is obtained at startup. All tools are read-only and do not modify Bunpro data.

Installation

In SourceWeft

  1. Open Bunpro in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

bunpro-mcp

An MCP server that provides read-only access to Bunpro, a Japanese grammar and vocabulary SRS (spaced repetition system) platform. It exposes 12 tools for querying a user's profile, study statistics, review forecasts, JLPT progress, SRS stage details, and individual grammar point or vocabulary data. Authentication is handled automatically via Bunpro's Rails Devise login flow using your email and password.

Key Concepts

  • SRS (Spaced Repetition System) -- Core learning mechanism. Items progress through stages: beginner, adept, seasoned, expert, master. Items answered incorrectly may become ghosts that reappear more frequently.
  • Grammar Points -- Japanese grammar patterns (e.g. da "to be") with structure, meaning, nuance, and example sentences. Organized by JLPT level.
  • Vocabulary -- Japanese words with readings, pitch accent patterns, frequency data, and JMDict dictionary entries.
  • JLPT Levels -- Japanese Language Proficiency Test levels N5 (easiest) through N1 (hardest). Bunpro organizes all content by JLPT level.
  • Decks -- Study collections with configurable batch sizes and daily lesson goals.
  • Review Forecast -- Predicted number of upcoming reviews, viewable by day or by hour.

Architecture

The server has four layers: an entry point that reads configuration and obtains a token, an auth module that performs the Devise login flow when needed, an HTTP client that calls the Bunpro frontend API with Bearer token auth, and the MCP server that registers tools and formats responses.

mermaid
graph TD    MCP["MCP Client<br/>(Claude, etc.)"]    SRV["MCP Server<br/>12 read-only tools"]    CLI["HTTP Client<br/>Bearer token auth"]    API["Bunpro Frontend API<br/>api.bunpro.jp"]
    MCP -->|"stdio JSON-RPC"| SRV    SRV --> CLI    CLI -->|"GET /api/frontend/*"| API
    subgraph "Authentication (startup)"        direction LR        LOGIN["Auth Module<br/>Devise login flow"]        SITE["bunpro.jp<br/>Rails login page"]        LOGIN -->|"CSRF + POST credentials"| SITE        SITE -->|"frontend_api_token cookie"| LOGIN    end
    LOGIN -.->|"token"| CLI

Authentication happens once at startup. The auth module fetches a CSRF token from the login page, submits form-encoded credentials, and extracts the frontend_api_token cookie. The token has approximately a 2-day lifetime — long enough for any single MCP session.

Data Flow

The sequence diagram below shows both the startup token acquisition and a runtime tool call. All API requests are GET requests to api.bunpro.jp/api/frontend/* with the token sent as a Bearer authorization header.

mermaid
sequenceDiagram    participant Client as MCP Client    participant Server as MCP Server    participant Auth as Auth Module    participant Site as bunpro.jp    participant API as api.bunpro.jp
    Note over Client,API: Startup: Token Acquisition    Server->>Auth: Login(email, password)    Auth->>Site: GET /login    Site-->>Auth: HTML with CSRF token    Auth->>Site: POST /users/sign_in (form-encoded)    Site-->>Auth: frontend_api_token cookie    Auth-->>Server: token
    Note over Client,API: Runtime: Tool Calls    Client->>Server: get_grammar_point(id)    Server->>API: GET /api/frontend/reviewables/grammar_point/{id}    Note over Server,API: Authorization: Bearer token    API-->>Server: JSON:API response    Server-->>Client: Formatted JSON result

Getting Started

Requirements

  • Go 1.27.3+ (to build from source)
  • A Bunpro account (free or paid)

Installation

Pre-built binaries are available from Releases.

Install from source:

go install github.com/jbeshir/mcp-servers/bunpro/cmd/bunpro-mcp@latest

Or build from the repo root:

make build

Configuration

VariableRequiredDescription
BUNPRO_EMAILYesBunpro account email
BUNPRO_PASSWORDYesBunpro account password
BUNPRO_API_URLNoAPI base URL (default: https://api.bunpro.jp)
BUNPRO_LOGIN_URLNoLogin page URL (default: https://bunpro.jp)
Claude Desktop
json
{  "mcpServers": {    "bunpro": {      "command": "/path/to/bunpro-mcp",      "env": {        "BUNPRO_EMAIL": "[email protected]",        "BUNPRO_PASSWORD": "your-password"      }    }  }}
Claude Code
claude mcp add bunpro /path/to/bunpro-mcp -e [email protected] -e BUNPRO_PASSWORD=your-password

Tools

All tools are read-only. No tool modifies Bunpro data.

ToolParametersDescription
get_user--User profile: level, XP, streak, subscription status
get_study_queue--Due grammar and vocabulary review counts
get_decks--Deck settings: daily goals, progress, batch sizes
get_stats--Study statistics: days studied, streak, accuracy, badges
get_jlpt_progress--JLPT N5-N1 progress with SRS stage counts
get_review_forecastgranularity (optional): "daily" or "hourly"Upcoming review forecast split by grammar and vocabulary
get_srs_overview--Aggregate SRS level counts (beginner through master, plus ghost and self-study)
get_review_activity--Daily review counts for the past ~30 days
get_grammar_srs_detailslevel (required): beginner, adept, seasoned, expert, or master; page (optional)Paginated grammar review items at a specific SRS level
get_vocab_srs_detailslevel (required): beginner, adept, seasoned, expert, or master; page (optional)Paginated vocabulary review items at a specific SRS level
get_grammar_pointid (required)Grammar point details: meaning, structure, nuance, study questions
get_vocabslug_or_id (required): slug (e.g. "食べる") or numeric IDVocabulary details: readings, pitch accent, frequency, JMDict entries

Source: bunpro/README.md at commit 27dc1b2

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v1.0.1LatestOct 29, 2026
  2. v1.0.0Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts