mcpField
S
safehold

safehold

ローカル
github.com/Spacetime-Technologyセキュリティ023 週間前に更新

safehold について

safeholdは、AIエージェントを使う人向けのローカル暗号化ID書類保管庫です。項目ごとの要求に同意した場合のみ情報を渡し、書類は端末内に保管してアクセス履歴を記録します。

主な機能

  1. 01ローカルでの書類暗号化保管
  2. 02用途を示した項目単位の同意
  3. 03パスポート・ID・免許証・ビザの取得
  4. 04暗号化されたアクセスログ
  5. 05書類登録と期限確認プロンプト

活用シーン

  1. 01航空券予約に必要なパスポート項目の提供
  2. 02サービスに必要な情報だけを共有
  3. 03クライアントによる書類データのアクセス確認
  4. 04期限が近い書類の確認

MCP 対応

stdio MCPサーバーとして動作し、MCPクライアントに書類管理と項目取得のツールを提供します。取得要求には目的の指定とユーザーの同意が必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"spacetime-technology-safehold": {
"command": "npx",
"args": [
"-y",
"safehold"
]
}
}
}
起動コマンドnpx -y safehold

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmsafehold1.2.0

ツール

11

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
fieldsarrayはい取得するパスポートのフィールド
purposestringはい呼び出し元エージェントがこのデータを必要とする理由。ユーザーに表示して同意を求めます
document_idstringいいえ特定のパスポート ID(複数のパスポートが保存されている場合は必須)

詳細

Safehold

npm version node MCP Registry License: MIT

あなたの本人確認書類はあなたのマシンに保管され、あなたが許可した場合にのみ共有されます。

概要

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_certificate
  • get_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 に公開します。

開発元

Spacetime Technology

コメント

MCP は初めてですか?

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

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