AIエージェント向けModel Context Protocol (MCP) – Node版
Nodeを使用して、KeeperシークレットマネージャーをAIエージェントに統合

Model Context Protocol (MCP) によるAIエージェント統合
KeeperシークレットマネージャーはModel Context Protocol (MCP) を通じてAIエージェントと統合できます。これにより、AIエージェントがKeeperのボルト内の特定のフォルダにだけ安全にアクセスできるようになります。この仕組みは、AIエージェントにアクセスを許可する情報を明確に制限できるゼロトラスト型の設計です。
MCPは、AIアシスタントとKeeperシークレットマネージャーの間にセキュアな橋渡し役として機能します。これにより、AIがパスワードや秘密情報を使って作業を支援できるようになります。また、機密性の高い操作には人間による確認を取り入れることで、最高レベルのセキュリティ基準を維持します。
主なメリット
ゼロトラストアーキテクチャ: AIエージェントにはVault内の特定フォルダのみを割り当て
ユーザーの承認: 機密操作時にユーザー確認を要求
エンタープライズ対応: 監査ログやコンプライアンス機能を完備
マルチプラットフォーム対応: Linux、macOS、Windowsで動作
Dockerネイティブ: コンテナによる簡単なデプロイが可能
AIアシスタントでできること
シークレット操作
シークレットの一覧表示: アクセス可能なシークレットを確認
シークレットの検索: タイトル、URL、ユーザー名などで検索
シークレットの取得: 特定のシークレット値を取得 (マスク解除には確認が必要)
シークレットの作成: 新しいシークレットエントリを登録
シークレットの更新: 既存の情報を修正
シークレットの削除: シークレットを削除 (確認あり)
ファイル管理
添付ファイルの一覧表示: シークレットに添付されたファイルを確認
ファイルのアップロード: ファイルをシークレットに添付
ファイルのダウンロード: 添付ファイルを取得
ファイルの削除: 添付ファイルを削除
ユーティリティ機能
パスワード生成: 条件を指定して安全なパスワードを生成
TOTPコードの取得: 現在のワンタイムパスワードを取得
KSM表記法の実行: Keeper表記法を使って高度な操作を実行
ヘルスチェック: サーバーの状態や接続状況を確認
セットアップとインストール
1. シークレットマネージャーアプリケーションの作成
Keeperシークレットマネージャーで、新しいアプリケーションを作成するか、既存のアプリケーションを使用します。

2. デバイストークンの作成
最初に表示されるデバイストークンは破棄し、[デバイスを追加] をクリックして、新しいBase64構成データを生成します。この構成情報は、AIエージェントに提供されます。

3. MCPサーバーを構成
オプションA: 構成ファイル (推奨)
以下のいずれかの場所にダウンロードした構成ファイルを配置します。
~/.keeper/ksm-config.json
(推奨)./ksm-config.json
(カレントディレクトリ)
オプションB: ワンタイムトークン
ワンタイムトークンがある場合
export KSM_TOKEN="US:YOUR_ONE_TIME_TOKEN_HERE"
このトークンにより、サーバーが自動的に構成ファイルを生成・保存します。
4. サーバーのテスト
以下のコマンドでサーバーを直接起動して動作確認します。
npm start
Keeper MCP server is running
と表示されます。
MCPクライアントとの連携例
Claude Desktop
Claude Desktopの構成ファイル (~/Library/Application Support/Claude/claude_desktop_config.json
) に以下を追加します。
{
"mcpServers": {
"keeper": {
"command": "node",
"args": ["/path/to/keeper-mcp-node/dist/index.js"]
}
}
}
Postman
API Networkタブに移動します。
MCPリクエストを作成または選択します。
stdio接続を以下のように設定します。
Command:
node
Arguments:
/path/to/keeper-mcp-node/dist/index.js
その他のMCP対応クライアント
stdio経由で通信するため、以下のように実行することで任意のMCP対応クライアントと連携可能です。
node /path/to/keeper-mcp-node/dist/index.js
利用可能なツール
シークレット操作
ksm_list_secrets
アプリケーションからアクセス可能なすべてのシークレットを一覧表示します (メタデータのみ)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_list_secrets",
"arguments": {}
}
}
レスポンス
[
{
"uid": "XXXXXXXXXXXXXXXXXXXXXX",
"title": "My Secret",
"type": "login"
}
]
ksm_get_secret
UIDまたはタイトルを指定して、完全なシークレットを取得します (機密フィールドはデフォルトで伏字となります)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_get_secret",
"arguments": {
"identifier": "My Secret",
"unmask": false
}
}
}
ksm_search_secrets
タイトル、メモ、または他のフィールド内容でシークレットを検索します。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_search_secrets",
"arguments": {
"query": "database"
}
}
}
ksm_create_secret
Keeperシークレットマネージャーに新しいシークレットを作成します (確認が必要)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_create_secret",
"arguments": {
"title": "New Database Credentials",
"type": "login",
"fields": {
"login": "admin",
"password": "secure_password",
"url": "https://db.example.com"
},
"notes": "Production database",
"folderId": "FOLDER_UID"
}
}
}
ksm_update_secret
既存のシークレットを更新します (確認が必要)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_update_secret",
"arguments": {
"identifier": "My Secret",
"updates": {
"title": "Updated Title",
"fields": {
"password": "new_password"
}
}
}
}
}
ksm_delete_secret
Keeperシークレットマネージャーからシークレットを削除します (確認が必要)
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_delete_secret",
"arguments": {
"identifier": "My Secret"
}
}
}
ksm_get_field
指定されたシークレットから特定のフィールド値を取得します。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_get_field",
"arguments": {
"identifier": "My Secret",
"field": "password"
}
}
}
一般的なフィールド名
password
: パスワードフィールドlogin
: ユーザー名またはメールアドレスurl
: ウェブサイトのURL
カスタムフィールドラベルにも対応しています。
フォルダ操作
ksm_list_folders
Keeperシークレットマネージャーでアクセス可能なすべてのフォルダを一覧表示します。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_list_folders",
"arguments": {}
}
}
ksm_create_folder
新しいフォルダを作成します (確認が必要。親の共有フォルダを指定する必要があります)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_create_folder",
"arguments": {
"name": "Development Secrets",
"parentFolderId": "PARENT_FOLDER_UID"
}
}
}
ksm_create_folder
新しいフォルダを作成します (確認が必要。親の共有フォルダを指定する必要があります)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_create_folder",
"arguments": {
"name": "Development Secrets",
"parentFolderId": "PARENT_FOLDER_UID"
}
}
}
ksm_delete_folder
フォルダを削除します (確認が必要)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_delete_folder",
"arguments": {
"folderId": "FOLDER_UID",
"force": false
}
}
}
ksm_upload_file
シークレットにファイルを添付します (確認が必要)。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_upload_file",
"arguments": {
"identifier": "My Secret",
"filePath": "/path/to/certificate.pem",
"fileName": "server-cert.pem"
}
}
}
ksm_download_file
シークレットから添付ファイルをダウンロードします。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_download_file",
"arguments": {
"identifier": "My Secret",
"fileId": "certificate.pem",
"outputPath": "/tmp/downloaded-cert.pem"
}
}
}
ユーティリティ
ksm_generate_password
安全なパスワードを生成します。
生成したパスワードをAIに表示せずに新しいシークレットとして保存することもできます。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_generate_password",
"arguments": {
"length": 24,
"includeUppercase": true,
"includeLowercase": true,
"includeNumbers": true,
"includeSpecial": true,
"saveToSecret": {
"title": "Generated API Key",
"login": "api-user",
"url": "https://api.example.com",
"notes": "Auto-generated API key"
}
}
}
}
ksm_get_totp_code
TOTPが設定されたシークレットの現在のコードを取得します。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_get_totp_code",
"arguments": {
"identifier": "My 2FA Secret"
}
}
}
ksm_get_server_version
KSM MCPサーバーの現在のバージョンを取得します。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_get_server_version",
"arguments": {}
}
}
ksm_health_check
MCPサーバーとKSMとの接続状態をチェックします。
リクエスト
{
"method": "tools/call",
"params": {
"name": "ksm_health_check",
"arguments": {}
}
}
トラブルシューティング
エラー: No Keeper Secrets Manager configuration found
構成ファイルがサポートされている場所にあるか確認する
JSON形式が正しいことを確認する
ファイルのパーミッションが適切で、ユーザーが読み取れる状態であることを確認する
エラー: Failed to initialize KSM
構成ファイルに必要な項目がすべて含まれているか確認する
アプリケーションが対象の共有フォルダまたはシークレットにアクセス可能であることを確認する
デバイスがKeeperで無効化されていないことを確認する
接続に関する問題
インターネット接続があることを確認する
組織内でIP制限が設定されていないか確認する
Keeperのサブスクリプションにシークレットマネージャーが含まれていることを確認する
追加のセットアップ手順については、こちらのリポジトリをご参照ください。
最終更新