delinea-mcp

resmi

Delinea Secret Server ve Platform API'leri için resmi Delinea MCP sunucusu

Delinea MCP ile neler yapabilirsiniz?

  • Sırları arama ve getirmesearch ve fetch kullanarak sırları bulun ve ayrıntılarını alın; nesne türleri search_objects ve fetch_objects yapılandırmasıyla sınırlandırılır.
  • Değerleri açığa çıkarmadan sırları yönetincreate_secret_with_generated_password ve update_secret_generated_password ile parolaları sunucu tarafında oluşturun veya döndürün; sır değerlerini model bağlamının dışında tutun.
  • SQL raporları çalıştırınrun_report ile geçici sorgular yürütün veya ai_generate_and_run_report kullanarak bir açıklamadan SQL oluşturun (Azure OpenAI gerektirir).
  • Erişim isteklerini ve gelen kutusunu yönetinhandle_access_request ile bekleyen istekleri onaylayın veya reddedin, get_pending_access_requests ile bunları listeleyin ve get_inbox_messages ile mark_inbox_messages_read kullanarak gelen kutusu mesajlarını yönetin.
  • Kullanıcıları, grupları ve rolleri yönetinuser_management, group_management, role_management ve user_role_management ile group_role_management gibi ilgili üyelik araçları aracılığıyla Secret Server varlıklarını yönetin.
  • Hizmet durumunu kontrol edin — Hizmetin çalışır durumda olduğunu doğrulamak için health_check ile Secret Server durum uç noktasını sorgulayın.

Dokümantasyon

DelineaMCP

Delinea Secret Server ve Platform API'leri için MCP sunucusu

License


Haberler

  • 11 Ağu 2026 — MCP Protokol v2 (özellik revizyonu 2026-07-28, akışa uygun HTTP) ve deneysel StrongDM API desteği burada — sürüm notlarına bakın.
  • 11 Ağu 2026 — "LLM'ye gizli bilgi görünmezliği" kasası kullanım durumunun özgün sağlayıcılarıyız — taklitçilere dikkat ;)

Özellikler

  • Secret Server'a otomatik kimlik doğrulama
  • Klasörleri, gizli bilgileri, kullanıcıları, grupları ve rolleri yönetmek için kapsamlı Secret Server araç seti. Gelen kutusu ve erişim isteği yardımcılarını ve kodlama aracısı yardımcı programlarını içerir.
  • Kontrollü AI etkileşimleri için ChatGPT uyumluluk araçları (search ve fetch).
  • İsteğe bağlı Delinea Platform kullanıcı yönetimi araçları
  • İsteğe bağlı deneysel StrongDM (SDM) araçları — erişim izinleri, yetki denetimleri, kullanıcı/rol yaşam döngüsü, sağlık ve etkinlik raporları (bkz. docs/strongdm.md; pip install "delinea-mcp[strongdm]" ile kurun)
  • Akışa uygun HTTP (/mcp), eski Sunucu Tarafından Gönderilen Olaylar (/mcp/sse) ve STDIO aktarım yöntemleri
  • MCP spesifikasyonuna göre dinamik istemci kaydı ile OAuth 2.0
  • Güvenli bağlantılar için TLS desteği
  • Kullanıma hazır Docker imajı ve geliştirme sunucusu giriş noktası
  • ChatGPT, Claude Desktop, uzak Claude bağlayıcısı, VSCode Copilot ve openwebui ile test edilmiştir

Kurulum

[!NOT]

Bu proje uv (https://github.com/astral-sh/uv) kullanır, ancak bu olmadan komutları çalıştırmayı tercih ederseniz, istediğiniz gibi pip ve venv komutlarını her zamanki gibi yapabilirsiniz.

  • Uv'yi Kurun
  • Projeyi başlatın: uv pip sync requirements.txt
  • uv run server.py --config config.json kullanın

Yapılandırma

Parolalar gibi gizli bilgiler ortam değişkenlerinden gelmeye devam eder. Kabuk ortamınızda DELINEA_PASSWORD sağlayın. İsteğe bağlı özellikler AZURE_OPENAI_KEY veya PLATFORM_SERVICE_PASSWORD gibi ek değişkenlere dayanır.

Gizli olmayan parametreler config.json içinde yer alır:

{
  "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 için /SecretServer olmadan bulut URL'sini kullanın. HTTPS'yi etkinleştirmek için ssl_keyfile ve ssl_certfile değerlerini belirtin. Let's Encrypt için privkey.pem ve fullchain.pem dosyalarını kullanın.

Yapılandırma dosyası şu anahtarları destekler:

  • delinea_username - Secret Server kullanıcı adı. Yapmak istediğiniz görevler için izne sahip programatik bir kullanıcı olmalıdır.
  • delinea_base_url - Secret Server örneğinizin temel URL'si.
  • platform_hostname - Platform kiracı ana makine adı (Platform araçlarını etkinleştirir).
  • platform_service_account - Platform API ile kullanılan hizmet hesabı.
  • platform_tenant_id - Platform API istekleri için kiracı kimliği.
  • strongdm_api_host - StrongDM kontrol düzlemi (varsayılan app.strongdm.com:443; UK/EU varyantları mevcuttur). Kimlik bilgileri SDM_API_ACCESS_KEY / SDM_API_SECRET_KEY ortam değişkenlerinden gelir; bkz. docs/strongdm.md.
  • azure_openai_endpoint - Azure OpenAI uç noktası. Yalnızca otomatik rapor oluşturmayı istiyorsanız (çoğu aracı kendi rapor SQL'ini oluşturabilir, bu yüzden ihtiyacınız olmadıkça etkinleştirmeyin).
  • azure_openai_deployment - Azure OpenAI için dağıtım adı.
  • auth_mode - Kimlik doğrulama modu (none veya oauth). OAuth açıkçası stdio aktarımı ile çalışmaz.
  • transport_mode - Komut satırı için stdio veya HTTP için sse. sse modunda sunucu, /mcp adresinde akışa uygun HTTP uç noktasını (mevcut MCP aktarımı, 2024-11-05 ile 2026-07-28 protokol revizyonlarına hizmet eder) ve /mcp/sse + /messages/ adreslerinde eski HTTP+SSE uç noktalarını sunar.
  • streamable_http_stateless - varsayılan true; sunucu tarafı oturumları olmadan /mcp çalıştırın (uzak bağlayıcılar için önerilir). Bağımsız GET akışı ile oturum tabanlı işlem için false değerini ayarlayın.
  • streamable_http_json_response - varsayılan true; /mcp üzerinde SSE çerçeveli yanıtlar yerine düz JSON ile yanıt verin.
  • chatgpt_disable_scope_checks - ChatGPT isteklerinde kapsam doğrulamasını atlayın. Yalnızca ChatGPT'ye bağlanırken sorun yaşarsanız etkinleştirin.
  • port - sse modunda HTTP sunucusu için bağlantı noktası.
  • debug - Ayrıntılı günlüğü etkinleştir.
  • external_hostname - OAuth belirteci kitleleri oluşturulurken kullanılan ana makine adı. HTTP(S) öneki veya bağlantı noktası eklemeyin.
  • ssl_keyfile - HTTPS için SSL anahtarının yolu. (ör. privkey.pem)
  • ssl_certfile - HTTPS için SSL sertifikasının yolu. (ör. fullchain.pem)
  • registration_psk - OAuth istemcilerini kaydetmek için gereken önceden paylaşılmış anahtar. OAuth bağlantılarını onaylamak için bu gizli anahtarı tarayıcınıza yazmanız gerekecektir.
  • jwt_key_path - OAuth belirteçleri için kullanılan RSA anahtar çiftinin konumu. Varsayılan .cache/jwt.json. yoksa otomatik olarak oluşturulur.
  • oauth_db_path - OAuth veritabanı dosyasının yolu. Varsayılan .cache/oauth.db. yoksa otomatik olarak oluşturulur.
  • enabled_tools - Kaydedilecek araç adlarının listesi. Boş liste tüm araçları etkinleştirir. Araçların kullanım durumuna veya göreve göre seçerek etkinleştirilmesi şiddetle önerilir. Bazı örnekler için docs/ klasörüne bakın.
  • search_objects - search aracı için izin verilen nesne türleri. Varsayılan ["secret"] ancak user, folder, group ve role içerebilir.
  • fetch_objects - fetch aracı için izin verilen nesne türleri. Varsayılan ["secret"] ancak search_objects ile aynı değerleri içerebilir.

Sunucuyu Çalıştırma

Sunucuyu geliştirme modunda yerel olarak başlatın:

python server.py

Başlangıçta sunucu bir taşıyıcı belirteci ister ve sonraki API istekleri için saklar. Bu proje, Secret Server API ile daha fazla entegrasyon için genişletilecektir.

MCP Araçları

Sunucu, Secret Server, Delinea Platform kimlik dizini ve (isteğe bağlı olarak) StrongDM için MCP araçları sunar. Her araç, tools/list aracılığıyla davranış notları (salt okunur/yıkıcı ipuçları) yayınlar.

ChatGPT / derin araştırma uyumluluğu

  • search(query) - {id, title, url} sonuç döndüren birleşik arama; nesne türleri search_objects yapılandırma anahtarıyla sınırlıdır (varsayılan: yalnızca gizli bilgiler).
  • fetch(id) - search tarafından yüzeye çıkarılan tek bir nesneyi alır; fetch_objects ile sınırlıdır.

Secret Server

  • run_report(sql_query, report_name=None) - geçici bir rapor oluşturup çalıştırır.
  • ai_generate_and_run_report(description) - Azure OpenAI kullanarak SQL üretir ve çalıştırır. Azure OpenAI değişkenlerini gerektirir.
  • list_example_reports() - örnek sorguları ve tablo bilgilerini listeler.
  • get_secret(id, summary=False) - bir gizli bilgiyi veya özet ayrıntılarını alır.
  • get_folder(id) - klasör meta verilerini ve alt öğelerini getirir.
  • search_secrets(query, lookup=False) - gizli bilgileri arar veya bulur.
  • search_folders(query, lookup=False) - klasörleri arar veya bulur.
  • get_secret_environment_variable(secret_id, environment) - gizli bilgi kimlik bilgilerini belirtilen kabukta almak için bir betik çıkarır.
  • check_secret_template(template_id) - gizli bilgi şablonu ayrıntılarını getirir.
  • check_secret_template_field(template_id, field_id) - bir şablonun bir alan içerip içermediğini kontrol eder.
  • get_secret_template_field(field_id) - kimliğe göre belirli bir gizli bilgi şablonu alanı hakkında ayrıntıları alır.
  • handle_access_request(request_id, status, response_comment, start_date=None, expiration_date=None) - bir erişim isteğini onaylar veya reddeder.
  • get_pending_access_requests() - bekleyen erişim isteklerini listeler.
  • get_inbox_messages(read_status_filter=None, take=20, skip=0) - gelen kutusu mesajlarını alır.
  • mark_inbox_messages_read(message_ids, read=True) - mesajları okundu veya okunmadı olarak işaretler.
  • create_secret_with_generated_password(name, secret_template_id, password_field_id, items, folder_id=None, site_id=None, comment=None) - parolası sunucu tarafında oluşturulan bir gizli bilgi oluşturur; yalnızca temizlenmiş meta veriler döndürülür, değer modele asla ulaşmaz.
  • update_secret_generated_password(secret_id, field_slug, password_field_id, comment=None) - değeri yüzeye çıkarmadan bir gizli bilginin parolasını sunucu tarafında döndürür.
  • update_secret_fields(secret_id, field_updates, comment=None, allow_password_fields=False) - şablonu oku → parola olmayan alanları değiştir → doğrula akışı; parola işaretli alanları açıkça izin verilmedikçe reddeder.
  • set_secret_field_environment_variable(secret_id, field_slug, environment, source="stdin", comment=None) - bir değeri yerel olarak okuyan ve gizli bilgi alanına iten bir kabuk betiği (bash/powershell/cmd) oluşturur, böylece değer modeli tamamen atlar.
  • bulk_user_response(user_ids, scenario, comment, confirm=False) - toplu kullanıcı işlemleri API'si üzerinde görüşlü bir olay birleştirici. Senaryolar: compromise, offboard, unlock, reenable, force_logout; confirm=True ve boş olmayan bir denetim yorumu gerektirir ve onaylanmadığında önizleme yapar.
  • role_management(action, role_id=None, data=None, params=None) - rolleri yönetir. action değeri list, get, create veya update olabilir. Rolleri listelerken params ile isteğe bağlı sorgu parametreleri geçirin. Örnek: role_management("update", role_id=3, data={"name": "New Role"}).
  • user_role_management(action, user_id, role_ids=None) - bir kullanıcıdan roller atar veya kaldırır. action değeri get, add veya remove ve role_ids ekleme/kaldırma işlemleri için rol tanımlayıcılarının listesidir.
  • group_management(action, group_id=None, data=None, params=None) - grupları yönetir. action değeri get, list, create veya delete olabilir. get/delete için group_id ve grup oluştururken data sağlayın.
  • folder_management(action, folder_id=None, data=None, params=None) - klasörleri yönetir. action değeri get, list, create, update veya delete olabilir. get, update veya delete için folder_id sağlayın ve bir klasör oluştururken veya güncellerken data verin.
  • user_group_management(action, user_id, group_ids=None) - bir kullanıcı için grup üyeliğini yönetir. action değeri get, add veya remove olabilir. Üyelik eklerken veya kaldırırken bir group_ids listesi sağlayın.
  • group_role_management(action, group_id, role_ids=None) - bir gruptaki rolleri kontrol eder. list, add veya remove eylemlerini kullanın. Eklerken veya kaldırırken role_ids sağlayın.
  • health_check() - Secret Server sağlık kontrolü uç noktasını sorgular ve mevcut hizmet durumunu döndürür.

Delinea Platform kullanıcıları ve rolleri

v1.0.0'dan itibaren kurallı kullanıcı araçları Delinea Platform kimlik dizinini hedefler (platform_hostname + PLATFORM_SERVICE_* kimlik bilgileri gerektirir; bunlar olmadan araçlar başarısız olmak yerine rehberlik döndürür):

  • user_management(action, user_id=None, data=None, username=None) - Platform kullanıcı CRUD'u. action değeri get, create, update, delete veya search kabul eder.
  • search_users(query) - Platform kullanıcı dizinini arar.
  • platform_role_management(action, role_id=None, data=None, page_size=100, query="%") - Platform rol CRUD'u (list, get, create, update, delete); rol değişiklikleri keşif odaklıdır ve API kapsamı bunları açığa çıkarmayan kiracılarda rehberlik döndürür.
  • platform_user_role_management(action, role_id, user_principals=None) - Platform rolünde kullanıcıları list, add veya remove yapar.
  • platform_user_management(...) - user_management için kullanımdan kaldırılmış takma ad.

Secret Server yerel kullanıcıları (eski)

Platform yapılandırılmamış yalnızca SS dağıtımları için:

  • secretserver_local_user_management(action, user_id=None, data=None, skip=0, take=20, is_exporting=False) - v1.0.0 öncesi Secret Server kullanıcı işlemleri: get, create, update, delete, list_sessions, reset_2fa, reset_password, lock_out. Örnek: secretserver_local_user_management("reset_password", user_id=42, data={"newPassword": "Pa$$w0rd"}).
  • search_secretserver_local_users(query) - Secret Server'ın yerel kullanıcı deposunu arar.

StrongDM araçları (isteğe bağlı, deneysel)

Deneysel: StrongDM arka ucu henüz canlı bir SDM kuruluşuna karşı doğrulanmadı (yalnızca SDK yüzeyine karşı birim testi yapıldı). Pürüzlü kenarlar bekleyin ve sorunları bildirin. strongdm ekstra ile kurulur; tam kılavuz için docs/strongdm.md bölümüne bakın. sdm_search, sdm_audit_access, sdm_grant_access (zaman sınırlı tam zamanında veya kalıcı hibeler), sdm_revoke_access, sdm_user_management (katılım/ayrılış akışları), sdm_role_management, sdm_resource_health, sdm_access_requests, sdm_activity_report, sdm_network_status. Yıkıcı eylemler onay kapılıdır ve denetim yorumlarıyla birlikte; belirsiz ad eşleşmeleri değişiklik yapmadan adayları döndürür.

Sunucu yapılandırma değişkenlerini yukarıda açıklandığı gibi kullanarak kimlik doğrulayın. Azure OpenAI değişkenleri eksikse AI aracı otomatik olarak devre dışı bırakılır. Yalnızca config.json içinde listelenen araç adları kaydedilir. Boş bir liste her aracı etkinleştirir.

Kullanım Durumları

Belgeler, araçları sunucuya bağlamak için birkaç iş akışını kapsar:

Docker Hızlı Başlangıç

MCP sunucusunu yerel olarak Python bağımlılıklarını yüklemeden çalıştırmak için bir Dockerfile sağlanmıştır.

  1. İmajı oluşturun:
docker build -t dev.local/delinea-mcp:latest .
  1. Sunucuyu çalıştırın (kimlik bilgilerinizi ortam değişkenleriyle iletin):
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

config.json'i yukarıda gösterildiği gibi kullanıcı adlarınız ve URL'lerinizle doldurun.

Kapsayıcı, oauth.db ve jwt.json'i /app/data içinde saklar. Bu dosyaların ve HTTPS sertifikalarının çalıştırmalar arasında kalıcı olması için bir birim bağlayın (yukarıda mcp-data olarak gösterilmiştir).

Bağlantı hatalarını önlemek için <https://your-secret-server/SecretServer>'i Secret Server örneğinizin temel URL'siyle değiştirin.

Sunucu varsayılan olarak python server.py kullanarak 8000 portunda başlayacaktır. Varsayılanı geçersiz kılmak için config.json içindeki port seçeneğini ayarlayın. Gelen tüm HTTP isteklerini günlüğe kaydetmek için debug: true'i etkinleştirin.

Örnek Betikler

manual_secret_request.py betiği, belirli bir secret kimliği için OAuth belirtecinin nasıl alınacağını gösterir:

python scripts/manual_secret_request.py <Secret_ID>

Betiği çalıştırmadan önce secret için SECRET_USERNAME_<id> ve SECRET_PASSWORD_<id> ortam değişkenlerini ayarlayın. İsteğe bağlı olarak varsayılan https://localhost/SecretServer'i geçersiz kılmak için DELINEA_BASE_URL'i ayarlayın.

Testleri Çalıştırma

Birim testlerini kapsamla çalıştırın (CI minimum %70 zorunlu kılar):

pip install -r requirements.txt
coverage run -m pytest -q
coverage report --omit "tests/*"

Canlı Test

Bazı entegrasyon testleri geçerli kimlik bilgileri gerektirir. Test paketini çalıştırmadan önce aşağıdaki ortam değişkenlerini ve isteğe bağlı LIVE_SECRET_ID'i ayarlayın:

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>

Bu değişkenler mevcut olduğunda canlı testler gerçek API istekleri gerçekleştirir.

Üretim Dağıtımı

Bağımlılıklar requirements.txt içinde sabitlenmiştir ve sürümler Semantic Versioning kullanılarak etiketlenir. Etiketli bir commit'ten Docker imajını oluşturun ve gerekli ortam değişkenlerini (DELINEA_USERNAME, DELINEA_PASSWORD, isteğe bağlı olarak DELINEA_BASE_URL) ileterek üretim ortamınıza dağıtın. İsteğe bağlı özellikler ek değişkenlere dayanır:

  • PLATFORM_SERVICE_PASSWORD ile birlikte PLATFORM_HOSTNAME, PLATFORM_SERVICE_ACCOUNT ve PLATFORM_TENANT_ID kullanıcı yönetimi araçlarını etkinleştirir.
  • AZURE_OPENAI_KEY ile birlikte AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_DEPLOYMENT yapay zeka rapor oluşturma yardımcısını etkinleştirir.
  • SDM_API_ACCESS_KEY ve SDM_API_SECRET_KEY deneysel StrongDM araçlarını etkinleştirir (strongdm ekstra gerektirir; bkz. docs/strongdm.md).

OAuth veya SSE taşımasıyla çalışırken registration_psk sağlamanız ve bir external_hostname veya HTTPS sertifika dosyaları yapılandırmanız gerekebilir.

Depo Düzeni

  • delinea_mcp/ - MCP araçlarını içeren paket: tools.py (Secret Server), user_platform_tools.py (Delinea Platform), secretserver_users.py (SS yerel kullanıcıları), strongdm_tools.py (StrongDM, isteğe bağlı), ayrıca transports/ (SSE + akışlı HTTP) ve auth/ (gömülü OAuth yetkilendirme sunucusu).
  • server.py - her şeyi MCP sunucusuna kaydeden ince giriş noktası.
  • docs/ - proje belgeleri ve oluşturulan delinea-secret-server-openapi-spec.json.
  • scripts/ - manual_secret_request.py dahil yardımcı örnekler.

Güvenlik Değerlendirmeleri

Gömülü OAuth yetkilendirme sunucusu, geliştirme, test ve küçük dağıtımlar için bir kolaylıktır; daha büyük dağıtımlar sunucunun önüne kuruluşlarının kimlik sağlayıcısını koymalıdır. Mevcut güvenlik önlemleri:

  • İstemci kaydı (/oauth/register) ve yetkilendirme formu, registration_psk paylaşılan gizli anahtarını gerektirir (sabit zamanlı karşılaştırılır).
  • redirect_uri değerleri, hem yetkilendirme formunda hem de kod yönlendirmesinde istemci için kayıtlı URI'lara karşı doğrulanır.
  • Erişim belirteçleri hedef kitleye bağlı RS256 JWT'lerdir; kaynak keşfi RFC 9728'i izler (401/403 yanıtlarında /.well-known/oauth-protected-resource artı WWW-Authenticate başlıkları).
  • Her zaman TLS ile dağıtın (ssl_keyfile/ssl_certfile veya sonlandırıcı bir proxy) — taşıyıcı belirteçler ve sırlar her istekte iletilir.
  • Araç maruziyetini kullanım durumuna göre enabled_tools ile kapsamlandırın; secret değerleri tasarım gereği model bağlamının dışında tutulur (sunucu tarafı parola oluşturma, env-var betik yönlendirmesi, parola alanı korumaları).

Sürüm Notları

En son özelliklerin ve yol haritası öğelerinin bir özeti için CHANGELOG.md dosyasına bakın.

Yol Haritası

  1. Geçiş kimlik doğrulaması
  2. OAuth İstemci Kimliği Meta Veri Belgeleri (CIMD) istemci desteği (Dinamik İstemci Kaydı, MCP protokol revizyonu 2026-07-28 itibarıyla kullanımdan kaldırılmıştır; PSK kapılı /oauth/register akışı mevcut bağlayıcılar için çalışmaya devam etmektedir)
  3. Delinea Platformu'ndaki araç kapsamını genişletin ve diğer Delinea ürünlerini ekleyin

Katkıda Bulunma

Katkılar memnuniyetle karşılanır! Her türlü iyileştirme için lütfen sorunlar veya çekme istekleri açın. Tüm yeni kodlar birim testleri içermeli ve mevcut test paketini geçmelidir.

Lisans

Bu proje MIT Lisansı altında lisanslanmıştır.