mcpField
F
FYI MCP

FYI MCP

本地服务
github.com/edithatogo法律与政务111 周前更新

关于 FYI MCP

FYI MCP 是面向 Alaveteli 平台的隐私优先信息公开请求管理项目中的 MCP 服务组件。它与 Rust 命令行工具配套,可跨司法辖区跟踪和归档请求,并支持本地存储及可选加密。

主要功能

  1. 01管理信息公开请求流程
  2. 02支持 Alaveteli 实例
  3. 03监控请求更新
  4. 04归档往来通信和附件
  5. 05导出 JSON、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)客户端——通过一个注重隐私的 CLI,在新西兰、澳大利亚、英国及其他任何 Alaveteli 部署平台(foi-repository、WhatDoTheyKnow、FragDenStaat 等)上跟踪、提交和归档官方信息请求。

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 Registryio.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 / 工作区 crate已发布 / 发布流程中crates.io/crates/fyi-cli
GitHub ReleasesCLI + MCPB 资源已上线发布版本
Awesome-MCP-Servers法律板块条目已提交 PRPR #9693
GitHub 精选 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


✨ 功能

  • 🌐 多司法辖区:适用于任何 Alaveteli 部署——foi-repository(NZ)、WhatDoTheyKnow (UK)、FragDenStaat(Germany)、righttoknow.org.au(Australia)等,并将逐步支持司法辖区相关 元数据和本地化
  • 🔒 隐私优先:所有数据均存储在本地,可选加密,支持 Tor
  • 📊 跟踪请求:监控 FOI/OIA 请求从创建到完成的全过程
  • 🤖 自动监控:自动监控实例更新
  • 📈 报告与分析:生成仪表板、待关注报告和交接文档
  • 🔐 安全存储:加密凭据,集成操作系统密钥环
  • 💻 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.md如何获取和配置 API 密钥
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 中进行版本控制。只有在核实已标记发布版本对应的 Zenodo 在线记录后,才会填写 DOI 字段。


🛡️ 安全

漏洞报告

请勿通过公开的 GitHub issue 报告安全漏洞。

请使用 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

该工作流需要一个名为 PROJECT_SYNC_TOKEN 的代码仓库机密,以便通过 GitHub Projects 访问用户级 ProjectsV2 写入操作。同步策略较为谨慎:将缺少的 fyi-cli issue/PR 条目添加到 RIOPA,复制共享状态值;除非存在 fyi-cli 选项,否则将 RIOPA 镜像来源设为 other;并且绝不删除总看板上的条目。

项目状态

此项目正积极从仅面向 NZ 的工具发展为基于 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.myrighttoknow.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 指定。这样便可启用跨工作进程共享限流器,它会在多个进程间预留一个聚合请求时段,并记录常规预留和暂时性故障退避事件。使用 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 冒烟测试仅限一个发现页面,且最多采集五个请求。它只写入临时测试目录,并且只有在明确设置 FYI_LIVE_SMOKE=1 时才会启用。

在当前的实时验证中,RightToKnow 对受限的 JSON 搜索请求返回了 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 进行加密

📞 支持


为透明与隐私倾心打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。