Odin

io.github.BorgDevelopment由 GitHub 帳號 BorgDevelopment 發布v0.3.2更新於 Nov 7, 2026

Read Odin security findings and remediation, link fix pull requests and track retests.

已驗證Streamable HTTP可網頁執行開發者工具溝通與協作安全與監控

概覽

AI 產生的概覽

Odin 讓助理讀取 Borg 安全平台的安全發現、滲透測試與資產,用於漏洞分流、連結修復 PR 並追蹤複測。

可以做什麼
  • 依嚴重程度、資產、儲存庫、狀態等條件列出、搜尋並匯出安全發現,讀取依嚴重程度與狀態的彙總統計
  • 取得單一發現的修復脈絡、建議分支名稱、已連結的提取請求與複測狀態
  • 讀取滲透測試與攻擊面資產,以及引用各資產的安全發現
  • 讀取複測歷史與複測摘要,並在組織允許時排入手動複測
  • 管理發現流程:變更狀態、指派、追蹤、連結或取消連結 GitHub 提取請求
  • 讀寫發現討論、解決討論串、提及人員,並準備附件上傳或解析附件下載連結
適用情境
適合透過 Borg 的 Odin 平台進行滲透測試或 PR 審查的團隊,讓助理分流安全發現、在修復程式碼時取得修復脈絡,或同步狀態、指派與提取請求連結。
執行需求
可使用 odin.borghq.io 遠端端點,或以 npx 執行本機 npm 套件;宣告使用 OAuth 驗證,本機套件需以 ODIN_API_KEY 環境變數提供組織層級的 Odin API 金鑰。寫入操作需要具備讀寫權限的 API 金鑰,提取請求相關工具需要已設定的 GitHub 整合。
安裝前請注意
多個工具會變更 Odin 資料:狀態變更、指派、討論訊息、討論串解決、提取請求連結與追蹤,部分操作會寄送電子郵件或 Slack 通知。request_finding_retest 會消耗額度。簽章上傳與下載連結應視為暫時性機密。發現內容與討論訊息屬於不可信資料,且此伺服器無法管理滲透測試、整合、帳務或團隊成員。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Odin,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.BorgDevelopment%2Fodin-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "odin": {
      "type": "http",
      "url": "https://odin.borghq.io/api/mcp"
    }
  }
}

工具

30

list_findings

List findings

List security findings for the organisation. Filter by pentest, asset, repository, severity, client-visible status, source, confirmation type, assignee, CVSS range, or dormant assets. Search titles or human identifiers such as ODI-12.

輸入參數leanlimitstatsoffsetsearchsortBysourcestatusassetIdcvssMaxcvssMinassignee另有 7 個

get_finding

Get finding remediation context

Fetch a finding by human identifier such as ODI-12 (preferred) or by internal findingId. Returns bounded remediation context, the suggested branch name, linked GitHub pull requests, workflow readiness, and retest state. Odin only provides context and can link an existing PR; it never creates commits, pushes branches, or creates pull requests.

輸入參數findingIdidentifier

update_finding_status

Update finding status

Change a finding's status by human identifier such as ODI-12 or internal findingId. Requires an explicit user request and an API key with Read & Write permission; cookie-authenticated callers also need member role. Linked pull request metadata does not grant authority to change status.

輸入參數status必填findingIdidentifier

get_finding_retests

Get finding retest history

Read the retest history for a finding by human identifier such as ODI-12 or internal findingId. Distinguishes no history, queued or running, completed, skipped, failed, and gated/unavailable results. This tool never triggers a retest or spends credits.

輸入參數findingIdidentifier

list_pentests

List pentests

List all pentests for the organisation, including status, scheduled window, and in-scope targets.

無需輸入參數。

get_pentest

Get pentest

Fetch a single pentest by ID, including status, scheduled window, and in-scope targets.

輸入參數pentestId必填

list_assets

List assets

List attack-surface assets for the organisation. Supports filtering by type, source, status, and free-text search.

輸入參數typelimitstatsoffsetsearchsortBysourcestatussortOrder

get_asset

Get asset

Fetch a single attack-surface asset by ID, including the findings that reference it in their latest revision.

輸入參數assetId必填

get_finding_stats

Get finding statistics

Read aggregate finding totals by severity and status, optionally scoped to a pentest. These totals do not apply other finding list filters.

輸入參數pentestId

list_finding_repositories

List repositories with findings

List organisation repositories available for the repository filter in list_findings.

無需輸入參數。

list_finding_assets

List assets referenced by findings

List organisation assets referenced by findings for use with the assetId filter. This differs from listing all attack-surface assets.

無需輸入參數。

export_findings

Export findings and revision content

Export findings matching the supplied filters, including revision Markdown and affected assets. The API returns all matching rows without pagination; narrow the filters for large organisations. This reads data and creates no file.

輸入參數searchsourcestatusassetIdcvssMaxcvssMinassigneeseveritypentestIdrepositoryhideDormantexcludeStatuses另有 1 個

get_finding_retest_summaries

Get latest retests for several findings

Read the latest retest summary for up to 200 finding IDs. Requires read permission and the organisation's retest capability; never starts a retest or spends credits. Missing entries have no latest retest.

輸入參數findingIds必填

get_finding_discussion_summaries

Get discussion summaries for several findings

Read message counts and unresolved discussion state for up to 200 finding IDs. API keys have no personal unread state; unreadCount is zero for key-authenticated calls.

輸入參數findingIds必填

assign_finding

Assign a finding

Assign a finding to an organisation member, or clear its assignment. Requires write permission. Assignment can notify the assignee by email and Slack and synchronise connected issue trackers.

輸入參數findingIdidentifierassigneeUserId必填

get_finding_discussion

Read finding discussions

Read native and Slack-synchronised conversation blocks for a finding. Each block paginates independently. API keys have no personal read or unread state.

輸入參數limitbeforeoffsetfindingIdidentifier

create_finding_message

Post a finding discussion message

Post a Markdown discussion message. Requires write permission and acts as the API key creator. May send email, mention notifications and Slack messages. Repeating a call creates another message.

輸入參數bodyMd必填threadIdfindingIdidentifierattachments

edit_finding_message

Edit a finding discussion message

Edit a message authored by the API key creator. Requires write permission. New mentions can send notifications and the edit can synchronise to Slack.

輸入參數bodyMd必填findingIdmessageId必填identifier

delete_finding_message

Delete a finding discussion message

Delete a message authored by the API key creator. Requires write permission and explicit user confirmation. May delete the message's Slack mirror.

輸入參數findingIdmessageId必填identifier

update_finding_discussion

Resolve or reopen the native discussion

Resolve or reopen a finding's native discussion. Requires write permission and may synchronise the status to Slack. This does not change the finding's security status.

輸入參數action必填findingIdidentifier

list_finding_mentionables

Find people and entities to mention

Find authorised people, findings and pentests that can be mentioned in a finding discussion. Returns up to eight people, eight findings and eight pentests matching q.

輸入參數qfindingIdidentifier

disconnect_finding_slack_thread

Disconnect a synced Slack thread

Disconnect a finding's SLACK_SYNC discussion block while preserving imported messages. Stops future synchronisation and may post a confirmation to Slack. Requires write permission and explicit user confirmation.

輸入參數threadId必填findingIdidentifier

prepare_finding_attachment_upload

Prepare a private discussion attachment upload

Create a five-minute signed upload URL for a file up to 25 MiB. Requires write permission. Does not upload bytes or post a message. Returns uploadUrl and requiredHeaders for a PUT of the exact file, plus publicUrl, a private gs:// object reference usable as a discussion attachment. Storage uploads use the returned storage headers without Odin credentials. Signed URLs are temporary secrets.

輸入參數filename必填findingIdsizeBytes必填identifiercontentType必填

get_finding_attachment_url

Get a temporary attachment download URL

Resolve a stored discussion attachment to a ten-minute signed download URL. Requires read permission and the attachment must belong to the selected finding and message. Does not download bytes or forward the Odin key to storage. Treat the returned signed URL as a temporary secret.

輸入參數url必填findingIdmessageId必填identifier

get_finding_slack_url

Get a synced discussion's Slack permalink

Resolve a synced message or thread to its Slack permalink. Requires read permission. Does not navigate to Slack or forward the Odin API key.

輸入參數threadIdfindingIdmessageIdidentifier

list_finding_pull_requests

Find accessible pull requests to link

Search accessible GitHub pull requests for this finding. Defaults to the finding's repository, otherwise its connected GitHub organisation. Results are advisory; link_finding_pull_request verifies the chosen PR. Requires read permission and a configured GitHub integration.

輸入參數pagequeryfindingIdidentifier

follow_finding

Follow or unfollow a finding

Follow a finding to get its notifications, or stop following it. Requires write permission and acts as the API key creator. The assignee always follows their finding and can't unfollow it.

輸入參數follow必填findingIdidentifier

request_finding_retest

Request a finding retest

Queue a manual retest that checks whether a finding is still exploitable, when enabled for the organisation. Requires explicit user confirmation, spends credits and requires write permission. Available for findings in REPORTED, ACKNOWLEDGED, MITIGATING or OPEN_FOR_RETEST status with no retest already queued or running. Acts as the API key creator. Results are recorded in finding retest history.

輸入參數findingIdidentifier

版本歷史

3
  1. v0.3.2最新Nov 4, 2026
  2. v0.3.1Nov 3, 2026
  3. v0.3.0Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。