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 分

    请在仓库或注册中心条目中声明许可证。