JFSecure について
JFSecure の `jfs` は、AI エージェントが値を見ずに保管庫のシークレットを使える CLI と MCP サーバーです。利用ごとに起動中のアプリで承認し、コマンド出力では値がマスクされます。
主な機能
- 01シークレット利用ごとの承認
- 02コマンド出力内の値をマスク
- 03環境変数を渡してコマンドを実行
- 04テンプレートへのシークレット反映
- 05シークレット名とキー名の一覧表示
活用シーン
- 01認証情報が必要なコマンドをエージェントに実行させる
- 02テンプレートから `.env` ファイルを作成
- 03コマンドによるシークレット利用を確認して承認
MCP 対応
MCP サーバーは、シークレット名の一覧表示、シークレットを使ったコマンド実行、テンプレートの反映を行うツールを公開します。値を取得するツールはなく、利用要求は JFSecure での承認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
jfs — 秘密情報を見ずに使える AI エージェント向けツール
jfs は、オフラインのパスワードおよびスニペットマネージャーである JFSecure のコマンドラインツールおよび MCP サーバー です。Claude Code、Cursor などの MCP エージェントは、秘密情報を取得することなく使用でき、使用のたびにアプリで承認できます。
このリポジトリには jfs 自体のソースコードがあるため、エージェントがやり取りする内容を正確に確認できます。これは薄いクライアントです。ローカルのパイプを通じて、実行中でロック解除された JFSecure アプリに JSON リクエストを 1 つ送信し、応答を出力します。保管庫のファイルを開くことも、保管庫のパスワードを見ることもなく、暗号処理も行いません。(アプリは別途ダウンロードします。jfs はアプリに同梱されています。)

MCP ツール
| ツール | 機能 | エージェントが受け取るもの |
|---|---|---|
list_secrets | 秘密情報とキーの名前、および各キーがどの環境変数になるかを一覧表示します | 名前のみ |
run_with_secrets | 秘密情報のキーを環境変数として設定してコマンドを実行します(すべて、一部、または標準入力で 1 つ) | 終了コードと出力。すべての値は [JFSecure: NAME] としてマスクされます |
render_template | テンプレート内の {{Secret:key}} を置き換えて、ファイル(例:.env)に書き込みます | 置き換えた名前 |
意図的に「取得」ツールは用意していません。使用するたびに JFSecure で承認ウィンドウが開き、プログラム、正確なコマンド、秘密情報が表示されます。1 回だけ許可するか、15 分間許可するか、拒否できます。Claude Code の場合、15 分間の承認はそのコマンドと秘密情報だけに適用されます。
# the agent called run_with_secrets(secret: "github", command: …)
exit code 0
variables set: TOKEN
--- stdout ---
token is [JFSecure: TOKEN]
{"login": "octocat", "plan": {"name": "pro"}}
セットアップ
- JFSecure をインストールし、保管庫を開きます:
brew install theone55/jfsecure/jfsecure(macOS)、scoop bucket add jfsecure https://github.com/theone55/scoop-jfsecure; scoop install jfsecure/jfsecure(Windows)、またはインストーラー(Windows、macOS、Linux)を使用します。jfsはアプリに同梱されています。Windows では、アプリの初回起動時に PATH に追加されます(その後、新しいターミナルを開いてください)。macOS(.dmg)と Linux AppImage では、Settings → Install the jfs command を使用してください。Homebrew と .deb では自動的にインストールされます。 - MCP サーバーを追加します:
claude mcp add --scope user jfsecure -- jfs mcp
Cursor(~/.cursor/mcp.json)、Claude Desktop、Windsurf、VS Code など、任意の stdio MCP クライアントで使用できます:
{ "mcpServers": { "jfsecure": { "command": "jfs", "args": ["mcp"] } } }
詳細:https://secure.jfolio.org/agents
リリースページでは、MCP バンドル(.mcpb、Windows/macOS/Linux)としても提供されています。また、公式 MCP Registry では io.github.theone55/jfs として登録されています。
コマンドライン
jfs status is the app running and unlocked
jfs ls [secret|folder] names only, no approval needed
jfs get github/token print a value (approved in the app)
jfs copy github/token to the clipboard, nothing printed
jfs run github -- gh api user run with the secret's keys as env vars ($token → TOKEN); output masked when piped
jfs render .env.tpl -o .env fill {{Secret:key}} into a file
git config --global credential.helper "!jfs git-credential"
詳細なガイド:https://secure.jfolio.org/cli
保護されるもの — 保護されないもの
- モデルは値を受け取らないため、会話の記録やログに値が残ることはありません。
- プロンプトインジェクションを受けたエージェントにできるのは要求することだけです。正確なコマンドはユーザーに表示されます。
- パイプを使用できるのは OS のユーザーだけです。アプリは呼び出し元を、呼び出し元の申告ではなく OS を通じて識別します。
- **マスキングはシートベルトであり、壁ではありません。**承認したコマンドが値を外部に送信する可能性はあります。コマンドを確認してください。
ビルド
cargo build --release # Rust stable; Windows, macOS, Linux
cargo test
ここにあるコピーは JFSecure の各リリースに対応しています(Cargo.toml の version は、同梱されたアプリのバージョンです)。
問題や質問はお気軽にお寄せください。
MIT License。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。