delinea-mcp
resmiDelinea Secret Server ve Platform API'leri için resmi Delinea MCP sunucusu
Delinea MCP ile neler yapabilirsiniz?
- Sırları arama ve getirme —
searchvefetchkullanarak sırları bulun ve ayrıntılarını alın; nesne türlerisearch_objectsvefetch_objectsyapılandırmasıyla sınırlandırılır. - Değerleri açığa çıkarmadan sırları yönetin —
create_secret_with_generated_passwordveupdate_secret_generated_passwordile 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ın —
run_reportile geçici sorgular yürütün veyaai_generate_and_run_reportkullanarak bir açıklamadan SQL oluşturun (Azure OpenAI gerektirir). - Erişim isteklerini ve gelen kutusunu yönetin —
handle_access_requestile bekleyen istekleri onaylayın veya reddedin,get_pending_access_requestsile bunları listeleyin veget_inbox_messagesilemark_inbox_messages_readkullanarak gelen kutusu mesajlarını yönetin. - Kullanıcıları, grupları ve rolleri yönetin —
user_management,group_management,role_managementveuser_role_managementilegroup_role_managementgibi 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_checkile Secret Server durum uç noktasını sorgulayın.
Dokümantasyon
DelineaMCP
Delinea Secret Server ve Platform API'leri için MCP sunucusu
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ı (
searchvefetch). - İ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 gibipipvevenvkomutlarını her zamanki gibi yapabilirsiniz.
- Uv'yi Kurun
- Projeyi başlatın:
uv pip sync requirements.txt uv run server.py --config config.jsonkullanı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 bilgileriSDM_API_ACCESS_KEY/SDM_API_SECRET_KEYortam 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 (
noneveyaoauth). OAuth açıkçası stdio aktarımı ile çalışmaz. - transport_mode - Komut satırı için
stdioveya HTTP içinsse.ssemodunda sunucu,/mcpadresinde 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çinfalsedeğ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 -
ssemodunda 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 -
searcharacı için izin verilen nesne türleri. Varsayılan["secret"]ancakuser,folder,groupveroleiçerebilir. - fetch_objects -
fetcharacı için izin verilen nesne türleri. Varsayılan["secret"]ancaksearch_objectsile 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ürlerisearch_objectsyapılandırma anahtarıyla sınırlıdır (varsayılan: yalnızca gizli bilgiler).fetch(id)-searchtarafından yüzeye çıkarılan tek bir nesneyi alır;fetch_objectsile 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=Trueve boş olmayan bir denetim yorumu gerektirir ve onaylanmadığında önizleme yapar.role_management(action, role_id=None, data=None, params=None)- rolleri yönetir.actiondeğerilist,get,createveyaupdateolabilir. Rolleri listelerkenparamsile 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.actiondeğeriget,addveyaremoveverole_idsekleme/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.actiondeğeriget,list,createveyadeleteolabilir. get/delete içingroup_idve grup oluştururkendatasağlayın.folder_management(action, folder_id=None, data=None, params=None)- klasörleri yönetir.actiondeğeriget,list,create,updateveyadeleteolabilir. get, update veya delete içinfolder_idsağlayın ve bir klasör oluştururken veya güncellerkendataverin.user_group_management(action, user_id, group_ids=None)- bir kullanıcı için grup üyeliğini yönetir.actiondeğeriget,addveyaremoveolabilir. Üyelik eklerken veya kaldırırken birgroup_idslistesi sağlayın.group_role_management(action, group_id, role_ids=None)- bir gruptaki rolleri kontrol eder.list,addveyaremoveeylemlerini kullanın. Eklerken veya kaldırırkenrole_idssağ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.actiondeğeriget,create,update,deleteveyasearchkabul 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,addveyaremoveyapar.platform_user_management(...)-user_managementiç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.
- İmajı oluşturun:
docker build -t dev.local/delinea-mcp:latest .
- 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_PASSWORDile birliktePLATFORM_HOSTNAME,PLATFORM_SERVICE_ACCOUNTvePLATFORM_TENANT_IDkullanıcı yönetimi araçlarını etkinleştirir.AZURE_OPENAI_KEYile birlikteAZURE_OPENAI_ENDPOINTveAZURE_OPENAI_DEPLOYMENTyapay zeka rapor oluşturma yardımcısını etkinleştirir.SDM_API_ACCESS_KEYveSDM_API_SECRET_KEYdeneysel StrongDM araçlarını etkinleştirir (strongdmekstra 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ıcatransports/(SSE + akışlı HTTP) veauth/(gömülü OAuth yetkilendirme sunucusu).server.py- her şeyi MCP sunucusuna kaydeden ince giriş noktası.docs/- proje belgeleri ve oluşturulandelinea-secret-server-openapi-spec.json.scripts/-manual_secret_request.pydahil 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_pskpaylaşılan gizli anahtarını gerektirir (sabit zamanlı karşılaştırılır). redirect_urideğ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-resourceartıWWW-Authenticatebaşlıkları). - Her zaman TLS ile dağıtın (
ssl_keyfile/ssl_certfileveya sonlandırıcı bir proxy) — taşıyıcı belirteçler ve sırlar her istekte iletilir. - Araç maruziyetini kullanım durumuna göre
enabled_toolsile 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ı
- Geçiş kimlik doğrulaması
- 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/registerakışı mevcut bağlayıcılar için çalışmaya devam etmektedir) - 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.