mcpField
F
FYI MCP

FYI MCP

ローカル
github.com/edithatogo法務・行政111 週間前に更新

FYI MCP について

FYI MCP は、Alaveteli 系サービス向けのプライバシー重視型情報公開請求管理ツールの MCP サーバーです。Rust 製コマンドラインツールと連携し、複数の管轄地域での請求追跡とアーカイブに対応します。データはローカルに保存でき、暗号化も選択できます。

主な機能

  1. 01情報公開請求ワークフローの管理
  2. 02Alaveteli インスタンスへの対応
  3. 03請求の更新監視
  4. 04通信記録と添付ファイルの保管
  5. 05JSON、CSV、HTML への出力
  6. 06ローカル機密データの暗号化

活用シーン

  1. 01複数地域にまたがる請求の追跡
  2. 02情報公開請求の進捗確認
  3. 03請求の通信記録と添付ファイルの保管
  4. 04報告用の請求記録の出力

MCP 対応

Rust 製の `fyi-mcp` サーバーが、AI アシスタント向けに FYI の請求管理機能を MCP インターフェースで提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbfyi-mcp-0.1.2-win32.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

FYI CLI

Alaveteli ベースのプラットフォーム向けの、複数の管轄区域に対応した情報公開請求(FOI)クライアント — ニュージーランド、オーストラリア、英国、その他あらゆる Alaveteli の導入環境(foi-repository、WhatDoTheyKnow、FragDenStaat など)で、プライバシーを重視した単一の CLI から、公式な情報公開請求を追跡、提出、保存できます。

PyPI version Crates.io License: MIT CI Codecov smithery badge Glama MCP Registry

プロジェクトの中核はRust ワークスペース(fyi-core、fyi-cli、fyi-mcp)です。レガシーの Python パッケージ(fyi_system)はリファレンス実装として引き続き利用できますが、今後拡張されることはありません。

fyi-cli / fyi-mcp の掲載先
レジストリ/カタログパッケージ/サーバーステータスリンク
公式 MCP レジストリio.github.edithatogo/fyi-mcp @ 0.1.2公開中registry.modelcontextprotocol.io · server.json
OpenAI プラグインディレクトリ(Codex)fyi-mcp プラグインパケットアセット準備完了 — 外部への提出待ちpackaging/ai-plugins/codex/
Anthropic Claude Connectorsfyi-mcp コネクターパケットアセット準備完了 — ホスト型 HTTPS デプロイと外部への提出待ちpackaging/ai-plugins/anthropic/
Glamaedithatogo/fyi-cli(fyi-mcp)公開中glama.ai/mcp/servers/edithatogo/fyi-cli · スコア
Smitheryedithatogo/fyi-mcp公開中(スコア待ち)smithery.ai/server/@edithatogo/fyi-mcp
PyPIfyi-cli(レガシー Python パッケージ)公開中pypi.org/project/fyi-cli
Crates.iofyi-cli/ワークスペースのクレート公開済み/リリースフローcrates.io/crates/fyi-cli
GitHub ReleasesCLI + MCPB アセット公開中リリース
Awesome-MCP-ServersLegal セクションのエントリーPR 提出済みPR #9693
GitHub curated MCP(github.com/mcp)—外部要因により保留(手動オンボーディング)#32 で追跡中

下書き/未提出: Scoop、WinGet、Homebrew、Chocolatey、GHCR マルチアーキテクチャワークフロー、PulseMCP、mcp.so、Docker MCP Catalog、mcp-get、OpenTools、AUR、nixpkgs、Snap、Flatpak、asdf/mise、Debian/PPA、Fedora/COPR。

cargo-binstall はすでにアセット準備完了で、リポジトリ内に組み込まれていますが、配布経路として公開済みと見なすには、GitHub Release の対応アセットが必要です。Codex および Anthropic のパケットもアセット準備完了ですが、外部への提出が必要です。

計画中の配布先を含むステータス一覧:docs/registry-distribution-matrix.md。


🚀 クイックスタート

# Install (Rust workspace, recommended)
cargo install --path crates/fyi-cli
# or: cargo install fyi-cli   (once published to crates.io)

# Initialize
fyi-cli init-db

# Create your first request
fyi-cli register-request ministry-of-justice "OIA Request" "Request body..." --status draft

# Track and manage requests
fyi-cli list-requests

詳しいガイド: QUICKSTART.md


✨ 機能

  • 🌐 複数の管轄区域に対応:foi-repository(NZ)、WhatDoTheyKnow(UK)、FragDenStaat(Germany)、righttoknow.org.au(Australia)など、あらゆる Alaveteli のデプロイ環境で動作します。管轄区域に応じたメタデータとローカライズにも対応予定です
  • 🔒 プライバシー優先:すべてのデータをローカルに保存し、暗号化を任意で設定できます。Tor にも対応しています
  • 📊 請求を追跡:情報公開請求を作成から完了まで監視します
  • 🤖 自動監視:インスタンスの更新を自動で監視します
  • 📈 レポートと分析:ダッシュボード、対応が必要な項目のレポート、引き継ぎ資料を作成します
  • 🔐 安全なストレージ:認証情報を暗号化し、OS のキーリングと統合します
  • 💻 CLI + MCP:コマンドラインツールと、AI アシスタント向けの MCP サーバー
  • 📦 エクスポートオプション:JSON、CSV、HTML 形式でエクスポートできます
  • 🗄️ 忠実なアーカイブ:請求、やり取り、添付ファイルを WARC/WACZ 形式で取得します

📦 インストール

完全ガイド(Rust を優先し、すべての配布経路を網羅): INSTALL.md · バージョン 0.1.2 · ホームページ github.com/edithatogo/fyi-cli

経路コマンド/場所備考
Cargo(クローン)cargo install --path crates/fyi-cli推奨
Cargo(crates.io)cargo install fyi-cli公開後
cargo-binstallcargo binstall fyi-cliアセットの準備完了 — 一致するリリースアセットが必要です
GitHub Releasesリリースビルド済み CLI/MCPB。タグごとのアセット名を確認してください
PyPI(旧版)pip install fyi-cliPython の fyi_system。拡張されていません
MCP バイナリcargo install --path crates/fyi-mcpまたは Releases から MCPB を入手
MCP レジストリOfficial / Glama / Smithery公開中 — 上の表を参照してください
コンテナーghcr.io/edithatogo/fyi-mcpアセットの準備完了 — docs/containers.md
Scoop、WinGet、Homebrew、Chocolatey、AUR、nix、Snap、Flatpak、Debian、Fedora、asdf、misepackaging/ 配下のドラフト公開中とは表明していません — docs/installation-package-managers.md
git clone https://github.com/edithatogo/fyi-cli.git
cd fyi-cli
cargo install --path crates/fyi-cli --locked
fyi-cli --help

公開中のリストとドラフトの状況:fyi-cli / fyi-mcp の掲載先 · 完全な一覧:docs/registry-distribution-matrix.md · MCP カタログのチェックリスト:packaging/mcp-catalogs/SUBMISSION_CHECKLIST.md。


📖 ドキュメント

ドキュメント説明
ドキュメントサイトドキュメント全文(Astro + Starlight)
docs/cli-entrypoints-audit.mdPython CLI、Rust CLI、Rust MCP の各インターフェースを網羅した正式な相互参照
docs/upstream-relations.mdAlaveteli/インスタンス運用者のエチケットと連絡記録
docs/registry-distribution-matrix.mdMCP カタログ、パッケージマネージャー、コンテナーの状況
docs/external-registry-followups.mdSmithery スコアと GitHub MCP 導入手順
docs/installation-package-managers.mdパッケージマネージャーによるインストールの草稿(Scoop、WinGet、brew、…)
docs/containers.mdfyi-mcp コンテナー/GHCR
QUICKSTART.md5 分で始めるガイド
USER_GUIDE.md詳細なユーザードキュメント
INSTALL.mdインストールガイド(Rust を優先、すべての配布方法)
API_KEY_SETUP.mdAPI キーの取得と設定方法
CONFIGURATION.md設定リファレンス
TROUBLESHOOTING.mdトラブルシューティングガイド
FAQ.mdよくある質問
CHANGELOG.mdバージョン履歴
CONTRIBUTING.md貢献方法
CITATION.cffリリースの引用メタデータ
.zenodo.jsonZenodo リリースメタデータのソース

📚 引用と Zenodo

リリースメタデータは CITATION.cff、.zenodo.json、および artifacts/release/zenodo-mirror-manifest.json でバージョン管理されています。DOI フィールドは、タグ付きリリースに対応する Zenodo の公開レコードが確認されるまで未設定のままです。


🛡️ セキュリティ

脆弱性の報告

セキュリティ脆弱性を公開 GitHub イシューで報告しないでください。

GitHub の非公開の脆弱性報告機能を利用してください: https://github.com/edithatogo/fyi-cli/security/advisories/new

セキュリティポリシー: SECURITY.md

セキュリティ機能
  • ✅ 機密データを AES-256-GCM で暗号化
  • ✅ PBKDF2-HMAC-SHA256 による鍵導出
  • ✅ 認証情報の保存に OS のキーリングを統合
  • ✅ 改ざんを検知できる監査ログ
  • ✅ 安全なセッション管理
  • ✅ 入力の検証とサニタイズ
  • ✅ セキュリティヘッダー(CSP、HSTS、X-Frame-Options)
  • ✅ セキュリティの自動スキャン(CodeQL、pip-audit、bandit)

🧪 テスト

# Rust release checks used by this repository
cargo +stable-x86_64-pc-windows-gnu fmt --all -- --check
cargo +stable-x86_64-pc-windows-gnu clippy --workspace --all-targets --all-features -- -D warnings
cargo +stable-x86_64-pc-windows-gnu test --workspace --all-features

# Python legacy/support checks
.\.venv\Scripts\python.exe -m pytest tests/test_release_readiness.py

# Opt-in live smoke test
FYI_LIVE_SMOKE=1 .\.venv\Scripts\python.exe -m pytest -m smoke tests/test_discovery_smoke.py

テストカバレッジ: Rust ワークスペースのチェックをリリースのゲートとしています。従来のドキュメントとアーカイブ用ツールでは、Python のサポートテストも引き続き利用できます。


🤝 貢献

貢献を歓迎します!ガイドラインについては CONTRIBUTING.md をご覧ください。

コントリビューター向けクイックスタート
# Fork and clone
git clone https://github.com/YOUR_USERNAME/fyi-cli.git
cd fyi-cli

# Build & test the Rust workspace
cargo build --workspace --all-features
cargo test --workspace --all-features

# Make your changes, then submit a PR
git commit -m "feat: Add awesome feature"
git push origin feature/awesome-feature

従来の Python fyi_system パッケージを含む開発環境の完全なセットアップについては、CONTRIBUTING.md をご覧ください。

行動規範

このプロジェクトにはコントリビューター行動規範が適用されます。このプロジェクトに参加することで、その規約に従うことに同意したものとみなされます。


📊 プロジェクトの状況

GitHub Projects

このリポジトリのプロジェクトボードは fyi-cli Conductor ロードマップです。 ローカルの.conductor/tracks.mdレジストリを反映し、完了したConductorの作業、リリース準備項目、外部MCPレジストリに関するフォローアップを追跡します。

包括プロジェクトの Aotearoaのオープンな情報公開に関する希少な洞察 は、項目単位で同期されています。GitHub Projectsはプロジェクトのネストに対応していないため、同期は scripts/sync_github_projects.pyと、手動/スケジュール実行のproject-syncワークフローで処理します。

# Preview synchronization without changing either project
.\.venv\Scripts\python.exe scripts\sync_github_projects.py --dry-run

# Apply synchronization from fyi-cli project 6 into RIOPA project 4
.\.venv\Scripts\python.exe scripts\sync_github_projects.py

このワークフローでは、ユーザーレベルのProjectsV2への書き込みに必要なGitHub Projectsアクセス権を持つ、PROJECT_SYNC_TOKENという名前のリポジトリシークレットが必要です。同期は慎重に行われます。RIOPAに不足しているfyi-cliのIssue/PR項目を追加し、共通のステータス値をコピーし、fyi-cliにオプションがない場合はRIOPAのミラー元をotherに設定します。また、包括ボードの項目は削除しません。

プロジェクトのステータス

このプロジェクトは、ニュージーランド専用ツールから、Rustワークスペースを基盤とする複数の管轄区域に対応したFOI/Alaveteliプラットフォームへと、積極的に進化しています。現在の作業は.conductor/tracks.mdにあるConductorのトラックで追跡し、GitHubのエピックIssue(#37~#46)とそのサブIssueにも反映しています。最新のステータスは以下のプロジェクトボードを、リリース済みバージョンについてはCHANGELOG.mdをご覧ください。


🔗 互換性のあるプラットフォーム

FYI CLIは、Alaveteliをベースとするあらゆるプラットフォームで動作します。現在、組み込みの管轄区域カタログには以下が含まれています。

プラットフォーム地域URL
foi-repositoryニュージーランドfoi-repository
RightToKnowオーストラリアhttps://www.righttoknow.org.au
WhatDoTheyKnowイギリスhttps://www.whatdotheyknow.com
MyRightToKnowアイルランドhttps://www.myrightrtoknow.org
Ma Da Da (CADA)フランスhttps://www.madada.fr
Tu Derecho a Saberスペインhttps://www.tuderechoasaber.es
FragDenStaatドイツhttps://fragdenstaat.de
Alaveteli任意セルフホスト型インスタンス

追加インスタンスと英語以外のローカライズを対象とする展開計画については、.conductor/tracks/jurisdiction-*をご覧ください。


📋 CLI コマンド

アーカイブの探索

アーカイブ関連のコマンドは読み取り専用で、APIキーは必要ありません。

# Import the official FYI authority list into the local SQLite database
fyi import-authorities

# Walk the public search feed for a date window and save discovered requests
fyi discover --date-from 2024-01-01 --date-to 2024-02-01 \
  --checkpoint data/_state/discovery-2024-01.json \
  --output data/_state/discovered-2024-01.jsonl

# Probe a numeric request ID range for gaps
fyi discover --backfill-ids --id-from 1 --id-to 5000 \
  --output data/_state/backfill-1-5000.jsonl

# Compare feed discovery against the ID backfill
fyi discover-reconcile \
  --feed data/_state/discovered-2024-01.jsonl \
  --backfill data/_state/backfill-1-5000.jsonl \
  --output data/_state/discovery-reconciliation.json

読み取り専用の機関情報の検出

discover-bodies では、--base-url はインスタンス/取得先のURLとして維持されます。機関CSVが明示的な別のURLでホストされている場合に限り、別個の --catalog-url オプションを使用してください。

fyi discover-bodies --base-url https://www.righttoknow.org.au \
  --catalog-url https://catalog.example/au-authorities.csv \
  --rate-limit-name archive-discovery-au-rtk --format jsonl --output bodies.jsonl

--format jsonl では、各出力行には下流との安定した契約フィールドである url_name、name、tags[] のみが含まれます。デフォルトのJSON形式には、監査記録用の取得来歴も含まれます。どちらのモードも読み取り専用で、robotsに対応し、設定済みの共有リミッターを使用します。

JSON出力には、有効なカタログURL、デフォルトと上書きのどちらが使用されたか、取得時刻、HTTPステータス、行数、生のCSVペイロードのSHA-256が含まれます。上書きは読み取り専用であり、引き続きカタログホストのrobotsポリシー、連絡可能なUser-Agent、リトライ時のバックオフ、共有レートリミッターを使用します。上書きURLは信頼できる設定として扱ってください。検出先を別の機関セットに切り替える可能性があるため、アーカイブの来歴と合わせて確認し、記録する必要があります。

検出では連絡可能なUser-Agentを使用し、robots.txtを確認して、一時的な429/5xx応答時にはバックオフします。実際の実行では適切な負荷に保ち、小さな日付範囲を使い、チェックポイントから再開し、アーカイブ作業は、同じ階層にあるfyi-archiveリポジトリのdocs/ethics-and-compliance.mdに記載された倫理ガイダンスに沿って調整してください。

Rustのfyi-coreネットワーク経路が、リソースを考慮した主要な実装です。RateLimit-*/Retry-Afterを解析し、ペースを調整し、リクエスト数/バイト数/時間のガードレールを適用し、負荷のメモリを永続化し、安全なGETをキャッシュして、シークレットを除去したJSONLトレースを出力できます。Pythonは意図的に互換性を保った検出/取得経路であり、同じ識別およびリトライのエチケットに従います。

並行ワーカーを使用する場合は、discoverとbackfillを同じSQLiteデータベースに向け、--dbを指定してください。これにより、プロセス間でリクエスト枠を1つにまとめて予約し、通常の予約と一時的な失敗時のバックオフイベントの両方を記録する、共有のクロスワーカーリミッターが有効になります。fyi rate-limit-status --db fyi_system.dbで現在の状態を確認できます。

CLIとMCPのインターフェース

コマンドとサーバーの完全な相互参照は、docs/cli-entrypoints-audit.mdで管理されています。Python CLIのエントリーポイント(fyi、fyi-cli、fyi-system)、Rust CLIバイナリ(fyi-cli)、公開されているレジストリページを含むRust MCPサーバー(fyi-mcp)を網羅しています。

オプトインの実環境スモークテスト:

FYI_LIVE_SMOKE=1 pytest -m smoke tests/test_discovery_smoke.py

AU RightToKnowのスモークテストは、検出ページ1ページ、リクエスト取得5件以内に制限されています。一時テストディレクトリにのみ書き込み、FYI_LIVE_SMOKE=1が明示的に設定されている場合を除き、無効のままです。

現在の実環境での検証では、制限されたJSON検索リクエストに対してRightToKnowがHTTP 403を返したため、スモークテストでは外部要因による利用不可として明示的にスキップを記録し、取得を試みません。この動作によって、デフォルトのオフラインCIの挙動が変わったり、拒否されたリクエストを積極的に再試行したりすることはありません。

忠実なアーカイブ取得

fyi captureは、公開リクエストのJSON、レンダリング済みHTML、添付ファイルをWARCレコードとして保存し、添付ファイルのバイト列をSHA-256で重複排除し、下流のデータセットツール用に派生リクエストビューを維持します。

fyi capture 12345 \
  --data-dir data \
  --dist-dir dist \
  --max-bytes 500000000 \
  --max-runtime-minutes 30

取得データの構成:

data/
  warc/<runid>-<request>.warc.gz
  attachments/<sha-prefix>/<sha256>
  raw/requests/<authority>/<request_id>/
    request.json
    page.html
    attachments.json
    snapshot_meta.json
dist/
  site_snapshots/<YYYYMMDD>.wacz

各日次WACZには追記できます。後続の取得では、archive/の下に別のWARCセグメントを追加し、datapackage.jsonのリソースメタデータを統合します。WACZ/WARCに対応するリプレイツールでは、dist/site_snapshots/からパッケージを開けます。低レベルの調査には、パッケージを展開し、warcioでWARCセグメントを読み取ってください。

# Database
fyi init-db                    # Initialize database
fyi config show                # Show configuration

# Requests
fyi register-request ...       # Create new request
fyi list-requests              # List all requests
fyi request-detail <id>        # View request details
fyi set-status <id> <status>   # Update status

# Submission
fyi build-prefilled-url <id>   # Generate submission URL

# Monitoring
fyi ingest-feed <url>          # Ingest RSS/Atom feed
fyi scheduler <url>            # Run continuous monitoring
fyi discover                   # Discover public FYI requests
fyi discover-reconcile         # Compare discovery JSONL outputs

# Reports
fyi dashboard --output ...     # Generate dashboard
fyi attention-report           # Generate attention report
fyi handover --output ...      # Generate handover document

# Export
fyi export-requests            # Export all requests
fyi export-bundle <id>         # Export request bundle

# Security
fyi privacy-audit              # Privacy compliance check
fyi health-check               # System health verification

CLIの完全なリファレンス: fyi --helpまたはUSER_GUIDE.mdを参照してください。


🏗️ アーキテクチャ

┌───────────────────────────────────────────────────────────────┐
│                         fyi-cli workspace                      │
├───────────────────┬───────────────────────┬───────────────────┤
│   fyi-cli (bin)   │   fyi-mcp (MCP server) │  legacy fyi_system │
│  CLI commands,     │  JSON-RPC over stdio,   │  (Python, reference │
│  TUI dashboard      │  tools for AI assistants│  implementation)   │
├───────────────────┴───────────────────────┴───────────────────┤
│                          fyi-core (lib)                         │
│   Alaveteli API client · Tor client · encryption/keyring ·       │
│   sync engine · jurisdiction/instance registry (in progress)     │
├─────────────────────────────────────────────────────────────────┤
│                        SQLite database                          │
│      (requests, correspondence, authorities, sync_metadata)     │
├─────────────────────────────────────────────────────────────────┤
│      Alaveteli instances: foi-repository · WhatDoTheyKnow ·      │
│      FragDenStaat · righttoknow.org.au · any self-hosted deploy  │
└─────────────────────────────────────────────────────────────────┘

📜 ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。


🙏 謝辞

  • mySocietyのAlaveteliプラットフォームを基盤として構築されています
  • foi-repositoryの透明性向上への取り組みに着想を得ています
  • 暗号化にcryptographyを使用しています

📞 サポート


透明性とプライバシーを大切にして作られています ❤️

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。