dynu-mcp
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 | 유형 | 필수 여부 | 기본값 | 열거 값 | 필드 설명 | 예시 |
| string | 예 | 없음 | 없음 | Dynu 정적 API 키, 상위 |
|
헤더가 없으면 401을 반환합니다:
{
"error": "Missing credentials",
"message": "This server requires the X-Dynu-Api-Key header",
"required_headers": ["X-Dynu-Api-Key"],
"optional_headers": []
}환경 변수
Variable | 유형 | 필수 여부 | 기본값 | 설명 |
| int | 아니요 |
| HTTP 수신 포트 |
| string | 아니요 |
| HTTP 수신 주소 |
| string | 아니요 |
| 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 /ping과 POST /ping이 동일한 요약을 공유)은 _get/_post 접미사로 구분됩니다. POST 작업의 body 매개변수는 일반 dict로 허용됩니다 — 각 리소스의 정확한 필드 이름/유형은 벤더의 OpenAPI 스펙의 Models 섹션(아래 링크)을 참조하세요.
Category | Tool | 기능 | 메서드+경로 | 매개변수 |
dns |
| DNS 서비스에 새 DNS 레코드를 추가합니다. | POST /dns/{id}/record | id(필수), body(필수,dict) |
dns |
| 새 DNS 서비스를 추가합니다. | POST /dns | body(필수,dict) |
dns |
| DNS 서비스의 DNS 레코드 세부 정보를 가져옵니다. | GET /dns/{id}/record/{dnsRecordId} | id(필수), dns_record_id(필수) |
dns |
| DNS 서비스의 도메인 세부 정보를 가져옵니다. | GET /dns/{id} | id(필수) |
dns |
| DNS 서비스의 DNS 레코드 목록을 가져옵니다. | GET /dns/{id}/record | id(필수) |
dns |
| DNS 서비스의 도메인 목록을 가져옵니다. | GET /dns | |
dns |
| DNS 서비스에서 DNS 레코드를 제거합니다. | DELETE /dns/{id}/record/{dnsRecordId} | id(필수), dns_record_id(필수) |
dns |
| DNS 서비스의 기존 DNS 레코드를 업데이트합니다. | POST /dns/{id}/record/{dnsRecordId} | id(필수), dns_record_id(필수), body(필수,dict) |
domain |
| 도메인 등록 도메인의 세부 정보를 가져옵니다. | GET /domain/{id} | id(필수) |
domain |
| 도메인 등록 서비스의 도메인 목록을 가져옵니다. | GET /domain | |
| 이메일 서비스에 새 이메일 계정을 추가합니다. | POST /email/{id}/account | id(필수), body(필수,dict) | |
| 이메일 계정의 세부 정보를 가져옵니다. | GET /email/{id}/account/{accountId} | id(필수), account_id(필수) | |
| 이메일 서비스의 세부 정보를 가져옵니다. | GET /email/{id} | id(필수) | |
| 이메일 서비스의 이메일 계정 목록을 가져옵니다. | GET /email/{id}/account | id(필수) | |
| 이메일 서비스 목록을 가져옵니다. | GET /email | ||
| 이메일 서비스에서 이메일 계정을 제거합니다. | DELETE /email/{id}/account/{accountId} | id(필수), account_id(필수) | |
| 이메일 서비스의 기존 이메일 계정을 업데이트합니다. | POST /email/{id}/account/{accountId} | id(필수), account_id(필수), body(필수,dict) | |
compute |
| 인스턴스를 가져옵니다. | GET /compute/instance/{id} | id(필수) |
compute |
| 인스턴스 목록을 가져옵니다. | GET /compute/instance | |
compute |
| 인스턴스를 시작합니다. | GET /compute/instance/{id}/start | id(필수) |
compute |
| 인스턴스를 중지(일시 중단)합니다. | GET /compute/instance/{id}/stop | id(필수) |
monitor |
| 새 모니터를 추가합니다. | POST /monitor | body(필수,dict) |
monitor |
| 모니터를 삭제합니다. | DELETE /monitor/{id} | id(필수) |
monitor |
| 모니터의 세부 정보를 가져옵니다. | GET /monitor/{id} | id(필수) |
monitor |
| 모니터 목록을 가져옵니다. | GET /monitor | |
monitor |
| 모니터링과 관련된 제한 사항입니다. | GET /monitor/limit | |
monitor |
| 모니터를 일시 중지합니다. | GET /monitor/{id}/pause | id(필수) |
monitor |
| 모니터 일시 중지를 해제합니다. | GET /monitor/{id}/unpause | id(필수) |
ping |
| API 서버에 ping을 보내 pong 응답을 얻습니다. | GET /ping | message(필수) |
ping |
| 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 참조
공식 OpenAPI 3.0 스펙(Swagger): https://www.dynu.com/files/dynu.api/Dynu.API.OAS.zip
알려진 제한 사항
사용자의 명시적 결정에 따라 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 매개변수로 재현하는 것은 범위를 벗어났습니다. 호출자는 연결된 사양에 따라bodydict를 구성해야 합니다.실제 계정 데이터로 라이브 검증된 것은
dynu_get_list_domains_dns_service(MSPbots 자체 엔드포인트)뿐입니다. 나머지 29개 도구는 구조적으로 정확하지만(스키마 검증됨, MCP 프로토콜tools/list확인됨, 축소 후 도구 수 재검증됨) 개별적으로 스모크 테스트되지는 않았습니다 — 그중 여러 개는 실제 DNS 레코드, 이메일 계정 또는 VPS 인스턴스를 생성, 수정 또는 삭제하는 쓰기/파괴적 작업이므로 라이브 테스트 계정에 대해 실행되지 않았습니다.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
135 MCP tools: geo, email, phone, company, DNS, FX, equities, weather, tax, econ, intel — one key.
49 developer tools via MCP: DNS, WHOIS, IP lookup, JWT, hashing, QR, and more.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more6736 npm1MIT
- FlicenseCqualityCmaintenanceMCP server for Dynadot API to manage domains, DNS, contacts, nameservers, folders, and aftermarket.1001-
- AlicenseNot gradedqualityDmaintenanceEnables DNS record CRUD operations (list, get, create, update, delete) through MCP tools, provider-agnostic and secure.MIT
- FlicenseNot gradedqualityDmaintenanceEnables managing Cloudflare domains, DNS records, SSL certificates, zone operations, analytics, and cache purging via MCP or CLI.5 npm-