mcpField
D
Delinea Mcp

Delinea Mcp

ローカル
github.com/DelineaXPMセキュリティ502 週間前に更新

Delinea Mcp について

Delinea Secret Server と Platform API を利用するチーム向けの MCP サーバーです。シークレット、ユーザー、グループ、ロールを管理するツールを提供します。複数のトランスポートに対応し、シークレット値をモデルに渡さずサーバー側で処理できます。

主な機能

  1. 01シークレット、フォルダー、アクセス要求の管理
  2. 02ユーザー、グループ、ロールの管理
  3. 03ChatGPT の検索・取得ツール
  4. 04stdio、SSE、Streamable HTTP に対応
  5. 05サーバー側でのパスワード生成・ローテーション

活用シーン

  1. 01Secret Server のシークレット検索と取得
  2. 02アクセス要求や受信メッセージの処理
  3. 03ディレクトリのユーザーとロールの管理
  4. 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 が用意されています。

  1. イメージをビルドします。
docker build -t dev.local/delinea-mcp:latest .
  1. サーバーを起動します(環境変数で認証情報を渡します)。
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 を参照してください。

ロードマップ

  1. パススルー認証
  2. OAuth クライアント ID メタデータドキュメント(CIMD)のクライアントサポート(MCP プロトコルのリビジョン 2026-07-28 以降、動的クライアント登録は非推奨です。PSK で保護された /oauth/register フローは、現在のコネクターで引き続き使用できます)
  3. Delinea Platform のツール対応範囲を拡大し、他の Delinea 製品を追加

コントリビューション

コントリビューションを歓迎します! 改善のための課題やプルリクエストをお寄せください。 新しいコードには単体テストを含め、既存のテストスイートに合格する必要があります。

ライセンス

このプロジェクトは MIT License の下でライセンスされています。

コメント

MCP は初めてですか?

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

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