
FYI MCP
io.github.edithatogo由 GitHub 账号 edithatogo 发布v0.1.2更新于 Oct 25, 2026
FYI request management with tools for requests, authorities, correspondence, sync, and health.
概览
一个本地 MCP 服务器,用于在 Alaveteli 平台上管理信息公开(FOI)请求,提供请求、机构、往来函件、同步和健康检查等工具。
- 可以做什么
- 登记、列出、查看并更新本地数据库中 FOI/OIA 请求的状态,并为其生成预填的提交链接。从 Alaveteli 实例导入和发现公开机构与请求,并核对发现结果。摄取信息源、运行定时监控,并为跟踪的请求同步往来函件。生成仪表板、关注事项报告和交接文档,并导出请求或请求包。对本地存储运行健康检查和隐私检查。
- 适用场景
- 适合在 WhatDoTheyKnow、RightToKnow、FragDenStaat 等 Alaveteli 站点提交或跟踪信息公开请求的人,希望借助助手在本地数据库中整理、监控并汇报这些请求。若只需一次性网页查询,则用处不大。
- 运行要求
- 作为本地进程在用户机器上运行(仅桌面端),可从发布包安装,或用 Cargo 从 Rust 工作区构建。需要先初始化本地 SQLite 数据库。发现、信息源摄取、同步和抓取 Alaveteli 实例需要网络访问;归档发现命令为只读,无需 API 密钥。
安装
在 SourceWeft 中
- 打开 控制台中的 FYI MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
FYI CLI
A multi-jurisdiction Freedom-of-Information (FOI) client for Alaveteli-based platforms — track, submit, and archive official information requests across New Zealand, Australia, the UK, and any other Alaveteli deployment (foi-repository, WhatDoTheyKnow, FragDenStaat, and more), from a single privacy-focused CLI.
[PyPI version] [Crates.io] [License: MIT] [CI] [Codecov] [smithery badge] [Glama] [MCP Registry]
The project's core is a Rust workspace (fyi-core, fyi-cli, fyi-mcp); a legacy Python
package (fyi_system) remains available as a reference implementation but is no longer extended.
Where fyi-cli / fyi-mcp is listed
Draft / not yet submitted: Scoop, WinGet, Homebrew, Chocolatey, GHCR multi-arch workflow, PulseMCP, mcp.so, Docker MCP Catalog, mcp-get, OpenTools, AUR, nixpkgs, Snap, Flatpak, asdf/mise, Debian/PPA, Fedora/COPR.
cargo-binstall is already assets-ready and wired in-repo, but still depends on matching GitHub Release assets before it can be treated as a live distribution path. Codex and Anthropic packets are assets-ready but still require external submission.
Full status matrix (including planned channels): docs/registry-distribution-matrix.md.
🚀 Quick Start
Full guide: QUICKSTART.md
✨ Features
- 🌐 Multi-Jurisdiction: Works with any Alaveteli deployment — foi-repository (NZ), WhatDoTheyKnow (UK), FragDenStaat (Germany), righttoknow.org.au (Australia), and more, with jurisdiction-aware metadata and localization on the way
- 🔒 Privacy-First: All data stored locally, optional encryption, Tor support
- 📊 Track Requests: Monitor FOI/OIA requests from creation to completion
- 🤖 Automated Monitoring: Watch instances for updates automatically
- 📈 Reports & Analytics: Generate dashboards, attention reports, handover docs
- 🔐 Secure Storage: Encrypted credentials, OS keyring integration
- 💻 CLI + MCP: Command-line tool and an MCP server for AI assistants
- 📦 Export Options: JSON, CSV, HTML export capabilities
- 🗄️ Faithful Archiving: WARC/WACZ capture of requests, correspondence, and attachments
📦 Installation
Full guide (Rust-first, all channels): INSTALL.md · version 0.1.2 · homepage github.com/edithatogo/fyi-cli
Live listings and draft status: Where fyi-cli / fyi-mcp is listed · full matrix: docs/registry-distribution-matrix.md · MCP catalog checklist: packaging/mcp-catalogs/SUBMISSION_CHECKLIST.md.
📖 Documentation
📚 Citation and Zenodo
Release metadata is versioned in CITATION.cff, .zenodo.json, and
artifacts/release/zenodo-mirror-manifest.json. DOI fields remain unset until the live Zenodo
record is verified for the tagged release.
🛡️ Security
Reporting a Vulnerability
Please do NOT report security vulnerabilities through public GitHub issues.
Use GitHub's private vulnerability reporting: https://github.com/edithatogo/fyi-cli/security/advisories/new
Security Policy: SECURITY.md
Security Features
- ✅ AES-256-GCM encryption for sensitive data
- ✅ PBKDF2-HMAC-SHA256 key derivation
- ✅ OS keyring integration for credential storage
- ✅ Tamper-evident audit logging
- ✅ Secure session management
- ✅ Input validation and sanitization
- ✅ Security headers (CSP, HSTS, X-Frame-Options)
- ✅ Automated security scanning (CodeQL, pip-audit, bandit)
🧪 Testing
Test Coverage: Rust workspace checks are the release gate. Python support tests remain available for legacy docs and archive tooling.
🤝 Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Quick Start for Contributors
See CONTRIBUTING.md for the full development setup, including the legacy
Python fyi_system package.
Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
📊 Project Status
GitHub Projects
The project board for this repository is
fyi-cli Conductor Roadmap.
It mirrors the local .conductor/tracks.md registry and tracks completed
Conductor work, release-readiness items, and external MCP registry follow-ups.
The umbrella
Rare Insights on Open Policy from Aotearoa
project is synchronized at the item level. GitHub Projects does not support
nested projects, so synchronization is handled by
scripts/sync_github_projects.py and the
manual/scheduled project-sync workflow.
The workflow requires a repository secret named PROJECT_SYNC_TOKEN with
GitHub Projects access for user-level ProjectsV2 writes. The sync is
conservative: it adds missing fyi-cli issue/PR items to RIOPA, copies shared
status values, sets the RIOPA mirror source to other unless a fyi-cli option
exists, and never deletes umbrella-board items.
Project Status
This project is actively evolving from an NZ-only tool into a multi-jurisdiction FOI/Alaveteli
platform built on the Rust workspace. Current work is tracked as
Conductor tracks under .conductor/tracks.md, mirrored to GitHub epic
issues (#37-#46) and their sub-issues. See the project board below for live status, and
CHANGELOG.md for released versions.
🔗 Compatible Platforms
FYI CLI works with any Alaveteli-based platform. The embedded jurisdiction catalog currently includes:
See .conductor/tracks/jurisdiction-* for the rollout plan covering additional instances and
non-English localization.
📋 CLI Commands
Archive Discovery
The archive commands are read-only and do not require an API key.
Read-only authority discovery
discover-bodies keeps --base-url as the instance/capture URL. Use the
separate --catalog-url option only when the authority CSV is hosted at an
explicit alternate URL:
With --format jsonl, each output line contains only the stable downstream
contract fields url_name, name, and tags[]. The default JSON format also
includes retrieval provenance for audit records. Both modes are read-only,
robots-aware, and use the configured shared limiter.
The JSON output includes the effective catalog URL, whether the default or an override was used, retrieval time, HTTP status, row count, and a SHA-256 of the raw CSV payload. The override is read-only and still uses the catalog host's robots policy, contactable User-Agent, retry backoff, and shared rate limiter. Treat an override URL as trusted configuration: it can redirect discovery to a different authority set and should be reviewed and recorded alongside archive provenance.
Discovery uses a contactable User-Agent, checks robots.txt, and backs off on
transient 429/5xx responses. Keep live runs polite: use small date windows,
resume with checkpoints, and coordinate archive work with the ethics guidance in
the sibling fyi-archive repo at docs/ethics-and-compliance.md.
The Rust fyi-core network path is the primary resource-aware implementation:
it parses RateLimit-*/Retry-After, adapts pacing, enforces request/bytes/time
guardrails, persists load memory, caches safe GETs, and can emit secret-redacted
JSONL traces. Python remains a deliberately compatible discovery/capture path
and follows the same identity and retry etiquette.
For concurrent workers, point discover and backfill at the same SQLite
database with --db. That enables the shared cross-worker limiter, which
reserves one aggregate request slot across processes and records both normal
reservations and transient-failure backoff events. Inspect the current state
with fyi rate-limit-status --db fyi_system.db.
CLI and MCP surfaces
The full command and server cross-reference is maintained in docs/cli-entrypoints-audit.md. It covers the Python CLI entrypoints (fyi, fyi-cli, fyi-system), the Rust CLI binary (fyi-cli), and the Rust MCP server (fyi-mcp) with its published registry pages.
Opt-in live smoke test:
The AU RightToKnow smoke is bounded to one discovery page and at most five
request captures. It writes only to temporary test directories and remains
disabled unless FYI_LIVE_SMOKE=1 is explicitly set.
In the current live verification, RightToKnow returned HTTP 403 for the bounded JSON search request, so the smoke records an explicit external availability skip and does not attempt capture. This does not change default offline CI behavior or retry the denied request aggressively.
Faithful Archive Capture
fyi capture stores the public request JSON, rendered HTML, and attachments as
WARC records, deduplicates attachment bytes by SHA-256, and maintains a derived
request view for downstream dataset tooling.
Capture layout:
Each daily WACZ is appendable: subsequent captures add another WARC segment under
archive/ and merge the resource metadata in datapackage.json. Replay tooling
that supports WACZ/WARC can open the package from dist/site_snapshots/; for
low-level inspection, unzip it and read the WARC segments with warcio.
Full CLI reference: See fyi --help or USER_GUIDE.md
🏗️ Architecture
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built on the Alaveteli platform by mySociety
- Inspired by the transparency work of foi-repository
- Uses cryptography for encryption
📞 Support
- Documentation: https://edithatogo.github.io/fyi-cli/
- Issues: https://github.com/edithatogo/fyi-cli/issues
- Discussions: https://github.com/edithatogo/fyi-cli/discussions
Made with ❤️ for transparency and privacy
来源:README.md,提交 2adfa97
工具
0版本历史
1- v0.1.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分