Skip to main content
Glama

Model Context Protocol (MCP) Server for Japanese Public Open Data (japan-data-mcp)

License: MIT MCP Standard Python Version RapidAPI Hub Smithery Verified Glama Quality

Model Context Protocol (MCP) Server for Japanese Public Open Data (maintained independently by Japan Open Data Lab).

Connect Claude Desktop, Cursor, Windsurf, Cline, and LangChain agents directly to clean, standardized Japanese government open data.


Quick Start (Claude Desktop / Cursor)

Option 1: Direct Run via Python (Zero Dependencies)

Add the following to your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "japan-data-mcp": {
      "command": "python",
      "args": ["-m", "server"],
      "env": {
        "RAPIDAPI_KEY": "YOUR_RAPIDAPI_KEY_HERE"
      }
    }
  }
}

Option 2: Run in Cursor IDE

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "japan-data-mcp": {
      "command": "python server.py",
      "env": {
        "RAPIDAPI_KEY": "YOUR_RAPIDAPI_KEY_HERE"
      }
    }
  }
}

Related MCP server: ontario-data-mcp

๐Ÿ› ๏ธ Available MCP Tools

Tool Name

Parameters

Description

list_japan_datasets

query, limit

Search and list across 155 normalized Japanese public datasets in English or Japanese.

describe_japan_dataset

dataset_id

Inspect schema definitions, historical time-series range, primary sources, and sample rows.

search_japan_official_data

dataset_id, prefecture, municipality_code, corporate_number, q

Fast targeted search filtered by English/Japanese prefecture name, 5-digit JIS code, or 13-digit Corporate ID.

execute_japan_megabank_sql

sql

Execute multi-table in-memory analytical DuckDB SQL queries across datasets (MEGA tier / local).


๐Ÿ’ก Example Prompts to Ask Your AI Agent

Once connected, your AI assistant can execute prompts like:

  • "Using search_japan_official_data, find the top 5 central government tender awards in procurement related to AI or cloud infrastructure."

  • "Look up Tokyo's Minato-ku and Shibuya-ku in demographics and compare their per capita taxable income and aging rate."

  • "Use execute_japan_megabank_sql to calculate the total public procurement amount won by company with corporate_number '1010001008844'."

  • "Find all hospitals with more than 300 beds in Osaka from medical."


๐Ÿ“ฆ Data Domains Covered

  • Government Procurement (GEPS): 2020โ€“2026 Nationwide central ministry contract awards (100% electronic disclosure archive).

  • Corporate Tax Registry: Nationwide registered commercial entities (13-digit NTA key, zero PII).

  • Land Valuation Benchmark (MLIT): 1983โ€“2026 (44-year archive) official land price points.

  • Healthcare & Senior Care: 220,000+ hospitals/clinics and 250,000+ nursing care welfare facilities.

  • Demographics & Public Finance: All 1,741 Japanese municipalities (taxable income, population, aging).

  • GHG Emissions: Mandatory industrial emission disclosures from Ministry of the Environment.


๐Ÿ”‘ Authentication & API Access

This MCP server connects to the live Japan Official Data Megabank API on RapidAPI.

  • BASIC Tier: Free ($0/mo, 50 requests/mo) for testing and development.

  • PRO / ULTRA / MEGA Tiers: High-volume quotas, 40+ year archives, and direct multi-table DuckDB SQL execution.

Get your API key at: RapidAPI Hub



โš ๏ธ Disclaimer & Attribution

  • Independent Project: This MCP server is developed and maintained independently by Japan Open Data Lab.

  • Not Government Affiliated: This project is not endorsed by, operated by, or affiliated with the Government of Japan or any public ministry.

  • Source Attribution: All underlying public domain/CC BY data is cited with full attribution to original government ministries pursuant to the Government of Japan Standard Terms of Use (Version 2.0).


๐Ÿ“„ License & Attribution

  • MCP Server Code: MIT License

  • Source Data: Government of Japan Standard Terms of Use v2.0 (CC BY 4.0 compatible).

  • Maintained by: Japan Open Data Lab (japan.opendata.lab@gmail.com)

Available Tools

5 tools
describe_japan_datasetA
Read-onlyIdempotent

Retrieve the exact column schema, data types, historical coverage range, primary government ministry source, and a representative sample record (including English 'prefecture_en' and 'city_en') for a single dataset. WHEN TO USE: Call this after 'list_japan_datasets' and before 'execute_japan_megabank_sql' or 'search_japan_official_data' to verify exact column names and data formats. WHEN NOT TO USE: Do not use this to search or filter multiple records (use 'search_japan_official_data' for filtered rows or 'execute_japan_megabank_sql' for aggregations).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesExact dataset identifier obtained from 'list_japan_datasets' (lowercase snake_case, e.g., 'demographics', 'procurement', 'medical', 'renewable_energy', 'companies').

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaNoMapping of column names to their data types and formats.
dataset_idNoThe inspected dataset identifier.
sample_recordNoA single sanitized sample row demonstrating actual field values.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful behavioral context about what is returned (column schema, types, historical range, ministry source, sample record including prefecture_en/city_en), but says nothing about auth, rate limits, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by clearly labeled WHEN TO USE / WHEN NOT TO USE sections. Every sentence carries routing or content information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still previews the payload and fully routes the agent in a 1-param, single-sibling-cluster tool. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single dataset_id param is fully documented in the schema, including the snake_case format and examples. The description adds only the 'single dataset' scope, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (column schema, data types, coverage, sample record for a single dataset). It clearly distinguishes itself from search/filter and aggregation siblings by scoping to one dataset's metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO USE (after list_japan_datasets, before execute/search to verify column names and formats) and WHEN NOT TO USE (not for searching/filtering rows or aggregations) with the exact sibling alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_japan_megabank_sqlA
Read-onlyIdempotent

Execute a read-only DuckDB SQL SELECT query across all 155 mounted datasets (10.16M+ records). Enables complex aggregations (COUNT, SUM, AVG, GROUP BY) and multi-table JOINs using 'municipality_code' (5-digit JIS code) or 'corporate_number' (13-digit ID). Enforces AST validation (single SELECT only, max 10,000 rows). PREREQUISITE: Requires a MEGA tier subscription on RapidAPI or local database access; always call 'describe_japan_dataset' first to confirm table and column names. WHEN NOT TO USE: Do not use for simple single-table keyword or prefecture lookups (use 'search_japan_official_data' instead, which works on all tiers including BASIC) or for browsing available tables (use 'list_japan_datasets').

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSingle read-only DuckDB SQL SELECT statement. DDL/DML statements are rejected. Always include a LIMIT clause (e.g., 'SELECT prefecture_en, COUNT(*) AS cnt FROM medical GROUP BY 1 ORDER BY 2 DESC LIMIT 10').

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNoList of result row objects mapped by column name.
columnsNoOrdered list of column names in the query result.
row_countNoNumber of result rows returned by the SQL query.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real operational context beyond them: AST validation, single-SELECT enforcement, a 10,000-row cap, and an auth/tier prerequisite. These are constraints an agent cannot infer from the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded, with the core purpose first and labeled PREREQUISITE / WHEN NOT TO USE sections that scan well. It is on the long side and packs several facts per sentence, but each sentence carries distinct, actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, high-complexity query tool with an output schema already defined, this covers everything an agent needs: capability scope, join keys, row/statement limits, tier prerequisite, and sibling routing. No return-value explanation is required given the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning the schema lacks: the join keys 'municipality_code' (5-digit JIS) and 'corporate_number' (13-digit ID) and the read-only SELECT-only constraint. It stops short of documenting the LIMIT/validation interaction in detail, keeping it at 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Execute a read-only DuckDB SQL SELECT query') plus concrete scope (155 mounted datasets, 10.16M+ records) and capability envelope (aggregations, JOINs). It also distinguishes itself from siblings by naming search_japan_official_data and list_japan_datasets as the tools for other jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: a labeled PREREQUISITE block (MEGA tier or local DB, call describe_japan_dataset first) and a labeled WHEN NOT TO USE block that names two alternatives and the conditions selecting them. Nothing about when to pick this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_flagship_b2b_bundlesA
Read-onlyIdempotent

List the 5 Flagship Enterprise All-in-One Data Bundles (BUNDLE-01 Real Estate, BUNDLE-02 Government Procurement, BUNDLE-03 Healthcare, BUNDLE-04 Renewable Energy/GX, BUNDLE-05 Municipal Finance/Resilience) with included dataset counts, total records, JPY pricing, discount rates, and qualified B2B invoice availability. WHEN TO USE: Use only when the user asks about bulk downloadable ZIP packages, enterprise pricing, or B2B invoice options. WHEN NOT TO USE: Do not use for listing individual API datasets (use 'list_japan_datasets') or querying actual data records (use 'search_japan_official_data').

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_codeNoOptional exact bundle identifier from 'BUNDLE-01' to 'BUNDLE-05' (case-insensitive). If omitted, returns all 5 flagship bundles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalNoNumber of flagship bundles returned.
bundlesNoList of bundle metadata objects with bundle_code, title, datasets_included, records, and price_jpy.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description still adds real context by disclosing the bounded result set (exactly 5 bundles) and the field content returned (dataset counts, total records, JPY pricing, discount rates, B2B invoice availability). It omits pagination/rate-limit behavior, but the bounded cardinality removes most ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded with the core scope, and the WHEN TO USE / WHEN NOT TO USE blocks are tightly structured and immediately scannable. The inline enumeration of all five bundle names is somewhat verbose, but it doubles as valid-value disambiguation rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only list tool with an output schema present, the description need not explain return structure. Between the scope statement, the usage routing, and the annotated safety profile, an agent has everything required to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional bundle_code parameter is fully documented in the schema, including the BUNDLE-01..BUNDLE-05 range and case-insensitivity. The description's enumeration of the five bundles reinforces the valid values but adds no syntax or semantics beyond what the schema already provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the 5 Flagship Enterprise All-in-One Data Bundles') and enumerates the exact bundle codes and names, so an agent knows precisely what comes back. It also explicitly names the sibling tools it is not (list_japan_datasets, search_japan_official_data), making it trivially distinguishable from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains explicit WHEN TO USE ('bulk downloadable ZIP packages, enterprise pricing, or B2B invoice options') and WHEN NOT TO USE clauses that route the agent to two named alternatives with their respective conditions. Nothing about selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_japan_datasetsA
Read-onlyIdempotent

Discover and list available dataset IDs, titles, record counts, and coverage years across all 155 official Japanese datasets in Japan Official Data Megabank (demographics, real_estate, procurement, companies, medical, renewable_energy, grid_capacity, etc.). WHEN TO USE: Call this tool first when you do not know the exact 'dataset_id' to query. NEXT STEP: Pass a discovered 'dataset_id' to 'describe_japan_dataset' to inspect columns, or directly to 'search_japan_official_data' to fetch rows. WHEN NOT TO USE: Do not use this tool to fetch actual data rows (use 'search_japan_official_data' instead) or B2B bulk product bundles (use 'list_flagship_b2b_bundles').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of dataset catalog entries to return (1 to 155, default: 25).
queryNoOptional case-insensitive keyword filter in English or Japanese to match dataset IDs or titles (e.g., 'procurement', 'hospital', 'solar', 'ๅ…ฅๆœญ', 'ๅŒป็™‚'). If omitted, returns the top catalog entries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalNoTotal number of datasets available in the catalog.
datasetsNoList of matching dataset metadata objects containing dataset_id, title_en, records, and coverage.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered and the bar is lower. The description adds genuine context beyond them: the catalog returns metadata only (no rows), spans all 155 official datasets, and the coverage domains it indexes. It stops short of describing pagination/truncation behavior of the limit cap or how the default of 25 is chosen.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The label-per-function structure (purpose, WHEN TO USE, NEXT STEP, WHEN NOT TO USE) is front-loaded and scannable, and the parenthetical domain list is informative rather than padding. It runs long, but each clause carries routing or scope information that an agent uses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the return fields need not be explained, and annotations carry the safety profile, so the description's job is routing and scope โ€“ both fully delivered. Nothing an agent needs to select or invoke this catalog tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (limit, query) are already documented in the schema, including the 1-155 range, default and bilingual keyword examples. The description adds no interpretation beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Discover and list available dataset IDs, titles, record counts, and coverage years') and scopes it precisely to the 155 datasets in the Megabank, even enumerating the covered domains. An agent can immediately distinguish this catalog tool from describe_/search_/SQL siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO USE ('call this tool first when you do not know the exact dataset_id'), a NEXT STEP routing to describe_japan_dataset or search_japan_official_data, and a WHEN NOT TO USE that names both the row-fetching sibling and list_flagship_b2b_bundles. When/when-not/alternative routing is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_japan_official_dataA
Read-onlyIdempotent

Fetch and filter actual data records from a single dataset using standardized parameters (prefecture name, 5-digit JIS municipality code, 13-digit corporate number, or free-text keyword). Multiple filters are combined using logical AND. WHEN TO USE: Use for fast, single-table record lookups and filtered sampling once you know the 'dataset_id'. WHEN NOT TO USE: Do not use for discovering dataset IDs (use 'list_japan_datasets'), inspecting column schemas (use 'describe_japan_dataset'), or performing cross-table JOINs and GROUP BY aggregations (use 'execute_japan_megabank_sql').

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOptional case-insensitive free-text substring search across company names, facility names, address fields, or contract titles (e.g., 'Cloud', 'Hospital').
limitNoMaximum number of matching records to return (1 to 100, default: 10).
dataset_idYesTarget dataset ID obtained from 'list_japan_datasets' (e.g., 'demographics', 'procurement', 'medical', 'companies', 'real_estate').
prefectureNoOptional prefecture filter in English romaji or Japanese kanji (e.g., 'Tokyo', 'Osaka', 'Hokkaido', 'ๆฑไบฌ้ƒฝ'). Case-insensitive.
corporate_numberNoOptional exact 13-digit Japan National Tax Agency corporate number string (e.g., '1000012010019') or 10-digit US SEC CIK.
municipality_codeNoOptional 5-digit JIS municipality code string with leading zero preserved (e.g., '13101' for Chiyoda-ku, '01101' for Sapporo).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of records returned or matched.
recordsNoArray of normalized record objects matching the filter criteria.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), lowering the burden. The description adds genuine behavioral context beyond that: filters combine with logical AND and the operation is single-table and 'fast'. It stops short of discussing pagination or result shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then cleanly partitioned into labeled WHEN TO USE / WHEN NOT TO USE clauses. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a filtered single-dataset lookup, the description covers scope, filter semantics, and routing to all relevant alternatives. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description enumerates the filter types (prefecture, 5-digit JIS code, 13-digit corporate number, keyword) but adds no format or edge-case detail beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch and filter actual data records from a single dataset') and immediately scopes it to single-table work, explicitly contrasting with cross-table SQL and metadata tools. An agent can distinguish it from every sibling by name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit WHEN TO USE and WHEN NOT TO USE sections, naming the exact alternative for each excluded case ('list_japan_datasets', 'describe_japan_dataset', 'execute_japan_megabank_sql'). The selecting condition ('once you know the dataset_id') is spelled out.

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.

  1. 5 tool updatesv1.0.4
    • Changeddescribe_japan_dataset5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Dataset identifier (e.g. 'demographics', 'procurement', 'medical', 'renewable_energy', 'companies')."New value: +"Exact dataset identifier obtained from 'list_japan_datasets' (lowercase snake_case, e.g., 'demographics', 'procurement', 'medical', 'renewable_energy', 'companies')."
      • addedOutput schema / properties / dataset_id / description
        Added value: +"The inspected dataset identifier."
      • addedOutput schema / properties / sample_record / description
        Added value: +"A single sanitized sample row demonstrating actual field values."
      • addedOutput schema / properties / schema / description
        Added value: +"Mapping of column names to their data types and formats."
    • Changedexecute_japan_megabank_sql5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / sql / description
        Previous value: -"Read-only SQL SELECT query (e.g., SELECT prefecture, count(*) AS cnt FROM medical GROUP BY 1 ORDER BY 2 DESC LIMIT 10)."New value: +"Single read-only DuckDB SQL SELECT statement. DDL/DML statements are rejected. Always include a LIMIT clause (e.g., 'SELECT prefecture_en, COUNT(*) AS cnt FROM medical GROUP BY 1 ORDER BY 2 DESC LIMIT 10')."
      • addedOutput schema / properties / columns / description
        Added value: +"Ordered list of column names in the query result."
      • addedOutput schema / properties / row_count / description
        Added value: +"Number of result rows returned by the SQL query."
      • addedOutput schema / properties / rows / description
        Added value: +"List of result row objects mapped by column name."
    • Changedlist_flagship_b2b_bundles4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / bundle_code / description
        Previous value: -"Optional bundle code filter (e.g., 'BUNDLE-01' through 'BUNDLE-05')."New value: +"Optional exact bundle identifier from 'BUNDLE-01' to 'BUNDLE-05' (case-insensitive). If omitted, returns all 5 flagship bundles."
      • addedOutput schema / properties / bundles / description
        Added value: +"List of bundle metadata objects with bundle_code, title, datasets_included, records, and price_jpy."
      • addedOutput schema / properties / total / description
        Added value: +"Number of flagship bundles returned."
    • Changedlist_japan_datasets7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of datasets to return (default: 25, max: 155)."New value: +"Maximum number of dataset catalog entries to return (1 to 155, default: 25)."
      • addedInput schema / properties / limit / maximum
        Added value: +155
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Optional keyword in English or Japanese (e.g. 'procurement', 'hospital', 'solar', 'ๅ…ฅๆœญ', 'ๅŒป็™‚')."New value: +"Optional case-insensitive keyword filter in English or Japanese to match dataset IDs or titles (e.g., 'procurement', 'hospital', 'solar', 'ๅ…ฅๆœญ', 'ๅŒป็™‚'). If omitted, returns the top catalog entries."
      • addedOutput schema / properties / datasets / description
        Added value: +"List of matching dataset metadata objects containing dataset_id, title_en, records, and coverage."
      • addedOutput schema / properties / total / description
        Added value: +"Total number of datasets available in the catalog."
    • Changedsearch_japan_official_data11 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / corporate_number / description
        Previous value: -"13-digit Japan National Tax Agency corporate number (or 10-digit US SEC CIK)."New value: +"Optional exact 13-digit Japan National Tax Agency corporate number string (e.g., '1000012010019') or 10-digit US SEC CIK."
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Target dataset ID (e.g., 'demographics', 'procurement', 'medical', 'companies', 'real_estate')."New value: +"Target dataset ID obtained from 'list_japan_datasets' (e.g., 'demographics', 'procurement', 'medical', 'companies', 'real_estate')."
      • changedInput schema / properties / limit / description
        Previous value: -"Number of records to return (default: 10, max: 100)."New value: +"Maximum number of matching records to return (1 to 100, default: 10)."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / municipality_code / description
        Previous value: -"5-digit JIS municipality code with leading zero preserved (e.g., '13101', '01101')."New value: +"Optional 5-digit JIS municipality code string with leading zero preserved (e.g., '13101' for Chiyoda-ku, '01101' for Sapporo)."
      • changedInput schema / properties / prefecture / description
        Previous value: -"Prefecture name in English or Japanese (e.g., 'Tokyo', 'Osaka', 'Hokkaido', 'ๆฑไบฌ้ƒฝ')."New value: +"Optional prefecture filter in English romaji or Japanese kanji (e.g., 'Tokyo', 'Osaka', 'Hokkaido', 'ๆฑไบฌ้ƒฝ'). Case-insensitive."
      • changedInput schema / properties / q / description
        Previous value: -"Free-text search keyword (company name, facility name, contract title, etc.)."New value: +"Optional case-insensitive free-text substring search across company names, facility names, address fields, or contract titles (e.g., 'Cloud', 'Hospital')."
      • addedOutput schema / properties / count / description
        Added value: +"Number of records returned or matched."
      • addedOutput schema / properties / records / description
        Added value: +"Array of normalized record objects matching the filter criteria."
  2. 1 tool updatev1.0.2
    • Changedlist_flagship_b2b_bundles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "bundles": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
  3. 5 tool updatesv0.1.0
    • First observeddescribe_japan_dataset
    • First observedexecute_japan_megabank_sql
    • First observedlist_flagship_b2b_bundles
    • First observedlist_japan_datasets
    • First observedsearch_japan_official_data

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a clearly distinct role (discover datasets, inspect schema, fetch rows, run SQL, list B2B bundles), and descriptions explicitly cross-reference WHEN NOT TO USE. The only mild overlap is between search_japan_official_data and execute_japan_megabank_sql, since both retrieve records, but the simple-lookup vs JOIN/aggregation boundary is well delineated.

Naming Consistency4/5

All names follow a consistent snake_case verb_noun pattern (list_*, describe_*, search_*, execute_*). Minor inconsistency in the domain qualifier used (japan, japan_official, japan_megabank, flagship_b2b) and singular/plural switch between describe_japan_dataset and list_japan_datasets, but the convention is still predictable.

Tool Count5/5

Five tools is well-scoped for a data-discovery-and-query server, and each earns its place covering a distinct stage of the workflow. No redundant or trivial tools, and nothing feels artificially padded.

Completeness4/5

The read-only lifecycle is well covered: discover datasets, inspect schema, fetch rows, run cross-table SQL, plus a B2B bundle listing. The main gap is the absence of an export/download or bundle-purchase action, but for a read-only query surface the coverage is essentially complete.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server implementation that connects AI assistants to DuckDB, enabling them to query and analyze data from various sources including CSV, Parquet, JSON, and cloud storage through SQL.
    19
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server for discovering, downloading, querying, and analyzing datasets from Ontario's open data portals, allowing natural language questions and high-performance analytics via DuckDB.
    23
    1
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for searching Japanese government procurement notices via the Kanpou API. Enables LLMs to search by date, keyword, or detailed criteria.
    3
    1
    -