Skip to main content
Glama

dynu-mcp

Dynu용 MCP 서버 — Dynamic DNS, 도메인 등록, 이메일 호스팅, 클라우드 컴퓨트(VPS) 제공업체입니다. 전체 공개 Dynu REST API v2를 MCP 도구로 노출합니다.

개요

  • 무상태(Stateless) HTTP 서비스입니다. 자격 증명이 영구 저장되지 않습니다 — 각 요청은 헤더를 통해 자체 API 키를 제공하며, 해당 단일 요청의 수명 동안에만 사용됩니다.

  • 동시 요청을 지원합니다. 요청별 자격 증명 격리는 전역/공유 클라이언트 인스턴스가 아닌 Python contextvars를 통해 수행됩니다.

  • 진입점: POST /mcp(MCP 프로토콜) 및 GET /health(헬스 체크).

  • 기본 포트: 8080(MCP_HTTP_PORT로 구성 가능).

Related MCP server: dynadot-mcp

범위

30개 도구로, Dynu의 전체 OpenAPI 3.0 스펙을 다루는 초기 117개 도구 빌드에서 축소되었습니다. 이 MCP가 뒤에서 실행되는 플랫폼은 활성화된 모든 벤더 MCP의 도구를 단일 Gemini/Vertex 모델 호출로 집계하며, 총 512개의 함수 선언으로 제한됩니다 — 50개 이상의 벤더 MCP가 등록되어 있으므로 각각은 간결하게 유지해야 합니다. 동일한 6개 카테고리에서 유지됨: dns(8 — MSPbots의 실제 GET /dns 엔드포인트 및 핵심 레코드/서비스 CRUD), email(7 — 서비스 목록/상세, 계정 생성/읽기/업데이트/삭제), compute(4 — 인스턴스 목록/상세/시작/중지), domain(2 — 목록/상세), monitor(7, 전체 카테고리), ping(2, 전체 카테고리). 완전히 제외됨: 도메인 등록 관리(glue 레코드, 네임 서버, 자동 갱신, 잠금/잠금 해제), 이메일의 블랙리스트/화이트리스트/별칭/메일링 리스트/DKIM 관리, 컴퓨트의 백업/스냅샷/VNC/재설치 작업 — 알려진 제한 사항 참조. MSPbots 자체는 1개의 엔드포인트(GET /dns)만 호출하며, 이는 유지됩니다.

인증

Dynu는 단일 정적 API 키(Dynu 제어판의 API 자격 증명 영역에서 찾을 수 있음)로 인증합니다. MSPbots의 자체 통합 규칙은 이 키를 API-Key 헤더의 원시 값으로 보내며, 이 서버는 정확히 그 방식으로 전달합니다.

HEADER 인증 매개변수 설명

Header

유형

필수 여부

기본값

열거 값

필드 설명

예시

X-Dynu-Api-Key

string

없음

없음

Dynu 정적 API 키, 상위 API-Key 요청 헤더로 그대로 전달

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

헤더가 없으면 401을 반환합니다:

{
  "error": "Missing credentials",
  "message": "This server requires the X-Dynu-Api-Key header",
  "required_headers": ["X-Dynu-Api-Key"],
  "optional_headers": []
}

환경 변수

Variable

유형

필수 여부

기본값

설명

MCP_HTTP_PORT

int

아니요

8080

HTTP 수신 포트

MCP_HTTP_HOST

string

아니요

0.0.0.0

HTTP 수신 주소

DYNU_BASE_URL

string

아니요

https://api.dynu.com/v2

Dynu API 기본 URL

MCP 엔드포인트

  • POST /mcp — MCP 프로토콜(스트리밍 가능한 HTTP 전송)

  • GET /health — 헬스 체크, {"status": "ok"} 반환(순수 로컬 활성 프로브, Dynu API에 의존하지 않음)

도구 목록

도구 이름은 벤더의 OpenAPI 스펙에 있는 각 작업의 자체 요약에서 파생됩니다(예: "Get a list of domains for DNS service" → dynu_get_list_domains_dns_service). 하나의 이름 충돌(GET /pingPOST /ping이 동일한 요약을 공유)은 _get/_post 접미사로 구분됩니다. POST 작업의 body 매개변수는 일반 dict로 허용됩니다 — 각 리소스의 정확한 필드 이름/유형은 벤더의 OpenAPI 스펙의 Models 섹션(아래 링크)을 참조하세요.

Category

Tool

기능

메서드+경로

매개변수

dns

dynu_add_new_dns_record_dns_service

DNS 서비스에 새 DNS 레코드를 추가합니다.

POST /dns/{id}/record

id(필수), body(필수,dict)

dns

dynu_add_new_dns_service

새 DNS 서비스를 추가합니다.

POST /dns

body(필수,dict)

dns

dynu_get_details_dns_record_dns_service

DNS 서비스의 DNS 레코드 세부 정보를 가져옵니다.

GET /dns/{id}/record/{dnsRecordId}

id(필수), dns_record_id(필수)

dns

dynu_get_details_domain_dns_service

DNS 서비스의 도메인 세부 정보를 가져옵니다.

GET /dns/{id}

id(필수)

dns

dynu_get_list_dns_records_dns_service

DNS 서비스의 DNS 레코드 목록을 가져옵니다.

GET /dns/{id}/record

id(필수)

dns

dynu_get_list_domains_dns_service

DNS 서비스의 도메인 목록을 가져옵니다.

GET /dns

dns

dynu_remove_dns_record_dns_service

DNS 서비스에서 DNS 레코드를 제거합니다.

DELETE /dns/{id}/record/{dnsRecordId}

id(필수), dns_record_id(필수)

dns

dynu_update_existing_dns_record_dns_service

DNS 서비스의 기존 DNS 레코드를 업데이트합니다.

POST /dns/{id}/record/{dnsRecordId}

id(필수), dns_record_id(필수), body(필수,dict)

domain

dynu_get_details_domain_registration_domain

도메인 등록 도메인의 세부 정보를 가져옵니다.

GET /domain/{id}

id(필수)

domain

dynu_get_list_domains_domain_registration_service

도메인 등록 서비스의 도메인 목록을 가져옵니다.

GET /domain

email

dynu_add_new_email_account_email_service

이메일 서비스에 새 이메일 계정을 추가합니다.

POST /email/{id}/account

id(필수), body(필수,dict)

email

dynu_get_details_email_account

이메일 계정의 세부 정보를 가져옵니다.

GET /email/{id}/account/{accountId}

id(필수), account_id(필수)

email

dynu_get_details_email_service

이메일 서비스의 세부 정보를 가져옵니다.

GET /email/{id}

id(필수)

email

dynu_get_list_email_accounts_email_service

이메일 서비스의 이메일 계정 목록을 가져옵니다.

GET /email/{id}/account

id(필수)

email

dynu_get_list_email_services

이메일 서비스 목록을 가져옵니다.

GET /email

email

dynu_remove_email_account_email_service

이메일 서비스에서 이메일 계정을 제거합니다.

DELETE /email/{id}/account/{accountId}

id(필수), account_id(필수)

email

dynu_update_existing_email_account_email_service

이메일 서비스의 기존 이메일 계정을 업데이트합니다.

POST /email/{id}/account/{accountId}

id(필수), account_id(필수), body(필수,dict)

compute

dynu_get_instance

인스턴스를 가져옵니다.

GET /compute/instance/{id}

id(필수)

compute

dynu_get_list_instances

인스턴스 목록을 가져옵니다.

GET /compute/instance

compute

dynu_start_instance

인스턴스를 시작합니다.

GET /compute/instance/{id}/start

id(필수)

compute

dynu_stop_suspend_instance

인스턴스를 중지(일시 중단)합니다.

GET /compute/instance/{id}/stop

id(필수)

monitor

dynu_add_new_monitor

새 모니터를 추가합니다.

POST /monitor

body(필수,dict)

monitor

dynu_delete_monitor

모니터를 삭제합니다.

DELETE /monitor/{id}

id(필수)

monitor

dynu_get_details_monitor

모니터의 세부 정보를 가져옵니다.

GET /monitor/{id}

id(필수)

monitor

dynu_get_list_monitors

모니터 목록을 가져옵니다.

GET /monitor

monitor

dynu_limits_associated_monitoring

모니터링과 관련된 제한 사항입니다.

GET /monitor/limit

monitor

dynu_pause_monitor

모니터를 일시 중지합니다.

GET /monitor/{id}/pause

id(필수)

monitor

dynu_unpause_monitor

모니터 일시 중지를 해제합니다.

GET /monitor/{id}/unpause

id(필수)

ping

dynu_ping_api_server_obtain_pong_response_get

API 서버에 ping을 보내 pong 응답을 얻습니다.

GET /ping

message(필수)

ping

dynu_ping_api_server_obtain_pong_response_post

API 서버에 ping을 보내 pong 응답을 얻습니다.

POST /ping

body(필수,dict)

테스트 예시

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp   -H "X-Dynu-Api-Key: <your-dynu-api-key>"   -H "Content-Type: application/json"   -H "Accept: application/json, text/event-stream"   -H "mcp-session-id: <session-id-from-initialize>"   -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "dynu_get_list_domains_dns_service",
      "arguments": {}
    }
  }'

실제 검증됨(2026-07-29): dynu_get_list_domains_dns_service(MSPbots 자체가 호출하는 동일한 엔드포인트, 매개변수 0개)가 실제 API 키로 이 실행 중인 서버를 통해 엔드투엔드로 호출되었으며 계정의 실제 DNS 도메인 레코드를 반환했습니다.

API 참조

알려진 제한 사항

  • 사용자의 명시적 결정에 따라 117개 도구에서 30개로 축소됨: 이 MCP가 뒤에서 실행되는 플랫폼은 등록된 모든 벤더 MCP의 도구를 단일 Gemini/Vertex 모델 호출로 통합하며, 이 호출은 총 512개의 함수 선언으로 제한됩니다 — 50개 이상의 벤더 MCP가 등록되어 있으므로 각각은 간결하게 유지되어야 합니다. 유지된 항목: MSPbots의 실제 GET /dns 엔드포인트, 핵심 DNS 레코드/서비스 CRUD(8), 핵심 이메일 서비스/계정 CRUD(7), 기본 컴퓨팅 인스턴스 목록/상세/시작/중지(4), 도메인 목록/상세(2), 그리고 Monitor/Ping 전체(9). 완전히 제거된 항목: 도메인 등록기관 관리(글루 레코드, 네임서버, 자동 갱신, 잠금/잠금 해제/취소), 이메일의 블랙리스트/화이트리스트/별칭/메일링 리스트/DKIM 관리, 그리고 컴퓨팅의 백업/스냅샷/VNC/재설치/비밀번호 변경 작업. 실제 사용 사례가 필요하다면 이 중 어느 것이든 요청 시 다시 추가할 수 있습니다.

  • 축소 후에도 컴퓨팅 및 도메인 쓰기 작업은 더 높은 위험도를 유지합니다dynu_start_instance/dynu_stop_suspend_instance는 실제 VPS 인스턴스에 대해 작동합니다. 이를 파괴적/되돌릴 수 없음으로 취급하고 호출 전에 사람과 확인하십시오.

  • body 매개변수는 완전히 모델링되지 않은 비유형(dict) 입니다 — OpenAPI 사양의 Models 섹션에서 리소스별 정확한 스키마를 정의하지만 (예: DNS.dnsRecordA), 이를 모두 유형화된 Python 매개변수로 재현하는 것은 범위를 벗어났습니다. 호출자는 연결된 사양에 따라 body dict를 구성해야 합니다.

  • 실제 계정 데이터로 라이브 검증된 것은 dynu_get_list_domains_dns_service (MSPbots 자체 엔드포인트)뿐입니다. 나머지 29개 도구는 구조적으로 정확하지만(스키마 검증됨, MCP 프로토콜 tools/list 확인됨, 축소 후 도구 수 재검증됨) 개별적으로 스모크 테스트되지는 않았습니다 — 그중 여러 개는 실제 DNS 레코드, 이메일 계정 또는 VPS 인스턴스를 생성, 수정 또는 삭제하는 쓰기/파괴적 작업이므로 라이브 테스트 계정에 대해 실행되지 않았습니다.

Related MCP Connectors

Related MCP Servers