@itapi-core/mcp-powerdns
v1.1.0
Published
KR: PowerDNS 완전 제어 MCP 서버 — Zone·Record·DNSSEC·TSIG·Metadata·Autoprimary 등 36개 도구, stdio 및 HTTP(SSE) 지원. EN: Full-featured MCP server for PowerDNS — 36 tools covering Zone, Record, DNSSEC, TSIG, Metadata, Autoprimary, Cache, Statistics. Supports stdio and
Maintainers
Readme
@itapi-core/mcp-powerdns
PowerDNS Authoritative Server API를 완전히 제어하는 Model Context Protocol (MCP) 서버입니다.
Zone · Record · DNSSEC · TSIG · Metadata · Autoprimary 등 36개 도구를 제공하며, stdio 및 HTTP(SSE) 두 가지 전송 방식을 지원합니다.
기능 (Tools)
서버 관리 (6)
| 도구 | 설명 |
|------|------|
| powerdns_get_servers | 서버 목록 조회 |
| powerdns_get_server | 서버 상세 정보 조회 |
| powerdns_get_statistics | 운영 통계 조회 (쿼리 수, 캐시 히트율, 응답 시간 등) |
| powerdns_get_config | 서버 설정 전체 조회 |
| powerdns_get_config_item | 특정 설정 항목 조회 |
| powerdns_flush_cache | 도메인(또는 전체) DNS 캐시 즉시 무효화 |
Zone 관리 (11)
| 도구 | 설명 |
|------|------|
| powerdns_list_zones | Zone 전체 목록 조회 |
| powerdns_get_zone | Zone 상세 정보 및 레코드 전체 조회 |
| powerdns_get_zone_records | 특정 타입/이름으로 필터링한 레코드 조회 |
| powerdns_create_zone | Zone 생성 (Native·Primary·Secondary·Producer·Consumer 지원) |
| powerdns_update_zone | Zone 메타데이터 수정 |
| powerdns_delete_zone | Zone 삭제 |
| powerdns_export_zone | Zone을 BIND zone file 형식으로 내보내기 |
| powerdns_notify_zone | Secondary 서버에 NOTIFY 패킷 즉시 전송 |
| powerdns_axfr_retrieve | Secondary에서 Primary로부터 즉시 AXFR pull |
| powerdns_rectify_zone | DNSSEC Zone의 NSEC/NSEC3 정합성 재계산 |
| powerdns_search_data | 모든 Zone에 걸쳐 레코드·Zone명·코멘트 검색 (와일드카드 지원) |
레코드 관리 (3)
| 도구 | 설명 |
|------|------|
| powerdns_add_record | 레코드 추가 (append 모드로 기존 레코드 유지 가능) |
| powerdns_delete_record | 레코드 세트(rrset) 삭제 |
| powerdns_update_record_bulk | 여러 rrset을 한 번에 REPLACE/DELETE |
DNSSEC (5)
| 도구 | 설명 |
|------|------|
| powerdns_list_cryptokeys | Zone의 DNSSEC 키 목록 조회 |
| powerdns_get_cryptokey | 특정 키 상세 정보 (DS·DNSKEY 레코드 포함) |
| powerdns_create_cryptokey | 새 DNSSEC 키 생성 (KSK·ZSK·CSK, 알고리즘 선택) |
| powerdns_activate_cryptokey | 키 활성화/비활성화 |
| powerdns_delete_cryptokey | 키 삭제 |
Zone Metadata (3)
| 도구 | 설명 |
|------|------|
| powerdns_get_zone_metadata | Zone 메타데이터 조회 (ALLOW-AXFR-FROM·ALSO-NOTIFY 등) |
| powerdns_set_zone_metadata | Zone 메타데이터 설정 |
| powerdns_delete_zone_metadata | Zone 메타데이터 삭제 |
TSIG 키 (4)
| 도구 | 설명 |
|------|------|
| powerdns_list_tsig_keys | TSIG 키 목록 조회 |
| powerdns_get_tsig_key | 특정 TSIG 키 상세 조회 |
| powerdns_create_tsig_key | TSIG 키 생성 (자동 생성 또는 직접 입력) |
| powerdns_delete_tsig_key | TSIG 키 삭제 |
Autoprimary (3)
| 도구 | 설명 |
|------|------|
| powerdns_list_autoprimaries | Autoprimary 서버 목록 조회 |
| powerdns_create_autoprimary | Autoprimary 서버 등록 |
| powerdns_delete_autoprimary | Autoprimary 서버 삭제 |
범용 (1)
| 도구 | 설명 |
|------|------|
| powerdns_api_request | 위 도구로 지원되지 않는 PowerDNS REST API 직접 호출 |
사전 요구 사항
- Node.js 18 이상
- PowerDNS Authoritative Server (
webserver=yes,api=yes설정) - PowerDNS API Key
설치 및 설정
stdio 방식 (Claude Desktop 등)
{
"mcpServers": {
"powerdns": {
"command": "npx",
"args": ["-y", "@itapi-core/mcp-powerdns"],
"env": {
"POWERDNS_URL": "http://192.168.1.100:8081",
"POWERDNS_API_KEY": "your_api_key_here"
}
}
}
}HTTP (SSE) 모드
export POWERDNS_URL="http://192.168.1.100:8081"
export POWERDNS_API_KEY="your_api_key_here"
export PORT=3000 # 선택 (기본 3000)
export POWERDNS_TIMEOUT=10000 # 선택 (ms, 기본 10000)
export POWERDNS_HTTP_TOKEN="secret" # 선택: Bearer 토큰 인증 활성화
export RATE_LIMIT_MAX=60 # 선택 (기본 60 req/min)
export RATE_LIMIT_WINDOW_MS=60000 # 선택 (ms, 기본 60000)
npm run start:httpSSE 엔드포인트: http://localhost:3000/sse
헬스체크: http://localhost:3000/health
환경변수 전체 목록
| 변수 | 필수 | 기본값 | 설명 |
|------|------|--------|------|
| POWERDNS_URL | ✅ | — | PowerDNS API 베이스 URL |
| POWERDNS_API_KEY | ✅ | — | PowerDNS API 키 |
| POWERDNS_TIMEOUT | | 10000 | HTTP 요청 타임아웃 (ms) |
| PORT | | 3000 | HTTP 모드 포트 |
| POWERDNS_HTTP_TOKEN | | — | HTTP 모드 Bearer 토큰 인증 (미설정 시 인증 없음) |
| RATE_LIMIT_MAX | | 60 | HTTP 모드 분당 최대 요청 수 |
| RATE_LIMIT_WINDOW_MS | | 60000 | Rate limit 윈도우 (ms) |
개발
npm install
npm run build
npm run dev # ts-node로 직접 실행라이선스
ISC License
