Token导航 LogoToken导航TokenDH.com
Rusty Dns logo
运维云端未说明官方级别未说明来源级核验

Rusty Dns

MCP Server

一款基于Rust的轻量级动态DNS客户端,支持多提供商和通过模型上下文协议(MCP)与AI助手集成。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
RustClaude云端部署Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

bytemines

提供方

bytemines

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

生锈的dns

动态DNS客户端,支持人工智能助手的MCP。

一个轻量级的、基于Rust的DDNS客户端,支持多个提供者,并通过模型上下文协议(MCP)与AI助手集成。

特性

  • 多提供商支持:Cloudflare、Namecheap、DuckDNS、GoDaddy
  • MCP集成:通过Claude Code或其他AI助手进行配置和管理
  • 守护程序模式:作为后台服务运行,检查间隔可配置
  • 环境变量:通过以下方式保护机密 $VAR_NAME 语法
  • 远程管理:支持Raspberry Pi/服务器管理的SSH隧道

安装

# Build from source
cargo build --release

# Install
cp target/release/rusty-dns ~/.local/bin/

快速开始

  1. 创建配置文件:
mkdir -p ~/.config/rusty-dns
cat > ~/.config/rusty-dns/config.toml |check| PUB[Public IP Services]
        PUB -->|"ipify/icanhazip"| IP
    end

    subgraph Update
        IP -->|"changed?"| CMP{Compare}
        CMP -->|yes| PROV[Providers]
        CMP -->|no| WAIT[Wait interval]
        WAIT --> IP
    end

    subgraph Providers
        PROV --> CF[Cloudflare]
        PROV --> NC[Namecheap]
        PROV --> DD[DuckDNS]
        PROV --> GD[GoDaddy]
    end

    subgraph MCP
        MCP_S[MCP Server] -->|stdio| AI[Claude Code]
        AI -->|ddns_status| MCP_S
        AI -->|ddns_update| MCP_S
    end

CLI命令

rusty-dns status              # Show current IP and provider status
rusty-dns update              # Update DNS if IP changed
rusty-dns update --force      # Force update even if unchanged
rusty-dns daemon              # Run as daemon (default: 5 min interval)
rusty-dns daemon -i 60        # Custom interval (60 seconds)
rusty-dns mcp                 # Run MCP server over stdio
rusty-dns validate            # Validate configuration

配置

配置文件

地点: ~/.config/rusty-dns/config.toml

# Check interval (default: 300 seconds)
check_interval_secs = 300

# IP detection services (optional, has sensible defaults)
ip_services = [
    "https://api.ipify.org",
    "https://icanhazip.com",
    "https://ifconfig.me/ip",
    "https://ipecho.net/plain"
]

# Cloudflare provider
[[providers]]
type = "cloudflare"
api_token = "$CF_API_TOKEN"
zone_id = "abc123"
record_name = "vpn.example.com"
proxied = false

# Namecheap provider
[[providers]]
type = "namecheap"
domain = "example.com"
host = "vpn"
password = "$NAMECHEAP_DDNS_PASSWORD"

# DuckDNS provider
[[providers]]
type = "duckdns"
domains = "mysubdomain"
token = "$DUCKDNS_TOKEN"

# GoDaddy provider
[[providers]]
type = "godaddy"
api_key = "$GODADDY_API_KEY"
api_secret = "$GODADDY_API_SECRET"
domain = "example.com"
name = "vpn"
ttl = 600

环境变量

Secrets可以使用以下方式引用环境变量 $VAR_NAME 语法:

export CF_API_TOKEN="your-cloudflare-token"
export DUCKDNS_TOKEN="your-duckdns-token"

MCP集成

通过SSH进行远程配置

sequenceDiagram
    participant CC as Claude Code
    participant SSH as SSH Tunnel
    participant RD as rusty-dns MCP
    participant DNS as DNS Providers

    CC->>SSH: MCP request (JSON-RPC)
    SSH->>RD: Forward to rusty-dns mcp
    RD->>DNS: API calls
    DNS-->>RD: Response
    RD-->>SSH: MCP response
    SSH-->>CC: Result

在Claude代码中配置(~/.claude/mcp_servers.json):

{
  "rusty-dns": {
    "command": "ssh",
    "args": ["-t", "pi@raspberrypi", "rusty-dns", "mcp"]
  }
}

可用的MCP工具

工具说明
ddns_status获取当前IP、提供商状态、上次更新时间
ddns_update强制DNS更新(使用 force: true 即使未更改也要更新)
ddns_history获取最近更新历史记录
ddns_test_provider测试特定提供商的连接
ddns_add_provider获取添加提供程序的说明
ddns_remove_provider获取删除提供程序的说明

MCP会话示例

> Use rusty-dns to check my current IP and provider status

The rusty-dns tool shows:
- Current public IP: 203.0.113.42
- Cloudflare (vpn.example.com): 203.0.113.42 (healthy)
- DuckDNS (home.duckdns.org): 203.0.113.42 (healthy)
- Last update: 2024-01-15T10:30:00Z

> Force update all DNS records

Updated 2 providers:
- Cloudflare: OK (IP unchanged)
- DuckDNS: OK (IP unchanged)

服务安装

Linux(systemd)

# Copy service file
sudo cp systemd/rusty-dns.service /etc/systemd/system/

# Create environment file for secrets
sudo mkdir -p /etc/rusty-dns
sudo cat > /etc/rusty-dns/env << 'EOF'
CF_API_TOKEN=your-cloudflare-token
DUCKDNS_TOKEN=your-duckdns-token
EOF
sudo chmod 600 /etc/rusty-dns/env

# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable --now rusty-dns

# Check status
sudo systemctl status rusty-dns
journalctl -u rusty-dns -f

macOS(launchd)

系统范围守护进程 (以root身份运行,从启动时开始):

# Copy daemon plist
sudo cp launchd/com.rusty-dns.daemon.plist /Library/LaunchDaemons/

# Create working directory
sudo mkdir -p /var/lib/rusty-dns

# Load and start
sudo launchctl load -w /Library/LaunchDaemons/com.rusty-dns.daemon.plist

# Check status
sudo launchctl list | grep rusty-dns
tail -f /var/log/rusty-dns.log

用户代理 (以当前用户身份运行,从登录时开始):

# Copy agent plist
cp launchd/com.rusty-dns.agent.plist ~/Library/LaunchAgents/

# Load and start
launchctl load -w ~/Library/LaunchAgents/com.rusty-dns.agent.plist

# Check status
launchctl list | grep rusty-dns
tail -f /tmp/rusty-dns.log

卸载:

# System daemon
sudo launchctl unload /Library/LaunchDaemons/com.rusty-dns.daemon.plist
sudo rm /Library/LaunchDaemons/com.rusty-dns.daemon.plist

# User agent
launchctl unload ~/Library/LaunchAgents/com.rusty-dns.agent.plist
rm ~/Library/LaunchAgents/com.rusty-dns.agent.plist

提供商

云耀

使用Cloudflare API v4。要求:

  • 带有的API令牌 Zone:DNS:Edit 许可
  • 区域ID(在Cloudflare仪表板中找到)
  • 现有DNS记录名称

Namecheap:名便宜

使用Namecheap动态DNS。要求:

  • 域名已在Namecheap注册
  • 动态DNS密码(来自高级DNS设置)
  • 为主机启用动态DNS

DuckDNS

免费DDNS服务。要求:

  • DuckDNS子域名
  • DuckDNS令牌(来自DuckDNS.org)

GoDaddy

使用GoDaddy域API。要求:

  • API密钥和秘密(来自developer.godaddy.com)
  • 生产API访问(非OTE)

发展

# Build
cargo build

# Test
cargo test

# Run in development
cargo run -- status

# Build release
cargo build --release

许可证

麻省理工学院或阿帕奇-2.0

目录标签

目录标签

RustClaude云端部署动态DNS本地部署多提供商支持AI集成远程管理Rust开发

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP