safehold について
safeholdは、AIエージェントを使う人向けのローカル暗号化ID書類保管庫です。項目ごとの要求に同意した場合のみ情報を渡し、書類は端末内に保管してアクセス履歴を記録します。
主な機能
- 01ローカルでの書類暗号化保管
- 02用途を示した項目単位の同意
- 03パスポート・ID・免許証・ビザの取得
- 04暗号化されたアクセスログ
- 05書類登録と期限確認プロンプト
活用シーン
- 01航空券予約に必要なパスポート項目の提供
- 02サービスに必要な情報だけを共有
- 03クライアントによる書類データのアクセス確認
- 04期限が近い書類の確認
MCP 対応
stdio MCPサーバーとして動作し、MCPクライアントに書類管理と項目取得のツールを提供します。取得要求には目的の指定とユーザーの同意が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| fields | array | はい | 取得するパスポートのフィールド |
| purpose | string | はい | 呼び出し元エージェントがこのデータを必要とする理由。ユーザーに表示して同意を求めます |
| document_id | string | いいえ | 特定のパスポート ID(複数のパスポートが保存されている場合は必須) |
詳細
Safehold
あなたの本人確認書類はあなたのマシンに保管され、あなたが許可した場合にのみ共有されます。
概要
Safehold は、パスポート、ビザ、運転免許証などの本人確認書類を保管するローカル MCP サーバーです。AI エージェントが航空券の予約にパスポート番号を必要とすると、Safehold に問い合わせます。何が必要で、なぜ必要なのかを確認したうえで、許可するか拒否するかを選べます。情報がデバイスの外に出ることはありません。
開発の背景
あなたの本人確認情報は、管理権のない数十ものサービスに散在しています。銀行、航空会社、政府のポータル、SaaS 製品などです。それぞれが情報のコピーを保管し、どのように保存するか、販売するかどうか、いつまで保持するかを独自に決めています。AI エージェントはこの状況をさらに悪化させます。エージェントがアクセスできる情報には、エージェントが利用するすべての API もアクセスできます。
Safehold はその代替手段です。エージェントが取得するのは項目の値だけです。プライバシーポリシーの代わりに、同意を求めるプロンプトが表示されます。ファイルはそのままの場所に保管されます。
オープンソースなので、こうした仕組みを信頼する必要はありません。
Safehold ではないもの
Safehold と混同されがちですが、異なる問題を解決するものをいくつか紹介します。
1Password、Bitwarden、op CLI
パスポートを 1Password に保存できます。op CLI では特定の項目を読み取れます。公式の 1Password MCP サーバーも登場しています。つまり、機能の一部は重複しています。
異なるのは信頼モデルです。1Password の保管庫のロックを解除すると、そのセッションを使えるものは何でも、保管庫内の情報をすべて読み取れます。項目ごとの同意も、「なぜこれを求めているのか」というプロンプトもありません。この保管庫は、人がパスワードを入力するために作られたものであり、明示された理由を示して構造化された項目を取得するエージェント向けではありません。
Safehold では、目的を添えて、毎回、項目ごとにアクセスを制御します。
ブラウザーの自動入力、Apple Passwords、iCloud Keychain
エージェントがフォームに入力するブラウザーであれば問題なく動作します。しかし、そうでない場合には役立ちません。API、CLI ツール、その他の MCP サーバーを使うエージェントには自動入力の仕組みが見えないため、結局、パスワードアプリからチャットにコピー&ペーストすることになります。Safehold を使えば、ブラウザー以外のエージェントも、そうした回り道をせずにパスポート番号を要求できます。
Apple Wallet、Google Wallet、政府のデジタル ID アプリ
プラットフォームに縛られています。Apple Wallet は、搭乗券をサードパーティのエージェントに渡しません。mDL の試験運用や EU eIDAS ウォレットは発行者が管理し、利用範囲も限られています。いずれも MCP に対応しておらず、ノート PC 上のエージェントが運転免許証の項目を要求することもできません。
チャットへの貼り付け
こうする人もいます。システムプロンプトにパスポート番号を追加したり、メッセージに入力して、エージェントが適切に扱うと信頼したりします。すると番号はチャット履歴に残り、モデル提供元に送信され、そのログにも保存されます。また、どのエージェントが何のために使ったのかを記録する方法もありません。
Safehold では、書類をディスク上で暗号化して保管し、エージェントが要求した項目だけを渡します。会話に余計な情報が残ることはありません。
通常の JSON ファイルと filesystem MCP
開発者なら、魅力的に思えるかもしれません。~/identity.json と filesystem MCP を組み合わせれば、3 行の設定で完了です。しかし、それでは同じマシン上のほかのすべてのエージェントにもアクセスを許してしまい、保存時の暗号化も、ログも、同意の手順もありません。そのファイルがバックアップや画面共有に表示された瞬間、問題が起こります。
Persona、Stripe Identity、Onfido、Plaid
KYC ベンダーです。書類を送ると、ベンダーがそれを保管し、提携サービスがあなたに代わって照会します。このモデルでは、鍵をあなたが持たないことが前提です。Safehold は逆のアプローチを取ります。書類はあなたのマシンに保管され、情報を渡すたびにあなたが許可します。
HashiCorp Vault、AWS Secrets Manager、Doppler、Infisical
サービスのシークレット向けに作られており、個人の身元情報向けではありません。人間向けの同意フローも、書類用のスキーマもなく、ノートパソコン上のエージェントにパスポートを読み取らせたいだけの人にとっては、運用上の負担が大きすぎます。
仕組み
Safehold は stdio MCP サーバーとして動作します。書類は個別の暗号化ファイルとして ~/.safehold/vault/ に保存されます。取得のたびに ~/.safehold/access-log.enc にログが記録されます。
暗号化には @noble/ciphers による XChaCha20-Poly1305 を使用しています。Cure53 による監査を受けており、外部依存関係はありません。初回起動時に、32 バイトのキーが ~/.safehold/master.key に書き込まれます(モード 0600)。
他の MCP クライアントは、書類から特定のフィールドを要求できます。共有する内容は、毎回ご自身で管理できます。
ツール(v1)
| ツール | 説明 |
|---|---|
add_document | 書類を保管庫に追加します |
list_documents | 保存されている書類を一覧表示します(メタデータのみ) |
update_document | 既存の書類のフィールドを更新します |
delete_document | 書類を完全に削除します |
get_passport | パスポートから特定のフィールドを取得します |
get_national_id | 国民 ID から特定のフィールドを取得します |
get_driving_license | 運転免許証から特定のフィールドを取得します |
get_visa | ビザから特定のフィールドを取得します |
get_photo | 保存された写真を取得します(パスポート用、セルフィー、または署名) |
get_document | あらゆる種類の書類からフィールドを取得します |
get_access_log | 何が、どのクライアントによって、いつアクセスされたかを確認します |
すべての取得ツールは purpose パラメーターを受け取ります。同意時に目的が表示されるため、フィールドが要求されている理由を常に確認できます。
プロンプト(v1)
Safehold には、すぐに使えるワークフロー用プロンプトも含まれています。これらは MCP クライアント(Claude Desktop、Cursor、Claude Code、Zed)でスラッシュコマンドとして表示されるため、よく使うタスクを毎回一からプロンプトする必要はありません。
| プロンプト | 説明 |
|---|---|
onboard_document | パスポート、国民 ID、運転免許証、またはビザの追加・更新をガイドします |
travel_preflight | 予定されている旅行に向けて、パスポートとビザの有効性を確認します |
selective_share | 明示的な同意目的を設定して、サービスが実際に必要とする最小限の情報を共有します |
expiry_audit | まもなく有効期限を迎えるものを提示します(メタデータのみ。同意プロンプトは表示されません) |
プロンプト自体がデータにアクセスすることはありません。呼び出し元のエージェントに、どの Safehold ツールをどの順序で、どの purpose を指定して呼び出すかを指示します。データの取得はすべて、通常の同意フローを経由します。
スキル
safehold-skills は、Safehold を保管庫から完成したワークフローへと拡張する Claude Code スキルの関連パッケージです。航空会社のチェックイン、ESTA の申請、KYC フォームなどに対応します。各スキルは Safehold とブラウザー MCP を組み合わせ、明確な目的を示す文字列を添えて、一度に 1 つずつフィールドを要求します。
npx safehold-skills install
クイックインストール
Node.js >=20 が必要です。ビルド手順はありません。
ほとんどのクライアントでは同じ JSON 設定を使用します。異なるのはファイルパスだけです。
{
"mcpServers": {
"safehold": {
"command": "npx",
"args": ["-y", "safehold@latest"]
}
}
}
| クライアント | 設定ファイル |
|---|---|
| Claude Desktop(macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop(Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor(プロジェクト) | .cursor/mcp.json |
| Cursor(グローバル) | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Amazon Q Developer(グローバル) | ~/.aws/amazonq/mcp.json |
| Amazon Q Developer(プロジェクト) | .amazonq/mcp.json |
設定形式が少し異なるクライアント:
Claude Code(CLI)
claude mcp add safehold npx -- -y safehold@latest
VS Code(GitHub Copilot) — "servers" キーを使用します。Copilot Chat でエージェントモードを有効にしてください。.vscode/mcp.json(プロジェクト)または ~/Library/Application Support/Code/User/mcp.json(グローバル、macOS)を編集します。
{
"servers": {
"safehold": {
"command": "npx",
"args": ["-y", "safehold@latest"]
}
}
}
Zed — ~/.config/zed/settings.json の "context_servers" キーを使用します。
{
"context_servers": {
"safehold": {
"command": "npx",
"args": ["-y", "safehold@latest"]
}
}
}
OpenAI Codex CLI — ~/.codex/config.toml の TOML 形式です。
[mcp_servers.safehold]
command = "npx"
args = ["-y", "safehold@latest"]
Continue.dev — .continue/mcpServers/safehold.json を作成します(エージェントモードを有効にしてください)。
{
"command": "npx",
"args": ["-y", "safehold@latest"]
}
Hermes(Nous Research) — ~/.hermes/config.yaml の YAML 形式です。
mcp_servers:
safehold:
command: npx
args: ["-y", "safehold@latest"]
OpenClaw — ~/.openclaw/mcp.json の "servers" キーを使用します。
{
"servers": {
"safehold": {
"command": "npx",
"args": ["-y", "safehold@latest"]
}
}
}
ロードマップ
get_travel_authorization- ESTA、eTA、UK ETA などget_vaccination_certificate- 国際予防接種記録get_residency_permit- BRP、Green Card などget_birth_certificateget_tax_id- NI number、SSN、TFN などget_proof_of_address- 公共料金の請求書、銀行からの書類get_travel_insurance
開発
npm install
npm test # run tests
npm run typecheck # type check
npm run build # compile to dist/
npm run dev # run directly with tsx (no build step)
リリース
npm version patch # bug fix (0.1.0 → 0.1.1)
npm version minor # feature (0.1.0 → 0.2.0)
npm version major # breaking (0.1.0 → 1.0.0)
クリーンで最新の main ブランチにいることを確認し、バージョンを更新してコミット、タグ付け、プッシュを行います。CI が npm に公開します。
開発元
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。