Delinea Mcp について
Delinea Secret Server と Platform API を利用するチーム向けの MCP サーバーです。シークレット、ユーザー、グループ、ロールを管理するツールを提供します。複数のトランスポートに対応し、シークレット値をモデルに渡さずサーバー側で処理できます。
主な機能
- 01シークレット、フォルダー、アクセス要求の管理
- 02ユーザー、グループ、ロールの管理
- 03ChatGPT の検索・取得ツール
- 04stdio、SSE、Streamable HTTP に対応
- 05サーバー側でのパスワード生成・ローテーション
活用シーン
- 01Secret Server のシークレット検索と取得
- 02アクセス要求や受信メッセージの処理
- 03ディレクトリのユーザーとロールの管理
- 04値をモデルに見せずにパスワードを更新
MCP 対応
Secret Server のツールと、任意で Delinea Platform および StrongDM のツールを MCP クライアントに提供します。stdio、SSE、Streamable HTTP に対応し、OAuth 2.0 も利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DelineaMCP
Delinea Secret Server および Platform API 用の MCP サーバー
ニュース
- 11 Aug 2026 — MCP Protocol v2(仕様改訂 2026-07-28、Streamable HTTP)と StrongDM API の実験的なサポートを追加しました。詳しくは リリースノートをご覧ください。
- 11 Aug 2026 — 「LLM にシークレットを見せない」ボールトのユースケースを提供しているのは、私たちが元祖です。模倣品にご注意ください ;)
機能
- Secret Server に対する自動認証
- フォルダー、シークレット、ユーザー、グループ、ロールを管理するための充実した Secret Server ツールセット。 受信箱やアクセスリクエストのヘルパー、コーディングエージェント向けユーティリティも含まれます。
- ChatGPT 互換ツール(
searchおよびfetch)による制御された AI インタラクション - オプションの Delinea Platform ユーザー管理ツール
- オプションの実験的な StrongDM(SDM)ツール — アクセス権の付与、エンタイトルメント監査、ユーザー/ロールのライフサイクル管理、ヘルスレポートおよびアクティビティレポート(docs/strongdm.mdをご覧ください。
pip install "delinea-mcp[strongdm]"でインストールできます) - Streamable HTTP(
/mcp)、レガシーの Server-Sent Events(/mcp/sse)、STDIO トランスポート - MCP 仕様に準拠した動的クライアント登録による OAuth 2.0
- 安全な接続のための TLS サポート
- すぐに実行できる Docker イメージと開発サーバーのエントリーポイント
- ChatGPT、Claude Desktop、リモート Claude コネクター、VSCode Copilot、openwebui でテスト済み
インストール
メモ
このプロジェクトでは
uv(https://github.com/astral-sh/uv)を使用しますが、これを使わずに実行したい場合は、通常どおり`pip`や`venv`のコマンドを使用できます。
- Uv をインストール
- プロジェクトを初期化:
uv pip sync requirements.txt uv run server.py --config config.jsonを使用
設定
パスワードなどのシークレットは、引き続き環境変数から取得します。
シェル環境に DELINEA_PASSWORD を設定してください。
オプション機能では、AZURE_OPENAI_KEY や PLATFORM_SERVICE_PASSWORD などの追加変数を使用します。
シークレットではないパラメーターは config.json に記述します。
{
"delinea_username": "<username>",
"delinea_base_url": "https://your-secret-server/SecretServer",
"platform_hostname": "<tenant>.secureplatform.io",
"platform_service_account": "<service_account>",
"platform_tenant_id": "<tenant_id>",
"azure_openai_endpoint": "https://example.openai.azure.com/",
"azure_openai_deployment": "<deployment_name>",
"auth_mode": "none",
"transport_mode": "stdio",
"chatgpt_disable_scope_checks": false,
"port": 8000,
"debug": false,
"external_hostname": null,
"ssl_keyfile": null,
"ssl_certfile": null,
"registration_psk": null,
"jwt_key_path": ".cache/jwt.json",
"oauth_db_path": ".cache/oauth.db",
"enabled_tools": []
}
Secret Server Cloud の場合は、/SecretServer を含めずにクラウド URL を使用してください。
HTTPS を有効にするには、ssl_keyfile と ssl_certfile を指定してください。
Let's Encrypt を使用する場合は、privkey.pem ファイルと fullchain.pem ファイルを使用してください。
設定ファイルでは、次のキーを使用できます。
- delinea_username - Secret Server のユーザー名です。実行するタスクに必要な権限を持つプログラムユーザーである必要があります。
- delinea_base_url - Secret Server インスタンスのベース URL です。
- platform_hostname - Platform のテナントのホスト名です(Platform ツールを有効にします)。
- platform_service_account - Platform API で使用するサービスアカウントです。
- platform_tenant_id - Platform API リクエスト用のテナント ID です。
- strongdm_api_host - StrongDM コントロールプレーンです(デフォルトは
app.strongdm.com:443。英国/EU 向けのバリエーションも利用できます)。認証情報は環境変数SDM_API_ACCESS_KEY/SDM_API_SECRET_KEYから取得します。詳しくは docs/strongdm.md を参照してください。 - azure_openai_endpoint - Azure OpenAI エンドポイントです。自動レポート生成を使用する場合にのみ指定します(ほとんどのエージェントはレポート用の SQL を自分で生成できるため、必要な場合を除き有効にしないでください)。
- azure_openai_deployment - Azure OpenAI のデプロイ名です。
- auth_mode - 認証モードです(
noneまたはoauth)。OAuth は stdio トランスポートでは動作しません。 - transport_mode - コマンドライン用の
stdio、または HTTP 用のsseです。sseモードでは、サーバーは/mcpのストリーム可能な HTTP エンドポイント(現在の MCP トランスポート。プロトコルリビジョン 2024-11-05 から 2026-07-28 に対応)と、従来の HTTP+SSE エンドポイント/mcp/sseおよび/messages/の両方を公開します。 - streamable_http_stateless - デフォルトは
trueです。サーバー側のセッションを使わずに/mcpを実行します(リモートコネクターに推奨)。falseに設定すると、スタンドアロンの GET ストリームを使用したセッションベースの動作が有効になります。 - streamable_http_json_response - デフォルトは
trueです。/mcpで SSE 形式のレスポンスではなく、プレーンな JSON を返します。 - chatgpt_disable_scope_checks - ChatGPT リクエストのスコープ検証をスキップします。ChatGPT への接続で問題が発生した場合にのみ有効にしてください。
- port -
sseモードで使用する HTTP サーバーのポートです。 - debug - 詳細なログ出力を有効にします。
- external_hostname - OAuth トークンのオーディエンスを構成する際に使用するホスト名です。HTTP(S) のプレフィックスやポートは追加しないでください。
- ssl_keyfile - HTTPS 用 SSL キーのパスです(例:
privkey.pem)。 - ssl_certfile - HTTPS 用 SSL 証明書のパスです(例:
fullchain.pem)。 - registration_psk - OAuth クライアントの登録に必要な事前共有鍵です。OAuth 接続を承認するには、ブラウザーでこのシークレットを入力する必要があります。
- jwt_key_path - OAuth トークンに使用する RSA キーペアの場所です。デフォルトは
.cache/jwt.jsonです。存在しない場合は自動生成されます。 - oauth_db_path - OAuth データベースファイルのパスです。デフォルトは
.cache/oauth.dbです。存在しない場合は自動生成されます。 - enabled_tools - 登録するツール名のリストです。空のリストを指定すると、すべてのツールが有効になります。ユースケースやタスクごとにツールを選択して有効にすることを強くおすすめします。例については
docs/フォルダーを参照してください。 - search_objects -
searchツールで許可するオブジェクトの種類です。デフォルトは["secret"]ですが、user、folder、group、roleを含めることもできます。 - fetch_objects -
fetchツールで許可するオブジェクトの種類です。デフォルトは["secret"]ですが、search_objectsと同じ値を指定できます。
サーバーの実行
開発モードでサーバーをローカルで起動します。
python server.py
起動時にサーバーはベアラートークンを要求し、以降の API リクエストで使用できるよう保存します。 このプロジェクトでは、Secret Server API との連携をさらに拡張していく予定です。
MCP ツール
このサーバーは、Secret Server、Delinea Platform の ID ディレクトリ、および(任意で)StrongDM 用の MCP ツールを公開します。各ツールは、tools/list を通じて動作に関するアノテーション(読み取り専用/破壊的操作のヒント)を公開します。
ChatGPT / deep-research との互換性
search(query)-{id, title, url}の結果を返す統合検索です。オブジェクトの種類は、search_objects設定キー(デフォルト:シークレットのみ)によって制限されます。fetch(id)-searchで表示された単一のオブジェクトを取得します。fetch_objectsによって制限されます。
Secret Server
run_report(sql_query, report_name=None)- 一時レポートを作成して実行します。ai_generate_and_run_report(description)- Azure OpenAI を使用して SQL を生成し、実行します。 Azure OpenAI の環境変数が必要です。list_example_reports()- サンプルクエリとテーブル情報を一覧表示します。get_secret(id, summary=False)- シークレットまたは概要情報を取得します。get_folder(id)- フォルダーのメタデータと子要素を取得します。search_secrets(query, lookup=False)- シークレットを検索または照会します。search_folders(query, lookup=False)- フォルダーを検索または照会します。get_secret_environment_variable(secret_id, environment)- 指定したシェルでシークレットの認証情報を取得するスクリプトを出力します。check_secret_template(template_id)- シークレットテンプレートの詳細を取得します。check_secret_template_field(template_id, field_id)- テンプレートにフィールドが含まれているか確認します。get_secret_template_field(field_id)- ID で指定したシークレットテンプレートフィールドの詳細を取得します。handle_access_request(request_id, status, response_comment, start_date=None, expiration_date=None)- アクセスリクエストを承認または拒否します。get_pending_access_requests()- 保留中のアクセスリクエストを一覧表示します。get_inbox_messages(read_status_filter=None, take=20, skip=0)- 受信トレイのメッセージを取得します。mark_inbox_messages_read(message_ids, read=True)- メッセージを既読または未読にします。create_secret_with_generated_password(name, secret_template_id, password_field_id, items, folder_id=None, site_id=None, comment=None)- パスワードをサーバー側で生成するシークレットを作成します。サニタイズ済みの メタデータのみが返され、値がモデルに渡ることはありません。update_secret_generated_password(secret_id, field_slug, password_field_id, comment=None)- 値を表に出さずに、サーバー側でシークレットのパスワードをローテーションします。update_secret_fields(secret_id, field_updates, comment=None, allow_password_fields=False)- テンプレートの読み取り → パスワード以外のフィールドの変更 → 検証というフローで処理します。 明示的に許可されていない限り、パスワードとしてマークされたフィールドは拒否します。set_secret_field_environment_variable(secret_id, field_slug, environment, source="stdin", comment=None)- 値をローカルで読み取り、シークレットフィールドに設定するシェルスクリプト(bash/powershell/cmd)を出力します。 これにより、値がモデルに渡ることはありません。bulk_user_response(user_ids, scenario, comment, confirm=False)- 一括ユーザー操作 API を使用する、 インシデント対応用の一連の処理です。シナリオ:compromise、offboard、unlock、reenable、force_logout。実行にはconfirm=Trueと空でない監査コメントが必要です。未確認の場合はプレビューを表示します。role_management(action, role_id=None, data=None, params=None)- ロールを管理します。actionはlist、get、create、updateのいずれかです。 ロールの一覧表示時にクエリパラメーターを指定するには、paramsを渡します。 例:role_management("update", role_id=3, data={"name": "New Role"})。user_role_management(action, user_id, role_ids=None)- ユーザーにロールを割り当てるか、ユーザーから削除します。actionはget、add、removeのいずれかです。追加または削除する操作では、role_idsにロール識別子のリストを指定します。group_management(action, group_id=None, data=None, params=None)- グループを管理します。actionはget、list、create、deleteのいずれかです。 get/delete にはgroup_idを指定し、グループの作成時にはdataを指定します。folder_management(action, folder_id=None, data=None, params=None)- フォルダーを管理します。actionはget、list、create、update、deleteのいずれかです。 get、update、delete にはfolder_idを指定し、フォルダーの作成または更新時にはdataを指定します。user_group_management(action, user_id, group_ids=None)- ユーザーのグループメンバーシップを管理します。actionはget、add、removeのいずれかです。 メンバーシップを追加または削除する場合は、group_idsにリストを指定します。group_role_management(action, group_id, role_ids=None)- グループのロールを管理します。list、add、removeのいずれかのアクションを使用します。 追加または削除する場合は、role_idsを指定します。health_check()- Secret Server のヘルスチェックエンドポイントにクエリを送信し、現在のサービスステータスを返します。
Delinea Platform のユーザーとロール
v1.0.0 以降、標準のユーザーツールは Delinea Platform の ID ディレクトリを対象とします
(platform_hostname と PLATFORM_SERVICE_* の認証情報が必要です。
設定されていない場合、ツールはエラーを返す代わりにガイダンスを返します)。
user_management(action, user_id=None, data=None, username=None)- Platform のユーザー CRUD です。actionはget、create、update、delete、searchを指定できます。search_users(query)- Platform のユーザーディレクトリを検索します。platform_role_management(action, role_id=None, data=None, page_size=100, query="%")- Platform のロール CRUD(list、get、create、update、delete)です。ロールの 変更操作は検出結果に基づいて実行され、API スコープで変更操作が公開されていないテナントでは ガイダンスを返します。platform_user_role_management(action, role_id, user_principals=None)- Platform のロールに対するユーザーのlist、add、removeを行います。platform_user_management(...)- 非推奨のuser_managementエイリアスです。
Secret Server のローカルユーザー(レガシー)
Platform を設定していない SS 専用のデプロイメントの場合:
secretserver_local_user_management(action, user_id=None, data=None, skip=0, take=20, is_exporting=False)- v1.0.0 より前の Secret Server のユーザー操作です。get、create、update、delete、list_sessions、reset_2fa、reset_password、lock_outを指定できます。 例:secretserver_local_user_management("reset_password", user_id=42, data={"newPassword": "Pa$$w0rd"})。search_secretserver_local_users(query)- Secret Server のローカルユーザーストアを検索します。
StrongDM ツール(オプション、実験的)
実験的:StrongDM バックエンドは、実際の SDM 組織に対する検証がまだ完了していません
(SDK のインターフェースに対する単体テストのみ実施済みです)。未完成な部分があることを
ご了承ください。問題があれば報告してください。strongdm extra 経由でインストールします。
詳しくはdocs/strongdm.mdのガイドをご覧ください。sdm_search、
sdm_audit_access、sdm_grant_access(時間制限付きのジャストインタイムまたは常設のアクセス許可)、
sdm_revoke_access、sdm_user_management(オンボーディング/オフボーディングのフロー)、
sdm_role_management、sdm_resource_health、sdm_access_requests、sdm_activity_report、
sdm_network_status を利用できます。破壊的な操作には監査コメントによる確認が必要です。
名前が曖昧に一致する場合は、変更を行わず候補を返します。
認証には、上記のサーバー設定変数を使用してください。
Azure OpenAI の変数が設定されていない場合、AI ツールは自動的に無効になります。
config.json に記載されたツール名のみが登録されます。
空のリストを指定すると、すべてのツールが有効になります。
ユースケース
このドキュメントでは、ツールをサーバーに接続するためのいくつかのワークフローを説明しています。
Docker クイックスタート
Python の依存関係をローカルにインストールせずに MCP サーバーを実行できるよう、Dockerfile が用意されています。
- イメージをビルドします。
docker build -t dev.local/delinea-mcp:latest .
- サーバーを起動します(環境変数で認証情報を渡します)。
docker run --rm -p 8000:8000 \
-e DELINEA_PASSWORD=<password> \
-e PLATFORM_SERVICE_PASSWORD=<password> \
-e DELINEA_DEBUG=1 \
-e AZURE_OPENAI_KEY=<your-key-or-appropriate-token> \
-v $(pwd)/config.json:/app/config.json:ro \
-v mcp-data:/app/data \
dev.local/delinea-mcp:latest
上記の例のように、ユーザー名と URL を指定して config.json を設定します。
コンテナーは oauth.db と jwt.json を /app/data に保存します。
これらのファイルと HTTPS 証明書を実行間で保持するには、上記の例の mcp-data のようにボリュームをマウントしてください。
接続エラーを防ぐため、<https://your-secret-server/SecretServer> を Secret Server インスタンスのベース URL に置き換えてください。
サーバーはデフォルトでポート 8000 を使用し、python server.py で起動します。
デフォルトを上書きするには、config.json の port オプションを設定してください。
すべての受信 HTTP リクエストをログに記録するには、debug: true を有効にしてください。
サンプルスクリプト
manual_secret_request.py スクリプトでは、特定のシークレット ID の OAuth トークンを取得する方法を示しています。
python scripts/manual_secret_request.py <Secret_ID>
スクリプトを実行する前に、そのシークレットの環境変数 SECRET_USERNAME_<id> と SECRET_PASSWORD_<id> を設定してください。
必要に応じて DELINEA_BASE_URL を設定すると、デフォルトの https://localhost/SecretServer を上書きできます。
テストの実行
カバレッジ付きで単体テストを実行します(CI では最低 70% が必須です)。
pip install -r requirements.txt
coverage run -m pytest -q
coverage report --omit "tests/*"
ライブテスト
一部の統合テストには有効な認証情報が必要です。
テストスイートを実行する前に、以下の環境変数と、任意の LIVE_SECRET_ID を設定してください。
export DELINEA_PASSWORD=<password>
# Optional secret used by tests/test_live.py
export LIVE_SECRET_ID=<id>
export SECRET_USERNAME_<id>=<secret_username>
export SECRET_PASSWORD_<id>=<secret_password>
これらの変数が設定されている場合、ライブテストでは実際の API リクエストが実行されます。
本番環境へのデプロイ
依存関係は requirements.txt で固定され、リリースには Semantic Versioning に基づくタグが付けられます。
タグ付きコミットから Docker イメージをビルドし、必須の環境変数(DELINEA_USERNAME、DELINEA_PASSWORD、任意で DELINEA_BASE_URL)を渡して本番環境にデプロイしてください。
オプション機能には追加の変数が必要です。
PLATFORM_SERVICE_PASSWORDとPLATFORM_HOSTNAME、PLATFORM_SERVICE_ACCOUNT、PLATFORM_TENANT_IDを設定すると、ユーザー管理ツールが有効になります。AZURE_OPENAI_KEYとAZURE_OPENAI_ENDPOINT、AZURE_OPENAI_DEPLOYMENTを設定すると、AI レポート生成ヘルパーが有効になります。SDM_API_ACCESS_KEYとSDM_API_SECRET_KEYを設定すると、実験的な StrongDM ツールが有効になります(strongdmエクストラが必要です。docs/strongdm.md を参照してください)。
OAuth または SSE トランスポートを使用する場合は、registration_psk の設定と、external_hostname または HTTPS 証明書ファイルの設定が必要になることがあります。
リポジトリの構成
delinea_mcp/- MCP ツールを含むパッケージ:tools.py(Secret Server)、user_platform_tools.py(Delinea Platform)、secretserver_users.py(SS-local ユーザー)、strongdm_tools.py(StrongDM、 オプション)、およびtransports/(SSE + ストリーミング可能な HTTP)とauth/(組み込み OAuth 認可サーバー)。server.py- すべてを MCP サーバーに登録する薄いエントリーポイントです。docs/- プロジェクトのドキュメントと、生成されたdelinea-secret-server-openapi-spec.jsonが含まれます。scripts/-manual_secret_request.pyなどのヘルパー例が含まれます。
セキュリティに関する考慮事項
組み込み OAuth 認可サーバーは、開発、テスト、小規模なデプロイ向けの簡易機能です。大規模なデプロイでは、サーバーの前段に組織の ID プロバイダーを配置してください。現在のセキュリティ対策は次のとおりです。
- クライアント登録(
/oauth/register)と認可フォームの両方で、共有シークレットregistration_pskが必須です(定数時間で比較されます)。 redirect_uriの値は、認可フォームとコードのリダイレクトの両方で、クライアントに登録された URI と照合して検証されます。- アクセストークンはオーディエンスに紐付けられた RS256 JWT です。リソースの検出では RFC 9728 に従います(
/.well-known/oauth-protected-resourceと、401/403 レスポンスでのWWW-Authenticateヘッダー)。 - 必ず TLS を使用してデプロイしてください(
ssl_keyfile/ssl_certfileまたは TLS 終端プロキシ)。すべてのリクエストでベアラートークンとシークレットが送信されます。 enabled_toolsで用途ごとに公開するツールを制限してください。シークレットの 値 は、設計上モデルコンテキストに含まれません(サーバー側でのパスワード生成、環境変数を介したスクリプトの間接参照、パスワードフィールドのガード)。
リリースノート
最新の機能とロードマップ項目の概要については、CHANGELOG.md を参照してください。
ロードマップ
- パススルー認証
- OAuth クライアント ID メタデータドキュメント(CIMD)のクライアントサポート(MCP プロトコルのリビジョン 2026-07-28 以降、動的クライアント登録は非推奨です。PSK で保護された
/oauth/registerフローは、現在のコネクターで引き続き使用できます) - Delinea Platform のツール対応範囲を拡大し、他の Delinea 製品を追加
コントリビューション
コントリビューションを歓迎します! 改善のための課題やプルリクエストをお寄せください。 新しいコードには単体テストを含め、既存のテストスイートに合格する必要があります。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。