bitflyer-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bitflyer-mcpWhat's the current FX_BTC_JPY price and spread on bitFlyer?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bitflyer-mcp
Read-only MCP server for bitFlyer public market data. Lets Claude (Desktop / Code) and other MCP clients query bitFlyer's ticker, order book, recent executions, and exchange health in natural language.
Safe by design: this server uses only bitFlyer's public REST API — no API key, no authentication, no access to any account, balance, position, or order. It cannot place, cancel, or read trades. Worst case for anyone running it is a read of public market data.
⚠️ Not investment advice. This is an information tool. Trading crypto carries risk.
Tools
Tool | What it returns |
| last price (ltp), best bid/ask, volume, timestamp |
| order book summarized to top |
| recent trades (price, size, side, time) |
| board state (RUNNING / CLOSED / CIRCUIT BREAK, SFD) |
| exchange status (NORMAL / BUSY / STOP …) |
| all tradable products (spot / FX / futures) |
product_code examples: FX_BTC_JPY (BTC margin, default), BTC_JPY (spot), ETH_JPY, XRP_JPY.
Related MCP server: bybit-trading
Install
# from PyPI is not published yet — install from source
git clone https://github.com/TakuroidX/bitflyer-mcp.git
cd bitflyer-mcp
pip install -e .Requires Python ≥ 3.10. Dependencies: mcp, httpx.
Use with Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/):
{
"mcpServers": {
"bitflyer": {
"command": "bitflyer-mcp"
}
}
}Then ask Claude things like "What's the current FX_BTC_JPY price and spread on bitFlyer?"
Use with Claude Code
claude mcp add bitflyer -- bitflyer-mcpExample
> bitFlyer の FX_BTC_JPY、今いくら?板の厚さは?
get_ticker → ltp ¥10,210,000 / best_bid ¥10,209,500 / best_ask ¥10,210,500
get_board → mid ¥10,210,000 / spread ¥1,000 / 上位10段...Design notes
Public-only / read-only — the safest possible surface. No credentials are read or stored.
Rate-limit aware — a minimum request interval keeps usage under bitFlyer's public per-IP limit (~500 req / 5 min).
Board summarization — the raw board has hundreds of levels;
get_boardreturns the top-N to stay LLM-context-friendly.bitFlyer has no native OHLC/candle endpoint, so this server does not fabricate one.
Development
pip install -e ".[dev]" pytest pytest-asyncio
pytestLicense
MIT © TakuroidX
Available Tools
6 toolsget_boardA
bitFlyer の板情報 (オーダーブック) を上位 depth 段に要約して取得する (read-only)。
返す値: mid_price, spread, best_bid, best_ask, 上位 depth 段の bids/asks。 全板は数百〜千件あるため depth (既定10) 段に圧縮して返す。 product_code 例: FX_BTC_JPY, BTC_JPY。
| Name | Required | Description | Default |
|---|---|---|---|
| product_code | No | FX_BTC_JPY | |
| depth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is read-only and compresses the full order book to a specified depth (default 10) because the full board has hundreds to thousands of items. This goes beyond the bare minimum, though it omits details like authentication or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with every sentence providing essential information. It front-loads the core purpose and return values, with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with only two parameters and no output schema, the description covers the key return fields (mid_price, spread, best_bid, best_ask, bids/asks) and explains the compression behavior. It is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (0% coverage), but the tool description provides example product codes for product_code and explains that depth controls the number of levels for compression. This adds meaningful context that the schema alone does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the order book from bitFlyer, summarized to top depth levels, and marks it as read-only. It identifies the specific resource and action, though it does not explicitly differentiate from sibling tools beyond the nature of the data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting a summarized order book, but does not provide explicit guidance on when to use this tool versus alternatives like get_ticker or get_board_state. There are no when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_stateB
板の状態 (health, state, 特別気配 SFD など) を取得する (read-only)。
state 例: RUNNING (通常), CLOSED, STARTING, PREOPEN, CIRCUIT BREAK。 取引可能かの判断に使える。
| Name | Required | Description | Default |
|---|---|---|---|
| product_code | No | FX_BTC_JPY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It declares read-only behavior and lists example states, offering some transparency. However, it does not disclose rate limits, auth requirements, or behavior on errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with three short sentences. The first sentence front-loads the core purpose. Every sentence adds value: purpose, state examples, and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the basics: what it returns and a use case. However, it lacks details on return format or any caveats, limiting completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and no enums. The tool description does not mention the 'product_code' parameter at all, failing to add any meaning beyond the schema's default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves board state (health, state, special signs) and gives examples. It distinguishes from sibling tools like 'get_board' (full board data) and 'get_health' by focusing on state, though no explicit comparison is made.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage context: 'Can be used to determine if trading is possible.' However, it does not explain when to use this tool over siblings or list any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_executionsA
直近の約定履歴 (recent trades) を取得する (read-only)。
各約定: price, size, side (BUY/SELL), exec_date。count は 1〜100 (既定20)。
| Name | Required | Description | Default |
|---|---|---|---|
| product_code | No | FX_BTC_JPY | |
| count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the read-only nature, output fields, and count range/default, but does not mention error handling, authentication needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose and then detailing fields and count. No unnecessary words, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the return fields and count parameter. However, it omits 'product_code' and does not address ordering or pagination, making it somewhat incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description explains the 'count' parameter (range 1-100, default 20) but does not mention 'product_code' at all, leaving it undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent trade execution history, specifies it is read-only, and lists the returned fields (price, size, side, exec_date). It distinguishes itself from sibling tools like get_board or get_ticker which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates it is read-only but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_healthC
取引所の稼働状況を取得する (read-only)。
status 例: NORMAL, BUSY, VERY BUSY, SUPER BUSY, NO ORDER, STOP。
| Name | Required | Description | Default |
|---|---|---|---|
| product_code | No | FX_BTC_JPY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only mentions 'read-only', but with no annotations, more behavioral context is needed. It does not disclose authentication requirements, rate limits, or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and includes an example, but it omits valuable details about parameters and usage. It is not verbose but could be more informative in the same space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (1 optional parameter, no output schema), the description is incomplete. It lacks parameter explanation and return value details, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description fails to mention the product_code parameter or its default value. With 0% schema description coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the operating status of the exchange and provides example status values, making the tool's purpose unmistakable and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_board or get_ticker. No when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tickerA
bitFlyer の最新ティッカーを取得する (read-only)。
返す主な値: ltp (最終取引価格), best_bid / best_ask (最良気配), volume (出来高), timestamp。 product_code 例: FX_BTC_JPY (BTC証拠金FX), BTC_JPY (現物), ETH_JPY, XRP_JPY。
| Name | Required | Description | Default |
|---|---|---|---|
| product_code | No | FX_BTC_JPY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly marks the tool as read-only and lists the main return fields, which is helpful given no annotations. However, it does not disclose potential rate limits, error conditions, or other behavioral details that could affect invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and a bulleted list. It front-loads the purpose and read-only nature, then efficiently adds parameter examples and return value details with no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple ticker tool, the description adequately covers purpose, parameters, and return values despite lacking an output schema. It does not address error handling or limitations, but the core information is present and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter product_code has a default but no schema description. The tool description compensates by providing specific examples (FX_BTC_JPY, BTC_JPY, etc.), adding meaningful context beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the latest ticker from bitFlyer, specifies it is read-only, and lists the main return values. However, it does not explicitly differentiate from sibling tools like get_board or get_executions, though the specific resource ('ticker') implies uniqueness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides product code examples but offers no guidance on when to use this tool versus alternatives (e.g., get_board for order book data). There is no mention of context or preconditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_marketsA
bitFlyer で取引可能な全 product (現物・FX・先物) の一覧を取得する (read-only)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool is read-only, which is a key behavioral trait. As there are no annotations, this adds value. For a simple list retrieval, it adequately discloses behavior, though it omits potential details like return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. Every part is necessary and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description covers the basic purpose. However, it could mention the expected return type or structure, making it slightly incomplete for an agent that might need to parse the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description does not need to add any parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a list of all tradable products on bitFlyer, specifying the types (spot, FX, futures) and that it's read-only. It distinguishes from sibling tools like get_board or get_ticker by focusing on the market list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use when you need the full list of available markets. While no explicit when-not or alternatives are given, the read-only nature and clear purpose make it easy to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
get_board - First observed
get_board_state - First observed
get_executions - First observed
get_health - First observed
get_ticker - First observed
list_markets
TDQS
Each tool targets a distinct piece of data: order book summary, board state, recent trades, exchange health, ticker, and market list. No overlap in purpose.
All tools follow a consistent verb_noun snake_case pattern, using 'get_' for most and 'list_' for one, which is a standard alternative.
6 tools is appropriate for a read-only market data server, covering essential endpoints without unnecessary clutter.
The set covers core market data: order book, trades, ticker, exchange status, and available markets. No obvious gaps for typical data retrieval needs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that provides read-only access to Bybit's cryptocurrency exchange API, allowing users to query real-time cryptocurrency data using natural language.121116MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for cryptocurrency trading across multiple exchanges (Bybit, Binance, KuCoin, etc.) with real-time price data, comparison, and natural language query support. Integrates with AI assistants via the Model Context Protocol.MIT
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server for stock quotes, Coinbase prices, and Polymarket markets, supporting tools like get_stock_quote, get_coinbase_spot_price, and search_polymarket_markets.251MIT
- AlicenseBqualityDmaintenanceMCP server that exposes QuantXData's institutional crypto market data APIs to AI assistants, enabling natural language queries for trades, order books, OHLCV, options, and more across 120+ exchanges.12MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TakuroidX/bitflyer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server