Octopus Deploy Official MCP Server
官方Octopus MCP Server 為您的 AI 助手提供強大工具,使其能夠檢查、查詢及診斷 Octopus 執行個體中的問題,將其轉變為您終極的 DevOps 夥伴。
文件
Octopus Deploy 官方 MCP 伺服器
Octopus 讓您可以輕鬆地將軟體交付到 Kubernetes、多雲端、本地基礎架構以及其他任何地方。使用一個能夠以大規模處理持續交付(CD)的工具,來自動化您的軟體和 AI 工作負載的發布、部署與運營,這是其他工具無法比擬的。
模型上下文協定(MCP)讓您在日常工作中使用的 AI 助理(例如 Claude Code 或 ChatGPT)能夠以標準化的方式連接到您擁有的系統和服務,使它們能夠從這些系統和服務中提取資訊來回答問題並執行任務。
Octopus MCP 伺服器為您的 AI 助理提供了強大的工具,使其能夠檢查、查詢和診斷 Octopus 執行個體中的問題,將其轉變為您的終極 DevOps 副駕駛。有關支援的使用案例和範例提示,請參閱我們的文件。
Octopus 伺服器相容性
MCP 伺服器公開的大部分工具使用的穩定 API,至少從 Octopus 伺服器 2021.1 版本開始就已可用。較新的工具將在文件中指定最低支援版本。或者,您可以使用命令列引數 --list-tools-by-version 來檢查特定工具與 Octopus 版本的關聯。
🚀 安裝
透過 Docker 安裝
必須透過環境變數提供憑證,以避免在主機處理序清單中暴露它們(ps aux / /proc/<pid>/cmdline)。Octopus 伺服器 URL 仍然可以透過 --server-url 旗標提供。
docker run -i --rm -e OCTOPUS_API_KEY=your-key -e OCTOPUS_SERVER_URL=https://your-octopus.com octopusdeploy/mcp-server
完整設定範例(適用於 Claude Desktop、Claude Code 和 Cursor):
{
"mcpServers": {
"octopus-deploy": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OCTOPUS_SERVER_URL",
"-e",
"OCTOPUS_API_KEY",
"octopusdeploy/mcp-server"
],
"env": {
"OCTOPUS_SERVER_URL": "https://your-octopus.com",
"OCTOPUS_API_KEY": "YOUR_API_KEY"
}
},
}
}
對於 Apple Mac 使用者,您可能需要在設定中新增以下引數,以強制 Docker 使用 Linux 平台:
"--platform",
"linux/amd64",
我們計劃很快發布原生的 ARM 建置版本,屆時將不再需要這些引數。
透過 Node 安裝
需求
- Node.js >= v20.0.0
- 可透過 HTTPS 由 MCP 伺服器存取的 Octopus Deploy 執行個體
- Octopus Deploy API 金鑰或存取權杖(請參閱下方的驗證)
設定
完整設定範例(適用於 Claude Desktop、Claude Code 和 Cursor):
啟用寫入工具(預設):
{
"mcpServers": {
"octopusdeploy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@octopusdeploy/mcp-server"],
"env": {
"OCTOPUS_SERVER_URL": "https://your-octopus.com",
"OCTOPUS_API_KEY": "YOUR_API_KEY"
}
}
}
}
唯讀模式(建議用於生產環境):
{
"mcpServers": {
"octopusdeploy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@octopusdeploy/mcp-server", "--read-only"],
"env": {
"OCTOPUS_SERVER_URL": "https://your-octopus.com",
"OCTOPUS_API_KEY": "YOUR_API_KEY"
}
}
}
}
Octopus MCP 伺服器通常是在您選擇的 AI 客戶端中進行設定。
它以 npm 套件的形式封裝,並透過 Node 的 npx 命令執行。憑證(API 金鑰或存取權杖)必須透過環境變數提供——它們不被接受為命令列引數,以避免在處理序清單中暴露機密。Octopus 伺服器 URL 可以透過 OCTOPUS_SERVER_URL 環境變數或 --server-url 旗標提供。
OCTOPUS_API_KEY=API-KEY \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server
或在命令列上指定伺服器 URL:
OCTOPUS_API_KEY=API-KEY \
npx -y @octopusdeploy/mcp-server --server-url https://your-octopus.com
驗證
MCP 伺服器支援兩種驗證方法。兩者都透過環境變數提供——命令列上不接受憑證,因為旗標對任何本機使用者來說在主機處理序清單中都是可見的。
API 金鑰(建議用於互動式使用)
API 金鑰是 Octopus Deploy 的標準驗證方法。您可以從 Octopus Deploy 使用者設定檔中產生一個。
OCTOPUS_API_KEY=API-XXXXXXXXXXXXXXXXXXXXXXXXXX \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server
存取權杖 / Bearer 權杖(僅限自動化場景)
伺服器也支援短期存取權杖(Bearer 權杖)作為 API 金鑰的替代方案。此驗證方法僅適用於自動化場景,即外部系統向 MCP 伺服器發行短期權杖(例如 CI/CD 管線、自動化編排或機器對機器工作流程)。請勿使用長期 Bearer 權杖——對於互動式或長期執行的工作階段,請改用 API 金鑰。
OCTOPUS_ACCESS_TOKEN=your-short-lived-token \
OCTOPUS_SERVER_URL=https://your-octopus.com \
npx -y @octopusdeploy/mcp-server
使用存取權杖的完整設定範例:
{
"mcpServers": {
"octopusdeploy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@octopusdeploy/mcp-server"],
"env": {
"OCTOPUS_SERVER_URL": "https://your-octopus.com",
"OCTOPUS_ACCESS_TOKEN": "YOUR_TOKEN"
}
}
}
}
如果同時提供了 API 金鑰和存取權杖,則存取權杖優先。使用中的驗證方法會記錄在日誌檔案中(可透過 --log-file 設定),以便操作人員確認正在使用哪個憑證。
設定選項
Octopus MCP 伺服器支援多個命令列選項,用於自訂可用的工具。
如果您不確定需要哪些工具,我們建議在沒有任何額外命令列選項的情況下執行,並使用提供的預設值。
工具集
使用 --toolsets 參數來啟用特定的工具群組:
# Enable all toolsets (default)
npx -y @octopusdeploy/mcp-server
# Enable only specific toolsets
npx -y @octopusdeploy/mcp-server --toolsets projects,deployments
# Enable all toolsets explicitly
npx -y @octopusdeploy/mcp-server --toolsets all
可用的工具集:
- core - 基本操作(始終啟用)
- projects - 專案操作
- deployments - 部署操作
- releases - 版本管理
- runbooks - Runbook 探索與執行
- tasks - 任務操作
- tenants - 多租戶操作
- kubernetes - Kubernetes 操作
- machines - 部署目標操作
- certificates - 憑證操作
- accounts - 帳戶操作
- interruptions - 手動干預與核准操作
- featureToggles - 檢查與調整客戶功能切換
- context - 已驗證的使用者與專案上下文(目前使用者、Git 分支)
唯讀模式
伺服器預設以啟用寫入工具的方式執行。傳遞 --read-only 以停用所有寫入工具,並透過 execute 防護機制封鎖 POST/PUT/PATCH/DELETE。大多數精心設計的工具已經是唯讀的;只有一小部分會執行寫入。
寫入啟用工具(始終寫入):
create_release- 建立新版本deploy_release- 將版本部署到環境和租戶run_runbook- 針對一個或多個環境(以及可選的租戶)執行 Runbookupdate_feature_toggle- 調整現有功能切換的每個環境狀態和推出百分比
條件式寫入工具: execute 是一個結構化的 REST 防護機制,其層級(讀取 / 寫入 / 刪除)由傳遞給它的 HTTP 方法決定。詳情請參閱 API 目錄與防護機制 章節。
寫入工具受到 MCP 引出提示的管制:支援引出的客戶端將在呼叫繼續之前被要求確認。不支援引出的客戶端必須在工具引數中傳遞 confirm: true——否則工具會因錯誤而中止。設定 OCTOPUS_SKIP_ELICITATION=true 以完全繞過此管制(適用於無人值守的自動化)。
伺服器使用三層讀取/寫入/刪除分類,根據 HTTP 方法在伺服器端強制執行(代理程式無法透過謊報意圖來繞過):
- 讀取 — 始終允許。透過
execute的 GET 請求,以及所有find_*/get_*/list_*工具。 - 寫入 — 透過
execute的 POST/PUT/PATCH 以及上述的始終寫入工具。當設定--read-only時被封鎖。 - 刪除 — 透過
execute的 DELETE。需要--allow-deletes,並且在設定--read-only時被封鎖。一小部分災難性刪除路徑(例如DELETE /api/spaces/{id}、DELETE /api/users/{id})和 API 金鑰端點位於一個硬性敏感拒絕清單上,該清單會忽略這兩個旗標。
# Default - write tools enabled (POST/PUT/PATCH)
npx -y @octopusdeploy/mcp-server
# Additionally permit DELETE requests through the execute tool
npx -y @octopusdeploy/mcp-server --allow-deletes
# Read-only mode - write/delete tools disabled
npx -y @octopusdeploy/mcp-server --read-only
安全性注意事項: 使用具有適當、最低權限的 API 金鑰——寫入操作可以在您的 Octopus 執行個體中建立版本並觸發部署。對於生產環境,請考慮傳遞 --read-only,除非您有特定、受控的寫入使用案例。--allow-deletes 預設為關閉;僅在代理程式必須透過 execute 發出 DELETE 請求時才啟用它。如果您同時傳遞 --allow-deletes 和 --read-only,伺服器會向 stderr 輸出啟動警告——DELETE 請求仍會被唯讀管制所封鎖。
完整範例
以下所有範例都假設已在環境中設定 OCTOPUS_API_KEY。為了清晰起見,顯示了 --server-url 旗標,但也可以透過 OCTOPUS_SERVER_URL 提供。
# Development setup with only core and project tools
npx -y @octopusdeploy/mcp-server --toolsets core,projects --server-url https://your-octopus.com
# Production setup with all tools and read-only enforcement
npx -y @octopusdeploy/mcp-server --toolsets all --read-only --server-url https://your-octopus.com
# Default invocation - all tools and writes enabled
npx -y @octopusdeploy/mcp-server --server-url https://your-octopus.com
其他命令列引數
--read-only- 啟用唯讀模式:停用所有精心設計的寫入工具,並透過execute封鎖 POST/PUT/PATCH/DELETE。寫入預設為啟用;此旗標將其關閉。請參閱唯讀模式。--allow-deletes- 允許透過execute工具發出 DELETE 請求。當設定--read-only時會被忽略(並發出啟動警告)。預設false。--log-level <level>- 最低日誌層級(info、error)--log-file <path>- 日誌檔案路徑或檔名。如果未指定,日誌僅寫入主控台-q, --quiet- 停用檔案日誌記錄,僅將錯誤記錄到主控台--list-tools-by-version- 列出所有已註冊的工具及其支援的 Octopus 伺服器版本,然後退出
🔨 工具
基於 URL 的工具
快速入門:直接貼上 Octopus URL 來調查問題,無需手動提取 ID。
get_deployment_from_url:從部署 URL 取得部署詳細資訊(返回 taskId 以供後續追蹤)get_task_from_url:從任務 URL 取得任務詳細資訊和日誌
部署調查工作流程:
1. get_deployment_from_url with deployment URL
→ Returns deployment context + taskResourceUri + grepTaskLogHint
2a. Fetch the structured activity tree via resources/read (or read_resource)
octopus://spaces/{spaceName}/tasks/{taskId}/details
2b. Or call grep_task_log with the taskId to search the raw log without
fetching the full body:
grep_task_log({ spaceName, taskId, pattern: "error|fail", caseInsensitive: true })
任務調查(直接任務 URL):
get_task_from_url with task URL
→ Returns task details and logs immediately
這些工具透過以下方式消除了手動提取 ID 的需求:
- 自動解析 URL
- 將空間 ID 解析為空間名稱
- 驗證 ID 格式
- 提供清晰的錯誤訊息
範例 URL:
- 部署:
https://your-octopus.com/app#/Spaces-1/projects/my-app/deployments/Deployments-123 - 任務:
https://your-octopus.com/app#/Spaces-1/tasks/ServerTasks-456
請參閱使用 URL 以獲取詳細的工作流程、範例和最佳實務。
核心工具
list_spaces:列出 Octopus Deploy 執行個體中的所有空間list_environments:列出給定空間中的所有環境
API 目錄與防護機制
這些工具和資源讓代理程式能夠觸及沒有專用精心設計工具的 Octopus REST 端點,並在讀取、寫入和刪除操作之間進行嚴格的伺服器端管制。
grep_llms_txt:使用 grep 風格的語意搜尋 Octopus API 目錄(octopus://api/llms.txt)(最低支援的 Octopus 版本:2026.2.3916)。目錄內文很大(通常超過 300 KB)——請呼叫此工具,而不要直接讀取資源內文。參數與 GNU grep 對應(pattern、caseInsensitive、invertMatch、fixedString、beforeContext、afterContext、maxCount)。適用於探索端點(POST /releases)、列舉刪除端點(DELETE),或尋找寫入操作的內文類型(Body: Create.*Command)。execute:結構化 REST 備用工具。可觸及/api下的任何 Octopus REST 端點。HTTP 方法是權威的讀取/寫入/刪除分類器——絕非 LLM 可以設定的isWrite旗標。方法管制在伺服器端是硬性編碼的:GET一律允許(受限於路徑形狀檢查 + 敏感拒絕清單)。- 當
--read-only設定時,POST/PUT/PATCH會被封鎖;否則需要透過詢問取得使用者確認。 DELETE需要--allow-deletes(且當--read-only設定時會被封鎖),並加上更嚴格的「不可逆」詢問訊息。- 敏感拒絕清單(API 金鑰端點、
DELETE /api/spaces/{id}、DELETE /api/users/{id})即使兩個旗標都開啟也會強制執行。 - 路徑必須是
/api或以/api/開頭——絕對 URL、SDK 相對的~/api/...路徑,以及/api以外的主機相對路徑(例如/octopus/portal/...)會預先被拒絕,因此execute會保持在 Octopus REST API 的範圍內。 - 每個工具組的路徑允許清單僅在
--toolsets被縮限時才適用。 當所有工具組都啟用時(預設值,或明確指定--toolsets all),允許清單會被繞過,且/api下的任何路徑都可以觸及,但須遵守上述的管制。當--toolsets被縮限時,允許清單會變成終止開關:只有當路徑所屬的工具組已啟用時,路徑才會解析,因此停用某個工具組(例如certificates)會使其路徑即使在GET上也無法透過execute觸及。
目錄資料也以 MCP 資源的形式公開:
octopus://api/llms.txt— 每個 Octopus REST 端點的 Markdown 目錄(HTTP 方法、路徑、查詢參數、請求/回應類型)。需要 Octopus Server2026.2.3916或更新版本。以設定的伺服器 URL 為索引鍵的 5 分鐘記憶體內快取。建議使用grep_llms_txt,而不要直接讀取內文。octopus://api/capabilities— 描述執行中工作階段的 JSON:伺服器版本、已啟用的工具組、可用的工具(及其minimumOctopusVersion),以及--read-only/--allow-deletes是否開啟。適用於代理程式探索此工作階段中可觸及的內容。
專案
list_projects:列出指定空間中的所有專案
部署
deploy_release:將發行版本部署到環境(支援租用和非租用部署)list_deployments:列出空間中的部署,可選擇性篩選
發行版本
create_release:為專案建立新的發行版本find_releases:尋找空間中的發行版本(可依 ID 取得特定發行版本,或依專案列出/篩選發行版本)
發行版本詳細資料也可以作為 MCP 資源在 octopus://spaces/{spaceName}/releases/{releaseId} 取得——透過 resources/read(或 read_resource 備用工具)擷取,以取得完整的發行版本內文,包括發行說明和選定的套件。
Runbook
find_runbooks:尋找專案中的 Runbook(可依 ID 取得特定 Runbook,或依部分名稱列出/篩選 Runbook)。每個摘要都包含已發布的快照 ID、多租用模式及環境範圍,因此呼叫者可以在執行前選擇有效的目標。run_runbook:對一個或多個環境執行 Runbook。支援租用執行(依租用名稱或租用標籤)、提示變數、引導失敗模式、排定的執行時段,以及步驟或機器的包含/排除。如果省略runbookSnapshotId,則預設為 Runbook 的已發布快照。
完整的 Runbook 內文(包括執行階段原則欄位)可作為 MCP 資源在 octopus://spaces/{spaceName}/runbooks/{runbookId} 取得。
工作
工作資料主要以 MCP 資源的形式公開。使用 resources/read(或 read_resource 備用工具)搭配下列其中一項:
octopus://spaces/{spaceName}/tasks/{taskId}— 輕量級中繼資料(狀態、時間、完成旗標)octopus://spaces/{spaceName}/tasks/{taskId}/details— 完整的 ServerTaskDetails(進度、ActivityLogs 樹狀結構等)
對於記錄搜尋,請使用 grep_task_log 工具,而不要使用 /log 資源:
grep_task_log:搜尋工作的活動記錄,無需擷取完整內文。參數與 GNU grep 對應(pattern、caseInsensitive、invertMatch、fixedString、beforeContext、afterContext、maxCount)。傳回符合的行,包含以 1 為起始索引的lineNumber、選用的前後文陣列,以及整個記錄中的totalMatches計數。
刻意沒有 /log 資源:活動記錄可能有好幾 MB,而可定址的資源會誘使呼叫者擷取整個內文,但 grep 幾乎總是正確的基本操作。
租用
find_tenants:尋找空間中的租用(可依 ID 取得特定租用,或使用篩選條件列出/搜尋租用)get_tenant_variables:依類型取得租用變數(全部、通用或專案)get_missing_tenant_variables:取得缺少值的租用變數
Kubernetes
get_kubernetes_live_status:取得專案和環境的 Kubernetes 資源即時狀態(最低支援版本:2025.3)
機器(部署目標)
find_deployment_targets:尋找空間中的部署目標(可依 ID 取得特定目標,或使用篩選條件列出/搜尋目標)
憑證
find_certificates:尋找空間中的憑證(可依 ID 取得特定憑證,或使用篩選條件列出/搜尋憑證)
帳戶
find_accounts:尋找空間中的帳戶(可依 ID 取得特定帳戶,或使用篩選條件列出/搜尋帳戶)
中斷
find_interruptions:尋找空間中待處理或歷史的中斷(手動介入、核准、引導失敗提示),可選擇性地依工作、專案、環境、相關文件、責任或待處理狀態篩選。傳回精簡摘要;請參考octopus://spaces/{spaceName}/interruptions/{interruptionId}資源以取得完整的表單定義(控制項類型、Markdown 指示、按鈕選項、已提交的 Form.Values)。
功能切換
find_feature_toggles:列出專案中的客戶功能切換。每個摘要都包含每個環境的狀態(isEnabled、rolloutPercentage、clientRolloutPercentage)以及resourceUri,因此「X 在哪裡開啟」可以從清單回應中得到解答。update_feature_toggle:調整現有的切換。範圍有限——開啟/關閉環境、變更推出百分比,或更新切換層級的說明 / 預設狀態。內部會擷取目前的切換、在記憶體中套用您的修補,並 PUT 合併後的內文,因此未提及的環境和未提及的欄位都會被保留。參照切換上尚未設定的環境的修補會被拒絕。
完整的切換內文(說明、租用、區段、最低版本)可作為 MCP 資源在 octopus://spaces/{spaceName}/projects/{projectId}/featuretoggles/{slug} 取得。推出群組內文可在 octopus://spaces/{spaceName}/projects/{projectId}/rolloutgroups/{rolloutGroupId} 定址,以供唯讀檢查。
超出範圍(請使用 Octopus UI): 建立新的功能切換、刪除切換、重新命名或重新標記、附加/卸離推出群組、租用目標、區段、最低版本篩選條件,以及推出群組 / SDK 用戶端識別碼管理。
其他工具
get_deployment_process:依 ID 取得專案或發行版本的部署流程get_variables:取得專案的所有專案變數和程式庫變數集變數(透過gitRef支援設定即程式碼專案)get_branches:取得版本控制專案的 Git 分支(最低支援版本:2021.2)get_current_user:取得目前已驗證使用者的相關資訊
🔒 安全性考量
Octopus MCP 伺服器包含讀取和寫入操作。重要的安全性考量:
讀取操作
- 可以讀取完整的部署記錄,其中可能包含未標記為機密的生產環境機密
- 存取敏感的設定資料和變數
- 連接到您不完全信任的工具和模型時請謹慎行事
寫入操作
預設情況下,可以使用下列寫入操作:
- 建立發行版本:可以為專案建立新的發行版本
- 部署發行版本:可以觸發部署到環境(包括生產環境)
- 執行 Runbook:可以對環境和租用執行 Runbook
- 更新功能切換:可以切換每個環境的狀態,並變更現有切換的推出百分比
- 透過
execute備用工具進行任意 POST/PUT/PATCH:範圍限定在/api下的路徑,並有始終開啟的敏感拒絕清單。每個工具組的路徑允許清單僅在--toolsets被縮限時才適用;當所有工具組都啟用時(預設值),唯一的路径管制是/api邊界和敏感拒絕清單。
傳遞 --read-only 以停用上述所有功能。透過 execute 的 DELETE 請求需要額外的 --allow-deletes 旗標——這是對不可逆操作的刻意選擇加入——並且在 --read-only 設定時仍會被封鎖。
關鍵安全措施:
- 最小權限:使用具有您使用案例所需最低權限的 API 金鑰
- 選擇加入唯讀模式:寫入功能預設為啟用。對於生產環境,請傳遞
--read-only,除非您有特定、受控的寫入操作使用案例。DELETE 一律需要額外的--allow-deletes選擇加入。 - 方法管制是伺服器端且硬性編碼的:傳遞給
execute的 HTTP 方法是權威的分類器。代理程式無法透過不實陳述呼叫的作用來繞過管制——POST/PUT/PATCH/DELETE 請求會獲得特定層級的管制,無論請求內文中的文字說明為何。 - 工具組篩選可兼作終止開關:縮限
--toolsets會同時從execute允許清單中移除已停用工具組的精選工具及其路徑。(允許清單僅在工具組被縮限時才會被參考;當所有工具組都啟用時,execute會改由/api形狀檢查和敏感拒絕清單來界定範圍。) - 提示注入風險:以完全自動化的方式執行代理程式可能會使您容易受到提示注入攻擊
建議:對於生產環境,請傳遞 --read-only,除非您有特定、受控的寫入操作使用案例。除非您特別需要透過 execute 的 DELETE 語意,否則請保持 --allow-deletes 關閉。
⚠️ 限制
資料分析
當前 AI 聊天工具和 MCP 協定本身的性質,使得分析大量資料變得不切實際。大多數 MCP 用戶端目前不支援鏈結工具呼叫(將一個工具的輸出用作下一個工具的輸入),而是退而求其次地逐個權杖複製結果,這經常導致幻覺。如果您希望處理來自 Octopus 執行個體的歷史資料以進行分析,我們建議直接使用 API,或編寫您自己的 MCP 用戶端,以便能夠以程式化方式處理工具呼叫結果。
效能
MCP 伺服器在技術上只是現有 Octopus Server API 之上的一個薄層。因此,它能夠擷取大量資料(例如,請求數千個部署)。此類查詢可能會對您執行個體的效能產生顯著影響。請指示您的模型僅擷取其所需的最少資料集(大多數模型在這方面開箱即用就表現得很好)。
🤝 貢獻
歡迎貢獻!:heart: 請閱讀我們的貢獻指南,了解如何參與此專案的相關資訊。
我們很期待聽到您計劃如何使用 Octopus MCP Server,以及您希望在未來版本中看到哪些功能。
請使用 Issues 提供回饋或請求新功能。
如果您是現有的 Octopus 客戶,請將使用 MCP server 時遇到的任何問題回報給我們的支援團隊。這將確保您在我們的標準支援保證範圍內獲得及時的回應。
🙋 常見問題
你們有計劃發布遠端 MCP server 嗎?
我們正在努力將 MCP server 直接整合到 Octopus Server 中。這將為我們開啟建構更複雜 MCP 工具的大門,同時也能:
- 讓 Octopus 管理員對 MCP 用戶端擁有更精細的控制
- 原生支援用於用戶端驗證的 OAuth
- 將安全掃描工具整合到 MCP 輸出中
如果您對此感興趣,請在我們的路線圖項目上表達您的興趣。
授權
本專案採用 Mozilla Public License 2.0 開源授權條款授權。