Octopus Deploy Official MCP Server
공식Octopus MCP 서버는 AI 어시스턴트가 Octopus 인스턴스 내에서 문제를 검사, 조회 및 진단할 수 있는 강력한 도구를 제공하여 궁극의 DevOps 파트너로 변환합니다.
문서
Octopus Deploy 공식 MCP 서버
Octopus는 Kubernetes, 멀티 클라우드, 온프레미스 인프라 등 어디에나 소프트웨어를 쉽게 배포할 수 있게 해줍니다. 다른 어떤 도구로도 따라올 수 없는 규모의 CD를 처리할 수 있는 도구로 소프트웨어 및 AI 워크로드의 릴리스, 배포, 운영을 자동화하세요.
모델 컨텍스트 프로토콜(MCP)을 사용하면 Claude Code나 ChatGPT와 같이 일상 업무에서 사용하는 AI 어시스턴트가 표준화된 방식으로 사용자가 소유한 시스템 및 서비스에 연결하여, 해당 시스템과 서비스에서 정보를 가져와 질문에 답하고 작업을 수행할 수 있습니다.
Octopus MCP 서버는 AI 어시스턴트에게 Octopus 인스턴스 내 문제를 검사, 조회, 진단할 수 있는 강력한 도구를 제공하여, AI 어시스턴트를 궁극의 DevOps 동료로 변모시킵니다. 지원되는 사용 사례 및 샘플 프롬프트 목록은 문서를 참조하세요.
Octopus 서버 호환성
MCP 서버가 노출하는 대부분의 도구는 최소 Octopus 서버 버전 2021.1부터 사용 가능한 안정적인 API를 사용합니다. 최신 도구는 문서에 지원되는 최소 버전이 명시되어 있습니다. 또는 명령줄 인수 --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
- MCP 서버가 HTTPS를 통해 접근할 수 있는 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
액세스 토큰 / 베어러 토큰 (자동화 시나리오 전용)
서버는 API 키의 대안으로 수명이 짧은 액세스 토큰(베어러 토큰)도 지원합니다. 이 인증 방법은 외부 시스템이 MCP 서버에 수명이 짧은 토큰을 발급하는 자동화 시나리오 전용(예: CI/CD 파이프라인, 자동화된 오케스트레이션 또는 머신 간 워크플로)입니다. 수명이 긴 베어러 토큰은 사용하지 마십시오. 대화형 또는 장기 실행 세션에는 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- 하나 이상의 환경(및 선택적 테넌트)에 대해 Runbook 실행update_feature_toggle- 기존 기능 토글의 환경별 상태 및 롤아웃 비율 조정
조건부 쓰기 도구: execute는 전달된 HTTP 메서드에 따라 계층(읽기/쓰기/삭제)이 결정되는 구조화된 REST 백스톱입니다. 자세한 내용은 API 카탈로그 및 백스톱 섹션을 참조하세요.
쓰기 도구는 MCP 유도 프롬프트에 의해 제어됩니다. 유도를 지원하는 클라이언트는 호출이 진행되기 전에 확인을 요청받습니다. 유도 지원이 없는 클라이언트는 도구 인수에 confirm: true을 전달해야 하며, 그렇지 않으면 도구가 오류와 함께 중단됩니다. OCTOPUS_SKIP_ELICITATION=true를 설정하면 게이트를 완전히 우회합니다(무인 자동화용).
서버는 HTTP 메서드를 기반으로 서버 측에서 적용되는 3계층 읽기/쓰기/삭제 분류를 사용합니다(에이전트가 의도를 속여 이를 우회할 수 없음).
- read — 항상 허용됩니다.
execute를 통한 GET 요청 및 모든find_*/get_*/list_*도구. - write —
execute를 통한 POST/PUT/PATCH 및 위의 항상 쓰기 도구.--read-only이 설정된 경우 차단됩니다. - delete —
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 기반 도구
빠른 시작: 수동 ID 추출 없이 Octopus URL을 직접 붙여넣어 문제를 조사합니다.
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: Octopus API 카탈로그(octopus://api/llms.txt)를 grep 스타일 의미 체계로 검색합니다(지원되는 최소 Octopus 버전:2026.2.3916). 카탈로그 본문은 크기가 크므로(일반적으로 300KB 이상) 리소스 본문을 직접 읽는 대신 이 도구를 호출하세요. 매개변수는 GNU grep을 반영합니다(pattern,caseInsensitive,invertMatch,fixedString,beforeContext,afterContext,maxCount). 엔드포인트 검색(POST /releases), 삭제 엔드포인트 열거(DELETE), 또는 쓰기 작업의 본문 유형 찾기(Body: Create.*Command)에 유용합니다.execute: 구조화된 REST 백스톱입니다./api아래의 모든 Octopus REST 엔드포인트에 접근합니다. HTTP 메서드는 권한 있는 읽기/쓰기/삭제 분류 기준이며, LLM이 설정할 수 있는isWrite플래그가 아닙니다. 메서드 게이팅은 서버 측에서 하드코딩됩니다:GET은 항상 허용됩니다(경로 형태 검사 + 민감 정보 차단 목록에 따름).POST/PUT/PATCH는--read-only이 설정된 경우 차단되며, 그렇지 않으면 확인 요청을 통한 사용자 확인이 필요합니다.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 엔드포인트(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로 특정 릴리스를 가져오거나 프로젝트별로 릴리스를 나열/필터링 가능)
릴리스 세부 정보는 octopus://spaces/{spaceName}/releases/{releaseId}에서 MCP 리소스로도 제공됩니다. resources/read(또는 read_resource 백스톱 도구)를 통해 가져와 릴리스 노트 및 선택된 패키지를 포함한 전체 릴리스 본문을 확인할 수 있습니다.
Runbook
find_runbooks: 프로젝트에서 Runbook 찾기(ID로 특정 Runbook을 가져오거나 부분 이름으로 Runbook을 나열/필터링 가능). 각 요약에는 게시된 스냅샷 ID, 다중 테넌시 모드, 환경 범위가 포함되어 호출자가 실행 전에 유효한 대상을 선택할 수 있습니다.run_runbook: 하나 이상의 환경에 대해 Runbook 실행. 테넌트 실행(테넌트 이름 또는 테넌트 태그별), 프롬프트 변수, 안내 실패 모드, 예약된 실행 기간, 단계 또는 머신 포함/제외를 지원합니다.runbookSnapshotId이 생략되면 Runbook의 게시된 스냅샷이 기본값으로 사용됩니다.
전체 Runbook 본문(런타임 정책 필드 포함)은 octopus://spaces/{spaceName}/runbooks/{runbookId}에서 MCP 리소스로 제공됩니다.
작업
작업 데이터는 주로 MCP 리소스로 노출됩니다. resources/read(또는 read_resource 백스톱 도구)을 다음 중 하나와 함께 사용하세요:
octopus://spaces/{spaceName}/tasks/{taskId}— 경량 메타데이터(상태, 타이밍, 완료 플래그)octopus://spaces/{spaceName}/tasks/{taskId}/details— 전체 ServerTaskDetails(진행률, ActivityLogs 트리 등)
로그 검색에는 /log 리소스 대신 grep_task_log 도구를 사용하세요:
grep_task_log: 전체 본문을 가져오지 않고 작업의 활동 로그를 검색합니다. 매개변수는 GNU grep을 반영합니다(pattern,caseInsensitive,invertMatch,fixedString,beforeContext,afterContext,maxCount). 1-인덱스lineNumber, 선택적 이전/이후 컨텍스트 배열, 전체 로그에 대한totalMatches개수와 함께 일치하는 줄을 반환합니다.
의도적으로 /log 리소스는 없습니다. 활동 로그는 수 메가바이트에 달할 수 있으며, 주소 지정 가능한 리소스는 호출자가 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: 스페이스에서 보류 중이거나 기록된 중단(수동 개입, 승인, 안내 실패 프롬프트)을 찾습니다. 작업, 프로젝트, 환경, 관련 문서, 책임 또는 보류 상태별로 선택적 필터링이 가능합니다. 슬림 요약을 반환하며, 전체 Form 정의(컨트롤 유형, 마크다운 지침, 버튼 옵션, 제출된 Form.Values)를 보려면octopus://spaces/{spaceName}/interruptions/{interruptionId}리소스를 역참조하세요.
기능 토글
find_feature_toggles: 프로젝트의 고객 기능 토글을 나열합니다. 각 요약에는 환경별 상태(isEnabled,rolloutPercentage,clientRolloutPercentage)와resourceUri이 포함되어 있어 "X가 어디에서 켜져 있는지"를 목록 응답에서 확인할 수 있습니다.update_feature_toggle: 기존 토글을 조정합니다. 좁은 범위 — 환경을 켜거나 끄거나, 롤아웃 비율을 변경하거나, 토글 수준 설명/기본 상태를 업데이트합니다. 내부적으로 현재 토글을 가져와 메모리 내에서 패치를 적용하고 병합된 본문을 PUT하므로, 언급되지 않은 환경과 언급되지 않은 필드는 보존됩니다. 토글에 아직 구성되지 않은 환경을 참조하는 패치는 거부됩니다.
전체 토글 본문(설명, 테넌트, 세그먼트, 최소 버전)은 octopus://spaces/{spaceName}/projects/{projectId}/featuretoggles/{slug}에서 MCP 리소스로 제공됩니다. 롤아웃 그룹 본문은 읽기 전용 검사를 위해 octopus://spaces/{spaceName}/projects/{projectId}/rolloutgroups/{rolloutGroupId}에서 주소 지정이 가능합니다.
범위 밖(Octopus UI 사용): 새 기능 토글 생성, 토글 삭제, 이름 변경 또는 재태깅, 롤아웃 그룹 연결/분리, 테넌트 타겟팅, 세그먼트, 최소 버전 필터, 롤아웃 그룹/SDK 클라이언트 식별자 관리.
추가 도구
get_deployment_process: 프로젝트 또는 릴리스의 배포 프로세스를 ID로 가져오기get_variables: 프로젝트의 모든 프로젝트 변수 및 라이브러리 변수 세트 변수 가져오기(gitRef를 통해 config-as-code 프로젝트 지원)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 서버를 어떻게 사용할 계획인지, 그리고 향후 버전에 어떤 기능이 포함되기를 원하는지 듣고 싶습니다.
피드백을 제공하거나 기능을 요청하려면 이슈를 이용해 주세요.
현재 Octopus 고객이시라면, MCP 서버 사용 중 겪는 모든 문제를 지원팀에 보고해 주세요. 이를 통해 표준 지원 보장 범위 내에서 신속한 응답을 받으실 수 있습니다.
🙋 FAQ
원격 MCP 서버를 출시할 계획이 있나요?
Octopus Server에 MCP 서버를 직접 통합하는 작업을 진행 중입니다. 이를 통해 더 복잡한 MCP 도구를 구축할 수 있을 뿐만 아니라 다음과 같은 이점도 제공할 수 있습니다.
- Octopus 관리자에게 MCP 클라이언트에 대한 더 세분화된 제어 권한 부여
- 클라이언트 인증을 위한 OAuth 기본 지원
- MCP 출력에 보안 스캐닝 도구 통합
이에 관심이 있으시다면, 로드맵 항목에 관심을 등록해 주세요.
라이선스
이 프로젝트는 Mozilla Public License 2.0 오픈 소스 라이선스 조건에 따라 라이선스가 부여됩니다.