delinea-mcp
ทางการเซิร์ฟเวอร์ Delinea MCP อย่างเป็นทางการสำหรับ Delinea Secret Server และ Platform APIs
คุณทำอะไรได้บ้างด้วย Delinea MCP?
- ค้นหาและดึงข้อมูลซีเคร็ต — ใช้
searchและfetchเพื่อค้นหาซีเคร็ตและดึงรายละเอียด โดยประเภทออบเจกต์ถูกจำกัดด้วยการตั้งค่าsearch_objectsและfetch_objects - จัดการซีเคร็ตโดยไม่เปิดเผยค่า — สร้างหรือหมุนรหัสผ่านฝั่งเซิร์ฟเวอร์ผ่าน
create_secret_with_generated_passwordและupdate_secret_generated_passwordเพื่อไม่ให้ค่าซีเคร็ตอยู่ในบริบทของโมเดล - รันรายงาน SQL — ดำเนินการคิวรีเฉพาะกิจด้วย
run_reportหรือสร้าง SQL จากคำอธิบายโดยใช้ai_generate_and_run_report(ต้องใช้ Azure OpenAI) - จัดการคำขอเข้าถึงและกล่องข้อความ — อนุมัติหรือปฏิเสธคำขอที่รอดำเนินการด้วย
handle_access_requestแสดงรายการผ่านget_pending_access_requestsและจัดการข้อความในกล่องข้อความด้วยget_inbox_messagesและmark_inbox_messages_read - จัดการผู้ใช้ กลุ่ม และบทบาท — จัดการเอนทิตีของ Secret Server ผ่าน
user_management,group_management,role_managementและเครื่องมือที่เกี่ยวข้องกับการเป็นสมาชิก เช่นuser_role_managementและgroup_role_management - ตรวจสอบสุขภาพของบริการ — คิวรี endpoint สถานะของ Secret Server ด้วย
health_checkเพื่อยืนยันว่าบริการทำงานปกติ
เอกสาร
DelineaMCP
เซิร์ฟเวอร์ MCP สำหรับ Delinea Secret Server และ Platform APIs
ข่าวสาร
- 11 ส.ค. 2026 — MCP Protocol v2 (spec revision 2026-07-28, streamable HTTP) และการรองรับ StrongDM API แบบทดลองมาถึงแล้ว — ดู บันทึกการเผยแพร่
- 11 ส.ค. 2026 — เราเป็นผู้ให้บริการดั้งเดิมของกรณีการใช้งาน vault แบบ "ไม่ให้ LLM เห็นความลับ" — ระวังพวกเลียนแบบ ;)
คุณสมบัติ
- การตรวจสอบสิทธิ์อัตโนมัติกับ Secret Server
- ชุดเครื่องมือ Secret Server ที่ครอบคลุมสำหรับจัดการโฟลเดอร์, ความลับ, ผู้ใช้, กลุ่ม และบทบาท รวมถึงตัวช่วยกล่องขาเข้าและคำขอเข้าถึง และยูทิลิตี้สำหรับ coding agent
- เครื่องมือที่เข้ากันได้กับ 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 transports - OAuth 2.0 พร้อมการลงทะเบียนไคลเอนต์แบบไดนามิกตามข้อกำหนด MCP
- รองรับ TLS สำหรับการเชื่อมต่อที่ปลอดภัย
- อิมเมจ Docker พร้อมใช้งานและ entry point สำหรับเซิร์ฟเวอร์พัฒนา
- ทดสอบกับ ChatGPT, Claude Desktop, remote Claude connector, VSCode Copilot และ openwebui
การติดตั้ง
[!NOTE]
โปรเจกต์นี้ใช้
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 เพียงใช้ cloud URL โดยไม่ต้องมี /SecretServer
ระบุ ssl_keyfile และ ssl_certfile เพื่อเปิดใช้ HTTPS
สำหรับ Let's Encrypt ให้ใช้ไฟล์ privkey.pem และ fullchain.pem
ไฟล์กำหนดค่ารองรับคีย์ต่อไปนี้:
- delinea_username - ชื่อผู้ใช้ Secret Server ต้องเป็นผู้ใช้แบบโปรแกรมที่มีสิทธิ์ทำงานที่คุณต้องการ
- delinea_base_url - URL ฐานของอินสแตนซ์ Secret Server ของคุณ
- platform_hostname - โฮสต์เนมของเทนันต์ Platform (เปิดใช้เครื่องมือ Platform)
- platform_service_account - บัญชีบริการที่ใช้กับ Platform API
- platform_tenant_id - รหัสเทนันต์สำหรับคำขอ Platform API
- strongdm_api_host - ระนาบควบคุม StrongDM (ค่าเริ่มต้น
app.strongdm.com:443; มีรุ่น UK/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 แน่นอน - transport_mode -
stdioสำหรับบรรทัดคำสั่งหรือsseสำหรับ HTTP ในโหมดsseเซิร์ฟเวอร์เปิดเผยทั้งปลายทาง streamable HTTP ที่/mcp(transport MCP ปัจจุบัน รองรับ protocol revisions 2024-11-05 ถึง 2026-07-28) และปลายทาง HTTP+SSE แบบเดิมที่/mcp/sse+/messages/ - streamable_http_stateless - ค่าเริ่มต้น
true; รัน/mcpโดยไม่มีเซสชันฝั่งเซิร์ฟเวอร์ (แนะนำสำหรับ remote connectors) ตั้งค่าfalseเพื่อเปิดใช้ การทำงานแบบเซสชันกับ GET stream แบบสแตนด์อโลน - streamable_http_json_response - ค่าเริ่มต้น
true; ตอบกลับด้วย JSON ธรรมดา แทนการตอบกลับแบบ SSE-framed บน/mcp - chatgpt_disable_scope_checks - ข้ามการตรวจสอบขอบเขตบนคำขอ ChatGPT เปิดใช้เฉพาะเมื่อพบปัญหาการเชื่อมต่อกับ ChatGPT
- port - พอร์ตสำหรับเซิร์ฟเวอร์ HTTP ในโหมด
sse - debug - เปิดใช้การบันทึกแบบละเอียด
- external_hostname - โฮสต์เนมที่ใช้เมื่อสร้าง audience ของโทเค็น OAuth อย่าเพิ่มคำนำหน้า HTTP(S) หรือพอร์ต
- ssl_keyfile - เส้นทางไปยังคีย์ SSL สำหรับ HTTPS (เช่น
privkey.pem) - ssl_certfile - เส้นทางไปยังใบรับรอง SSL สำหรับ HTTPS (เช่น
fullchain.pem) - registration_psk - คีย์ที่แชร์ล่วงหน้าที่จำเป็นสำหรับการลงทะเบียนไคลเอนต์ OAuth คุณจะต้องพิมพ์ความลับนี้ในเบราว์เซอร์เพื่ออนุมัติการเชื่อมต่อ OAuth
- jwt_key_path - ตำแหน่งของคู่คีย์ RSA ที่ใช้สำหรับโทเค็น OAuth ค่าเริ่มต้นคือ
.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
เมื่อเริ่มต้น เซิร์ฟเวอร์จะขอ bearer token และเก็บไว้สำหรับคำขอ API ครั้งถัดไป โปรเจกต์นี้จะถูกขยายเพื่อรวมเข้ากับ Secret Server API เพิ่มเติม
เครื่องมือ MCP
เซิร์ฟเวอร์เปิดเผยเครื่องมือ MCP สำหรับ Secret Server, ไดเรกทอรีข้อมูลประจำตัว Delinea Platform
และ (ไม่บังคับ) StrongDM ทุกเครื่องมือเผยแพร่
คำอธิบายพฤติกรรม (คำใบ้แบบอ่านอย่างเดียว/ทำลาย) ผ่าน 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)- สร้าง SQL โดยใช้ Azure OpenAI และรัน ต้องใช้ตัวแปร Azure OpenAIlist_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)- ดึงรายละเอียดเกี่ยวกับฟิลด์เทมเพลตความลับเฉพาะตาม IDhandle_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)- ตัวรวมเหตุการณ์ แบบมีความเห็นเหนือ bulk-user operations 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ระบุgroup_idสำหรับ get/delete และdataเมื่อสร้างกลุ่มfolder_management(action, folder_id=None, data=None, params=None)- จัดการโฟลเดอร์actionอาจเป็นget,list,create,updateหรือdeleteระบุfolder_idสำหรับ get, update หรือ delete และระบุ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
(ต้องใช้ข้อมูลรับรอง platform_hostname + PLATFORM_SERVICE_*;
หากไม่มี เครื่องมือจะส่งคืนคำแนะนำแทนการล้มเหลว):
user_management(action, user_id=None, data=None, username=None)- CRUD ผู้ใช้ Platformactionยอมรับget,create,update,deleteหรือsearchsearch_users(query)- ค้นหาไดเรกทอรีผู้ใช้ Platformplatform_role_management(action, role_id=None, data=None, page_size=100, query="%")- CRUD บทบาท Platform (list,get,create,update,delete); การเปลี่ยนแปลงบทบาท ขับเคลื่อนโดยการค้นพบและส่งคืนคำแนะนำบนเทนันต์ที่ขอบเขต API ไม่เปิดเผยplatform_user_role_management(action, role_id, user_principals=None)-list,addหรือremoveผู้ใช้บนบทบาท Platformplatform_user_management(...)- นามแฝงที่เลิกใช้แล้วของuser_management
ผู้ใช้ท้องถิ่น Secret Server (เดิม)
สำหรับการปรับใช้เฉพาะ SS โดยไม่มีการกำหนดค่า Platform:
secretserver_local_user_management(action, user_id=None, data=None, skip=0, take=20, is_exporting=False)- การดำเนินการผู้ใช้ Secret Server ก่อน v1.0.0: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 เท่านั้น) คาดว่าจะมี
จุดบกพร่องและรายงานปัญหา ติดตั้งผ่าน extra strongdm; ดู
docs/strongdm.md สำหรับคำแนะนำฉบับเต็ม sdm_search, sdm_audit_access, sdm_grant_access
(การให้สิทธิ์แบบ just-in-time หรือแบบถาวรที่จำกัดเวลา), sdm_revoke_access,
sdm_user_management (โฟลว์ onboard/offboard), sdm_role_management,
sdm_resource_health, sdm_access_requests, sdm_activity_report,
sdm_network_status การกระทำที่ทำลายล้างถูกจำกัดด้วยการยืนยันพร้อมความคิดเห็นการตรวจสอบ
การจับคู่ชื่อที่ไม่ชัดเจนส่งคืนตัวเลือกโดยไม่เปลี่ยนแปลง
ใช้ตัวแปรการกำหนดค่าเซิร์ฟเวอร์ที่อธิบายข้างต้นเพื่อตรวจสอบสิทธิ์
เครื่องมือ AI ถูกปิดใช้งานอัตโนมัติหากไม่มีตัวแปร Azure OpenAI
เฉพาะชื่อเครื่องมือที่ระบุใน config.json จะถูกลงทะเบียน
รายการว่างเปิดใช้ทุกเครื่องมือ
กรณีการใช้งาน
เอกสารครอบคลุมเวิร์กโฟลว์หลายรายการสำหรับการเชื่อมต่อเครื่องมือกับเซิร์ฟเวอร์:
- ตัวเชื่อมต่อแบบกำหนดเองของ ChatGPT
- Claude Desktop
- ตัวเชื่อมต่อ Claude ระยะไกล
- openwebui สำหรับการดูแลระบบ
- VSCode Copilot
เริ่มต้นใช้งาน Docker อย่างรวดเร็ว
มี Dockerfile ให้สำหรับรันเซิร์ฟเวอร์ MCP โดยไม่ต้องติดตั้ง dependencies ของ Python ในเครื่อง
- สร้างอิมเมจ:
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
กรอก config.json ด้วยชื่อผู้ใช้และ URL ของคุณตามที่แสดงด้านบน
คอนเทนเนอร์จัดเก็บ oauth.db และ jwt.json ใน /app/data
เมานต์โวลุ่ม (แสดงเป็น mcp-data ด้านบน) เพื่อให้ไฟล์เหล่านี้และใบรับรอง HTTPS ใดๆ คงอยู่ระหว่างการรัน
แทนที่ <https://your-secret-server/SecretServer> ด้วย URL ฐานของอินสแตนซ์ Secret Server ของคุณเพื่อหลีกเลี่ยงข้อผิดพลาดการเชื่อมต่อ
เซิร์ฟเวอร์จะเริ่มต้นบนพอร์ต 8000 โดยค่าเริ่มต้นโดยใช้ python server.py
ตั้งค่าตัวเลือก port ใน config.json เพื่อแทนที่ค่าเริ่มต้น
เปิดใช้งาน debug: true เพื่อบันทึกคำขอ HTTP ที่เข้ามาทั้งหมด
สคริปต์ตัวอย่าง
สคริปต์ manual_secret_request.py แสดงวิธีดึงโทเค็น 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 จริง
การปรับใช้ในสภาพแวดล้อมการผลิต
Dependencies ถูกตรึงใน 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เปิดใช้งานตัวช่วยสร้างรายงาน AISDM_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- จุดเริ่มต้นแบบบางที่ลงทะเบียนทุกอย่างกับเซิร์ฟเวอร์ MCPdocs/- เอกสารโครงการและdelinea-secret-server-openapi-spec.jsonที่สร้างขึ้นscripts/- ตัวอย่างตัวช่วยรวมถึงmanual_secret_request.py
ข้อควรพิจารณาด้านความปลอดภัย
เซิร์ฟเวอร์อนุญาต OAuth ในตัวเป็นความสะดวกสำหรับการพัฒนา การทดสอบ และการปรับใช้ขนาดเล็ก; การปรับใช้ขนาดใหญ่ควรวางเซิร์ฟเวอร์ไว้ด้านหน้าด้วยผู้ให้บริการข้อมูลประจำตัวขององค์กร มาตรการป้องกันปัจจุบัน:
- การลงทะเบียนไคลเอนต์ (
/oauth/register) และแบบฟอร์มอนุญาตทั้งคู่ต้องใช้registration_pskความลับที่ใช้ร่วมกัน (เปรียบเทียบแบบเวลาคงที่) - ค่า
redirect_uriถูกตรวจสอบกับ URI ที่ลงทะเบียนสำหรับไคลเอนต์ทั้งในแบบฟอร์มอนุญาตและการเปลี่ยนเส้นทางรหัส - โทเค็นการเข้าถึงเป็น JWT RS256 ที่ผูกกับผู้ชม; การค้นพบทรัพยากรเป็นไปตาม RFC 9728 (
/.well-known/oauth-protected-resourceบวกกับส่วนหัวWWW-Authenticateในการตอบสนอง 401/403) - ปรับใช้ด้วย TLS เสมอ (
ssl_keyfile/ssl_certfileหรือพร็อกซีที่สิ้นสุด) — โทเค็นผู้ถือและความลับถูกส่งผ่านทุกคำขอ - จำกัดการเปิดเผยเครื่องมือตามกรณีการใช้งานด้วย
enabled_tools; ค่า ความลับ ถูกเก็บไว้นอกบริบทโมเดลโดยการออกแบบ (การสร้างรหัสผ่านฝั่งเซิร์ฟเวอร์, การอ้อมสคริปต์ตัวแปรสภาพแวดล้อม, การป้องกันช่องรหัสผ่าน)
หมายเหตุรีลีส
ดู CHANGELOG.md สำหรับสรุปคุณสมบัติล่าสุดและรายการแผนงาน
แผนงาน
- การรับรองความถูกต้องแบบส่งผ่าน
- การสนับสนุนไคลเอนต์ OAuth Client ID Metadata Documents (CIMD) (การลงทะเบียนไคลเอนต์แบบไดนามิกถูกเลิกใช้ตั้งแต่การแก้ไขโปรโตคอล MCP 2026-07-28; โฟลว์
/oauth/registerที่ควบคุมด้วย PSK ยังคงทำงานสำหรับตัวเชื่อมต่อปัจจุบัน) - ขยายความครอบคลุมเครื่องมือบน Delinea Platform และเพิ่มผลิตภัณฑ์ Delinea อื่นๆ
การมีส่วนร่วม
ยินดีต้อนรับการมีส่วนร่วม! กรุณาเปิด issues หรือ pull requests สำหรับการปรับปรุงใดๆ โค้ดใหม่ทั้งหมดควรรวมการทดสอบหน่วยและผ่านชุดการทดสอบที่มีอยู่
สัญญาอนุญาต
โครงการนี้ได้รับอนุญาตภายใต้ MIT License