본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 09:21

lanbaoshen/mcp-jenkins

요약

Anthropic의 MCP 사양을 준수하여 Jenkins와 AI 언어 모델을 연결하는 오픈 소스 구현체입니다. 데이터 프라이버시를 유지하며 Jenkins 도구와 안전하고 문맥적인 AI 상호작용을 지원합니다.

핵심 포인트

  • MCP 사양을 통한 Jenkins와 AI 모델 간의 연결 지원
  • 데이터 프라이버시 및 보안 중심의 설계
  • stdio, sse, streamable-http 등 다양한 전송 방식 지원
  • uvx를 이용한 간편한 설치 및 실행 환경 제공

Model Context Protocol (MCP)는 Anthropic의 MCP 사양을 따라 Jenkins와 AI 언어 모델을 연결하는 오픈 소스 구현체입니다. 이 프로젝트는 데이터 프라이버시와 보안을 유지하면서 Jenkins 도구와 안전하고 문맥적인(contextual) AI 상호작용을 가능하게 합니다.

다음 설치 방법 중 하나를 선택하세요:

# uv 사용 (권장)
pip install uv
uvx mcp-jenkins
...

명령줄 인수(command line arguments)를 사용할 때, 다음과 같이 Jenkins 서버 세부 정보를 지정할 수 있습니다:

# 간단한 streamable-http 예시
uvx mcp-jenkins --transport streamable-http
인수 (Argument)설명 (Description)필수 여부 (Required)
--jenkins-urlJenkins 서버의 URL. (Http 앱은 헤더 x-jenkins-url을 통해 설정 가능)아니오
--jenkins-usernameJenkins 인증을 위한 사용자 이름. (Http 앱은 헤더 x-jenkins-username을 통해 설정 가능)아니오
--jenkins-passwordJenkins 인증을 위한 비밀번호 또는 API 토큰. (Http 앱은 헤더 x-jenkins-password를 통해 설정 가능)아니오
--jenkins-timeoutJenkins API 요청에 대한 타임아웃(초 단위). 기본값은 5초입니다.아니오
--jenkins-verify-ssl/--no-jenkins-verify-sslJenkins에 연결할 때 SSL 인증서를 검증할지 여부. 기본값은 검증함입니다.아니오
--jenkins-session-singleton/--no-jenkins-session-singleton동일한 세션 내의 모든 요청에 대해 싱글톤(singleton) Jenkins 클라이언트를 사용할지 여부. 기본값은 True입니다.아니오
--read-only읽기 전용(read-only) 모드를 활성화할지 여부. 기본값은 False입니다.아니오
--transport통신에 사용할 전송(transport) 방식. 옵션은 stdio, sse 또는 streamable-http입니다. 기본값은 stdio입니다.아니오
--hoststreamable-http 전송을 위한 호스트 주소. 기본값은 0.0.0.0입니다.아니오
--portstreamable-http 전송을 위한 포트 번호. 기본값은 9887입니다.아니오
  • Jetbrains 설정 열기
  • Github Copilot > MCP > Configure로 이동
  • 다음 구성을 추가합니다:
{
"servers": {
"my-mcp-server": {
...
  • mcp.json이 포함된 .vscode 폴더를 생성합니다.

로컬 설정을 위해 워크스페이스에 파일을 생성하거나, 설정 메뉴를 통해 settings.json을 편집합니다.

  • SSE 모드
{
"servers": {
"jenkins": {
...
  • Streamable-Http 모드
{
"servers": {
"mcp-jenkins-mcp": {
...

다음 명령어를 사용하여 Jenkins MCP 서버를 실행합니다:

uvx mcp-jenkins \
--jenkins-url xxx \
--jenkins-username xxx \
...

--transport streamable-http 또는 --transport sse로 실행할 때, 서버는 다음과 같은 일반 HTTP 생존 확인 (liveness) 엔드포인트를 노출합니다:

GET /healthz -> 200 OK

이 엔드포인트는 항상 200을 반환하며 x-jenkins-* 인증 헤더를 우회하므로, Jenkins 자격 증명 없이 Kubernetes의 생존 확인 (liveness) / 준비 상태 (readiness) 프로브 (probe)로 직접 안전하게 사용할 수 있습니다. 프로브 예시:

livenessProbe:
httpGet:
path: /healthz
...

참고: 이는 생존 확인 (liveness) 체크일 뿐이며, 상위 Jenkins 서버와의 연결성을 검증하지는 않습니다.

도구 (Tool)설명
get_item이름으로 특정 아이템 (item)을 가져옵니다.
get_item_config특정 아이템의 설정을 가져옵니다.
get_item_parameters특정 아이템의 파라미터 (parameters)를 가져옵니다.
get_all_itemsJenkins의 모든 아이템을 가져옵니다.
query_items패턴을 기반으로 아이템을 쿼리 (query) 합니다.
build_item아이템을 빌드 (build) 합니다.
get_all_nodesJenkins의 모든 노드 (nodes)를 가져옵니다.
get_node이름으로 특정 노드를 가져옵니다.
get_node_config특정 노드의 설정을 가져옵니다.
get_all_queue_itemsJenkins의 모든 큐 (queue) 아이템을 가져옵니다.
get_queue_itemID로 특정 큐 아이템을 가져옵니다.
cancel_queue_itemID로 특정 큐 아이템을 취소합니다.
get_build작업 (job) 이름과 빌드 번호로 특정 빌드를 가져옵니다.
get_build_scripts특정 빌드와 관련된 스크립트를 가져옵니다.
get_build_console_output특정 빌드의 콘솔 출력 (console output)을 가져옵니다.
get_build_parameters특정 빌드의 파라미터를 가져옵니다.
get_build_test_report특정 빌드의 테스트 보고서를 가져옵니다.
get_running_buildsJenkins에서 현재 실행 중인 모든 빌드를 가져옵니다.

| stop_build | 작업 이름(job name)과 빌드 번호(build number)를 사용하여 특정 빌드를 중단합니다. |
| get_all_build_artifacts | 특정 빌드의 아티팩트 (artifacts) 목록을 나열합니다. |
| get_build_artifact | 특정 빌드로부터 아티팩트 (artifact)를 다운로드합니다. |
| get_build_artifact_url | 특정 빌드의 아티팩트 (artifact)에 대한 직접 URL을 가져옵니다. |
| get_view | 이름으로 특정 뷰 (view)를 가져옵니다. |
| get_all_views | 특정 뷰 (view)의 설정을 가져옵니다. |
| get_all_plugins | 설치된 모든 플러그인 (plugins)을 가져옵니다. |
| get_plugin | 짧은 이름 (short name)으로 특정 플러그인 (plugin)을 가져옵니다. |
| get_plugins_with_problems | 문제가 있는 플러그인 (plugins)을 가져옵니다 (누락된 의존성, 버전 불일치 등). |
| get_plugins_with_backup | 다운그레이드가 가능한 플러그인 (plugins)을 가져옵니다. |
| get_plugins_with_updates | 업데이트가 가능한 플러그인 (plugins)을 가져옵니다. |
| get_plugin_dependency_graph | Graphviz 형식으로 플러그인 (plugin)의 의존성 그래프 (dependency graph)를 가져옵니다. |
| run_groovy_script | Jenkins에서 임의의 Groovy 스크립트 (script)를 실행합니다. |

MIT 라이선스 하에 배포됩니다 - LICENSE 파일을 참조하세요. 이것은 공식 Jenkins 제품이 아닙니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0