delinea-mcp

ทางการ

เซิร์ฟเวอร์ Delinea MCP อย่างเป็นทางการสำหรับ Delinea Secret Server และ Platform APIs

GitHub
46
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย 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

License


ข่าวสาร

  • 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 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) - ตัวรวมเหตุการณ์ แบบมีความเห็นเหนือ 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 ผู้ใช้ Platform action ยอมรับ get, create, update, delete หรือ search
  • search_users(query) - ค้นหาไดเรกทอรีผู้ใช้ Platform
  • platform_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 ผู้ใช้บนบทบาท Platform
  • platform_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 จะถูกลงทะเบียน รายการว่างเปิดใช้ทุกเครื่องมือ

กรณีการใช้งาน

เอกสารครอบคลุมเวิร์กโฟลว์หลายรายการสำหรับการเชื่อมต่อเครื่องมือกับเซิร์ฟเวอร์:

เริ่มต้นใช้งาน Docker อย่างรวดเร็ว

มี Dockerfile ให้สำหรับรันเซิร์ฟเวอร์ MCP โดยไม่ต้องติดตั้ง dependencies ของ Python ในเครื่อง

  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

กรอก 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 เปิดใช้งานตัวช่วยสร้างรายงาน 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 ในตัวเป็นความสะดวกสำหรับการพัฒนา การทดสอบ และการปรับใช้ขนาดเล็ก; การปรับใช้ขนาดใหญ่ควรวางเซิร์ฟเวอร์ไว้ด้านหน้าด้วยผู้ให้บริการข้อมูลประจำตัวขององค์กร มาตรการป้องกันปัจจุบัน:

  • การลงทะเบียนไคลเอนต์ (/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 สำหรับสรุปคุณสมบัติล่าสุดและรายการแผนงาน

แผนงาน

  1. การรับรองความถูกต้องแบบส่งผ่าน
  2. การสนับสนุนไคลเอนต์ OAuth Client ID Metadata Documents (CIMD) (การลงทะเบียนไคลเอนต์แบบไดนามิกถูกเลิกใช้ตั้งแต่การแก้ไขโปรโตคอล MCP 2026-07-28; โฟลว์ /oauth/register ที่ควบคุมด้วย PSK ยังคงทำงานสำหรับตัวเชื่อมต่อปัจจุบัน)
  3. ขยายความครอบคลุมเครื่องมือบน Delinea Platform และเพิ่มผลิตภัณฑ์ Delinea อื่นๆ

การมีส่วนร่วม

ยินดีต้อนรับการมีส่วนร่วม! กรุณาเปิด issues หรือ pull requests สำหรับการปรับปรุงใดๆ โค้ดใหม่ทั้งหมดควรรวมการทดสอบหน่วยและผ่านชุดการทดสอบที่มีอยู่

สัญญาอนุญาต

โครงการนี้ได้รับอนุญาตภายใต้ MIT License