DHI MCP 서버 사용하기
DHI MCP 서버 사용하기
Docker Hardened Images(DHI) 카탈로그를 Model Context Protocol(MCP)로 노출하는 DHI MCP 서버의 연결 방법과 제공 도구들을 알아봐요.
출처: 문서
본문
Docker Hardened Images(DHI) MCP 서버는 Model Context Protocol(MCP)을 통해 DHI 카탈로그를 노출해서, AI 어시스턴트에서 평이한 언어로 저장소를 조회하고, 이미지 메타데이터를 검사하며, SBOM을 가져오고, CVE를 확인할 수 있게 해줘요.
MCP 서버는:
- 원격(Remote) 방식이에요. 설치할 로컬 바이너리가 없어요. AI 어시스턴트가
https://dhi.io/mcp에 직접 연결해요. - Claude, Cursor 등 어떤 MCP 지원 AI 어시스턴트와도 호환돼요.
대부분의 도구는 공개이며 자격 증명이 필요 없어요. 미러 관리 도구(dhi_list_mirrors, dhi_create_mirror, dhi_remove_mirror)는 대상 조직에 대한 owner 접근 권한이 있는 Docker Hub 사용자 이름과 개인 액세스 토큰(PAT)이 필요해요. 자격 증명은 MCP 클라이언트 구성의 HTTP Basic auth 헤더로 전달되며, 도구 인자로는 절대 전달되지 않아요.
AI 어시스턴트 연결하기
구성은 클라이언트마다 달라요. AI 어시스턴트에 맞는 탭을 선택해요.
Claude Desktop
Claude Desktop 구성 파일에 다음을 추가해요.
{
"mcpServers": {
"dhi": {
"url": "https://dhi.io/mcp"
}
}
}
구성 파일 위치는 다음과 같아요.
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
프로젝트의 .cursor/mcp.json 또는 전역 ~/.cursor/mcp.json에 다음을 추가해요.
{
"mcpServers": {
"dhi": {
"url": "https://dhi.io/mcp"
}
}
}
Claude Code
다음 명령을 실행해 DHI MCP 서버를 추가해요.
$ claude mcp add dhi --url https://dhi.io/mcp
또는 프로젝트의 .claude/mcp.json에 수동으로 추가해요.
{
"mcpServers": {
"dhi": {
"url": "https://dhi.io/mcp"
}
}
}
Docker Agent
Docker Agent YAML 구성에서 DHI MCP 서버를 원격 툴셋으로 추가해요.
toolsets:
- type: mcp
remote:
url: "https://dhi.io/mcp"
transport_type: streamable
예를 들어 DHI 카탈로그에 대한 질문에 답할 수 있는 에이전트를 만들려면:
agents:
root:
model: anthropic/claude-sonnet-4-5
description: DHI catalog assistant
instruction: |
Help me find and evaluate Docker Hardened Images.
Search the DHI catalog, inspect image details, check CVEs,
and retrieve SBOMs and attestations as needed.
toolsets:
- type: mcp
remote:
url: "https://dhi.io/mcp"
transport_type: streamable
에이전트를 실행하려면:
$ docker agent run dhi-agent.yaml
사용 가능한 도구(Available tools)
DHI MCP 서버는 요청 내용에 따라 AI 어시스턴트가 자동으로 호출하는 열 가지 도구를 제공해요.
| 도구 | 기능 |
|---|---|
dhi_list_repositories |
이름, 유형, 카테고리, FIPS, STIG 컴플라이언스로 DHI 카탈로그 검색·필터링 |
dhi_get_repository |
태그 정의, 빌드 구성, 플랫폼, 매니페스트별 취약점 수를 포함한 저장소의 전체 세부 정보 가져오기 |
dhi_get_tag_definition |
단일 태그 정의의 심층 뷰 가져오기 |
dhi_get_image_details |
태그, 플랫폼, 크기, 레이어·패키지 수, 취약점 심각도 수, attestation 유형을 포함한 digest별 세부 정보 가져오기 |
dhi_get_image_packages |
전체 소프트웨어 자재명세서(SBOM) 가져오기: 패키지 이름, 버전, 유형, purl, 라이선스, 파일 위치 |
dhi_get_image_cves |
심각도, CVSS 점수, 수정 버전, EPSS 점수, CISA 익스플로잇 플래그와 함께 CVE 나열; 최소 심각도나 수정 가능 항목만으로 필터링 |
dhi_get_image_attestations |
특정 이미지 digest의 SBOM, provenance, 서명 등 attestation 나열 |
dhi_list_mirrors |
Docker Hub 조직의 미러링된 DHI 저장소 나열 — 인증 필요 |
dhi_create_mirror |
Docker Hub 조직으로 DHI 저장소 미러링 시작 — 인증 필요 |
dhi_remove_mirror |
미러 ID로 저장소 미러링 중지 — 인증 필요 |
미러 도구용 인증(Authenticate for mirror tools)
미러 도구는 대상 조직에 대한 owner 접근 권한이 있는 Docker Hub 사용자 이름과 개인 액세스 토큰(PAT)을 HTTP Basic auth 헤더로 전달해야 해요. 다음으로 값을 생성해요.
$ printf 'USERNAME:dckr_pat_...' | base64 | tr -d '\n'
그런 다음 MCP 클라이언트 구성에 추가해요.
[!WARNING] Base64 인코딩은 암호화가 아니에요. 구성 파일의 값은 사실상 평문 비밀번호예요. 이 파일을 버전 관리에 커밋하거나 공유하지 마세요.
{
"mcpServers": {
"dhi": {
"url": "https://dhi.io/mcp",
"headers": {
"Authorization": "Basic <base64-value>"
}
}
}
}
자격 증명이 없으면 읽기 전용 카탈로그 도구는 정상 작동하고, 미러 도구는 인증 오류를 반환해요.
도구가 반환하는 것(What the tools return)
각 도구는 AI 어시스턴트가 요약·비교·활용할 수 있는 구조화된 데이터를 반환해요.
dhi_list_repositories는 표시 이름, 배포판, 플랫폼, FIPS/STIG 플래그, 포함된 도구, 카테고리가 있는 저장소 목록을 반환해요.dhi_get_repository는 모든 태그 정의(태그, 빌드 구성, 이미지 인덱스, 플랫폼별 매니페스트 digest와 취약점 수 포함)를 포함한 전체 저장소 레코드를 반환해요.dhi_get_tag_definition은 단일 태그 정의의 태그, 빌드 파라미터, 엔트리포인트, 환경 변수, 실행 사용자, 플랫폼별 매니페스트를 반환해요.dhi_get_image_details는 이미지 플랫폼, 압축 크기, 레이어 수, 패키지 수, 수준별 취약점 심각도 수, 레이블, attestation predicate 유형 목록을 반환해요.dhi_get_image_packages는 이미지의 각 패키지를 이름, 버전, 유형(deb,rpm,apk등), purl, 라이선스, 발견된 파일 경로와 함께 반환해요.dhi_get_image_cves는 이미지에 영향을 주는 각 CVE를 심각도, CVSS 점수와 벡터, 영향받은 패키지, 수정 버전(있는 경우), EPSS 확률 점수, CISA가 적극적으로 익스플로잇된다고 표시하는지 여부와 함께 반환해요.dhi_get_image_attestations는 이미지 digest에 첨부된 각 attestation의 predicate 유형과 OCI 참조를 반환해요.dhi_list_mirrors는 주어진 조직의 각 미러 ID, 소스 DHI 저장소, 대상 저장소, 미러링 상태를 반환해요.dhi_create_mirror는 DHI 소스 저장소를 지정된 조직과 대상 저장소 이름으로 미러링을 시작해요.dhi_remove_mirror는 주어진 미러 ID의 미러링을 중지해요. 대상 저장소를 삭제하지는 않고, 새 이미지가 동기화되는 것만 중지해요.