README in English is here
政府統計の総合窓口(e-Stat)のAPI機能を生成AIが扱えるようにするMCPサーバです。
Model Context Protocol (MCP)は、アプリケーションが何を提供してくれるかを生成AIに教えるための様式です。Anthropicが2024年11月に提唱し、標準になりつつあります。生成AIからのリクエストを待つサーバとして実装したものを、MCPサーバと呼びます。既存のサービスを生成AIが扱えるようにするMCPサーバが数多く作られています。
-
get_tables
- 統計表情報取得(URL: getStatsList)を行います。
-
get_surveys
- 統計表情報取得(URL: getStatsList)の中の統計調査名一覧取得を行います。
-
get_metadata
- メタ情報取得(URL: getMetaInfo)を行います。
- 必須パラメータ
- 統計表ID(statsDataId)
-
get_data
- 統計データ取得(URL: getStatsData)を行います。
- 必須パラメータ
- 統計表ID(statsDataId)
それぞれの関数ではe-StatのAPIレスポンスを簡略化したJSON形式に変換して返すように実装しています。
利用ガイドに従ってe-Statのユーザ登録を行い、アプリケーションIDを取得してください。
Claude Desktopを使う場合は、claude_desktop_config.json
に次の記述を加えてください。claude_desktop_config.json
はMacの場合は~/Library/Application\ Support/Claude/
、Windowsの場合は%AppData%\Claude\
にあります。
{
"mcpServers": {
"eStatMCP": {
"command": "java",
"args": [
"-jar",
"build/libs/<your-jar-name>.jar"
],
"env": {
"ESTAT_API_KEY": "<アプリケーションID>",
"RESPONSE_SIZE": "100"
}
}
}
}
{
"mcpServers": {
"eStatMCP": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ESTAT_API_KEY",
"-e",
"RESPONSE_SIZE",
"ichiro21/estat-mcp"
],
"env": {
"ESTAT_API_KEY": "<アプリケーションID>",
"RESPONSE_SIZE": "100"
}
}
}
}
<アプリケーションID>
には、ご自身のe-StatのアプリケーションIDを入れてください。
RESPONSE_SIZE
には、e-Stat APIから1度に受信するデータ数を指定します。AIチャットのコンテキスト長を制限したい場合に使用します。e-Stat API側のデフォルトは100,000です。
VS Codeを使う場合は、settings.json
に次の記述を加えてください。settings.json
はVS CodeでCtrl + Shift + P
を押すと出てくるメニューからPreferences: Open User Settings (JSON)
を選ぶと開くことができます。
{
"mcp": {
"servers": {
"eStatMCP": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ESTAT_API_KEY",
"-e",
"RESPONSE_SIZE",
"ichiro21/estat-mcp"
],
"env": {
"ESTAT_API_KEY": "${env:ESTAT_API_KEY}",
"RESPONSE_SIZE": "100"
}
}
}
}
}
VS Codeでは設定の中でOSの環境変数を${env:ESTAT_API_KEY}
のように呼び出すことができます。OSの環境変数を使わない場合は直接記述するか、VS Codeに記憶させることができます。(こちらの記入例を参照)
このMCPサーバをビルドするにはJava 17かそれ以降のバージョンとGradleが必要です。次のコマンドでjarファイルを作成します。
./gradlew clean build -x test
https://claude.ai/share/ac66bee7-1178-4f8a-977c-cdd6629c0f21
調べたい調査名か決まっていないときは統計表を検索する前に統計調査を検索することができます。
https://claude.ai/share/5f6874e2-4fc6-42e5-a8dd-6e8feb6158df
人口推計の最新のデータを取得してくれました。
https://claude.ai/share/d393e0cc-50ec-4770-9ae0-600740bb275d
家計調査の結果表のメタデータが大きすぎてClaudeのコンテキスト長を超えてしまいました。
https://claude.ai/share/e33bbc27-6094-4feb-984f-5c2cf6d5e5a2
統計調査名、項目名まで指示したら的確に取得してくれました。人口推計の「参考表」を取得させないために、「統計表」で検索するように指定しています。