行政手続データ(administrative-procedures-mcp)と Quarto の統合

デジタル庁の行政手続データ分析 MCP サーバー(apcli)からデータを取得し、Quarto でレポート化・自動化する活用例

概要

administrative-procedures-mcp は、デジタル庁が公表する行政手続等の棚卸調査結果(約 75,000 件)を検索・集計できる MCP サーバーです。MCP 対応チャット(Claude Desktop など)から自然言語で利用できるほか、LLM 不要の専用 CLI apcli も同梱されています。

Quarto(quarto-dsh)と組み合わせることで、データ取得・集計(MCP / apcli)分析・可視化・レポート生成(Quarto) を分担し、データ更新からレポート公開までを自動化できます。

Warning

本リポジトリは技術検証を目的としたサンプルコードです(MIT License)。

  • 動作の安定性・継続的な保守・搭載データの正確性は保証されません。
  • 出力は政府の公式見解ではありません。データ利用時は原典資料を併せて確認してください。
  • 本ページの内容は検証時点の仕様に基づくもので、将来変更される可能性があります。

準備

git clone https://github.com/digital-go-jp/administrative-procedures-mcp.git
cd administrative-procedures-mcp
./setup.sh

setup.sh が依存のインストール・データ取得・接続方法の案内まで行います。手動で行う場合は次のとおりです。

uv sync --extra excel           # 依存インストール(uv を使う場合・推奨)
apcli fetch procedures-survey-r6  # 調査結果データを配布元から取得し Parquet に変換
Note
  • 調査結果データはリポジトリに同梱されていませんapcli fetch がデジタル庁の配布ページから最新版を取得し、datasets/procedures-survey-r6/data.parquet に変換します。
  • apcli fetch は同梱または内容を確認済みの dataset.yaml に対してのみ実行してください。
  • MCP 対応チャットから使う場合は、クローンしたディレクトリで Claude Code を起動すると .mcp.json により自動接続されます(Claude Desktop は apcli install desktop で登録)。

活用シナリオ例

MCP サーバーでデータ提供 → Quarto でレポート作成

Tipディレクトリ配置

このシナリオでは 2 つのリポジトリを使います。次のような配置を想定し、以後のパスはこれに従います。

work/
├── administrative-procedures-mcp/   # apcli 本体(fetch で Parquet 生成)
│   └── datasets/procedures-survey-r6/data.parquet
└── my-report/                        # Quarto プロジェクト(レポート本体)
    └── report.qmd

ローカルでは各々 git clone して、レポートの *.qmd からは ../administrative-procedures-mcp/datasets/... の相対パスで Parquet を読み込みます(CI では admin-procedures/ に配置されるため、*.qmd 内のパスは CI の構成に合わせて調整してください)。

  1. administrative-procedures-mcp をローカルまたはコンテナで起動し、行政手続データを HTTP/MCP エンドポイントで公開する。
# HTTP transport モード(既定は 127.0.0.1 のみにバインド)
fastmcp run -m admin_procedures --transport streamable-http --port 8000
  1. apcliquery / summarize コマンドで必要な集計結果やレコードを取得し、スクリプト(Python/R)で整形して data/ フォルダに保存する。
apcli query procedures-survey-r6 -q 相続 --limit 5     # データ検索
apcli summarize procedures-survey-r6 -g 所管府省庁 -m count  # 集計(短縮形)
apcli summarize procedures-survey-r6 -o result.html   # 自己完結型 HTML として保存
  1. quarto-dsh(Quarto プロジェクト)内で *.qmd ファイルを書き、fetch で生成された Parquet を読み込んでデータフレーム化する。
#| label: load-data
#| echo: false
import polars as pl

df = pl.read_parquet("../administrative-procedures-mcp/datasets/procedures-survey-r6/data.parquet")
  1. Quarto のコードチャンクで polarspandas を使って追加分析・可視化を行い、表やグラフを文書に埋め込む。
#| label: visualize
import polars as pl
import altair as alt

top = (
    df.group_by("所管府省庁")
    .len()
    .sort("len", descending=True)
    .head(10)
)
alt.Chart(top.to_pandas()).mark_bar().encode(
    x=alt.X("所管府省庁", sort="-y"),
    y="len",
).properties(title="所管府省庁ごとの手続件数(上位)")
Note

コードチャンクを実行する場合は、polarsaltair(および pandas)を環境にインストールしてください。

pip install polars pandas altair
Tip

apcli fetch が生成する Parquetpolars / pandas で直接読み込めるため、CSV へ変換せずに Quarto へ渡すのが推奨です(pl.read_parquet() / pd.read_parquet())。apcli 自体は HTML 出力(--html / -o)と標準出力を提供しており、CSV は入力側(apcli add --csv / prepare_dataset.py --csv)の形式です。

自動化パイプライン

GitHub Actions で apcli fetchquarto render → Pages デプロイまでを自動化するジョブを作成できます。

ここでは 2 つのリポジトリを扱います。Quarto プロジェクト(レポート本体、以下「レポートリポジトリ」)と、apcli を含む administrative-procedures-mcp のクローンです。ワークフローでは後者を admin-procedures/ サブディレクトリに取得します。

name: data-report
on:
  schedule:
    - cron: "0 3 * * 1"   # 毎週月曜 03:00 UTC
  workflow_dispatch:

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: pages
  cancel-in-progress: true

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Clone administrative-procedures-mcp
        uses: actions/checkout@v4
        with:
          repository: digital-go-jp/administrative-procedures-mcp
          path: admin-procedures

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"

      - name: Install apcli
        working-directory: admin-procedures
        run: |
          pip install uv
          uv sync --extra excel --frozen

      - name: Fetch latest data
        working-directory: admin-procedures
        env:
          ADMIN_PROCEDURES_DATA_DIR: ${{ github.workspace }}/admin-procedures
        run: apcli fetch procedures-survey-r6

      - name: Setup Quarto
        uses: quarto-dev/quarto-actions/setup@v2

      - name: Render report
        run: quarto render

      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v3
        with:
          path: _site
      - id: deployment
        uses: actions/deploy-pages@v4
  • 成果物は _site/(本サイトの output-dir)に出力され、upload-pages-artifactdeploy-pagesGitHub Pages へ公開されます。デプロイ手順は CI デプロイ と同じ構成です。
  • 社内サーバへ配布する場合は、レンダリング後に同じジョブで rsync -avz _site/ user@host:/path/to/webroot を実行しても構いません。
  • レポートが読む Parquet のパスは、admin-procedures/datasets/procedures-survey-r6/data.parquet を指すよう *.qmd 側を調整してください(後述のディレクトリ配置を参照)。
Note

apclidatasets/ の位置を環境変数 ADMIN_PROCEDURES_DATA_DIR で指定できます(未設定時はリポジトリルートを自動検出)。上の例では取得先を明示しています。

インタラクティブ UI

apcli preview で起動した MCP Apps UI をブラウザで確認しつつ、Quarto の quarto preview でドキュメントのライブプレビューを同時に行えます。

apcli preview            # ブラウザが開く(既定: http://127.0.0.1:8765/)
apcli preview --no-open  # ポートだけ公開(ブラウザを自動で開かない)
quarto preview           # Quarto ドキュメントのライブプレビュー
  • 必要に応じて apcli preview --no-open(または --port <PORT>)でポートだけ公開し、Quarto のカスタムテンプレートに埋め込んだ iframe で MCP Apps を表示させることも可能です。
  • apcli preview は Chrome(138 以降)の内蔵 AI(Gemini Nano)で動作確認するためのlocalhost 専用です。複数条件の組み合わせなど複雑なクエリは、CLI またはフル機能の LLM を使うのが確実です。
Warning

apcli preview は既定で 127.0.0.1 のみにバインドされ、外部公開は想定していません。--unsafe-expose で非 loopback に公開できますが、隔離された検証環境に限定してください。

再利用性と拡張

新しいデータセット(例: 別の府県の手続き調査)は、datasets/YAML 定義と Parquet を置くだけで、MCP サーバー側のコード変更なしで自動的に認識されます。

# CSV から YAML テンプレートと Parquet を生成
python -m admin_procedures.prepare_dataset my-dataset \
  --csv path/to/data.csv

生成後、datasets/my-dataset/dataset.yamldesc / codelist / notes / computed_measures を項目説明資料に基づいて補完し、Parquet を再生成します。

apcli list -q 手続     # データセット一覧をキーワードで絞り込み
apcli query my-dataset --limit 5   # 追加したデータセットを検索

Quarto 側は同じテンプレートを流用でき、*.qmd 内のデータセット ID と分析ロジックだけ差し替えれば、別データセット向けのレポートを作成できます。

まとめ

  • MCP サーバーは CLI(apcli)と HTTP でデータアクセスを統一し、データ取得・集計の中心とする。
  • Quarto(quarto-dsh分析・可視化・レポート生成のフロントエンドとして利用し、HTML / PDF / Word など多様な出力形式でステークホルダーに提供できる。
  • GitHub Actionsapcliquarto を組み合わせれば、データ更新からレポート公開までの完全自動化パイプラインが構築できる。

関連