NS1 MCP by usefulapi

Read NS1 zones, records, monitors, data feeds and usage; create or update one DNS record.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
79%
命名の品質
80%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~3,773トークン数(ツール定義)
~1.2 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.95%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "ns1": {
      "url": "https://ns1.usefulapi.io/mcp"
    }
  }
}

リモートエンドポイント

https://ns1.usefulapi.io/mcpstreamable-http

できること

ツール一覧

ツール(18)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢ns1_list_zones(limit, after, offset)

List the DNS zones in the account: name, id, TTL/SOA settings, primary/secondary setup, linked zones and tags. If next_page is not null, call again with its after/offset to get more. GET /v1/zones.

入力スキーマ

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum items per page, 1-1000. Omit for NS1's default page size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "after": {
      "description": "Continue after this item: pass next_page.after from the previous reply.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "offset": {
      "description": "Skip this many items: pass next_page.offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_zone(zone, limit, after, offset)

One zone with its settings and its record list (each record: domain, type, TTL, short answers, linked/tier info). Large zones are paged: if next_page is not null, call again with its after/offset to get the next records. TSIG secrets are redacted. GET /v1/zones/{zone}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "limit": {
      "description": "Maximum items per page, 1-1000. Omit for NS1's default page size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "after": {
      "description": "Continue after this item: pass next_page.after from the previous reply.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "offset": {
      "description": "Skip this many items: pass next_page.offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "required": [
    "zone"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_record(zone, domain, type)

One DNS record by zone, domain and type: TTL, answers (with per-answer metadata), filter chain (traffic steering), linked record and region settings. GET /v1/zones/{zone}/{domain}/{type}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "domain": {
      "description": "Full record name inside the zone, e.g. www.example.com (or the zone name itself for the apex).",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "type": {
      "type": "string",
      "pattern": "^[A-Z0-9]{1,12}$",
      "description": "Record type, e.g. A, AAAA, CNAME, MX, TXT."
    }
  },
  "required": [
    "zone",
    "domain",
    "type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_search(query, type, expand, max)

Search the account's zones and records by name (substring match). Returns matching zones and/or records with their answers when expand is true. GET /v1/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 500,
      "description": "Text to look for in zone and record names (at least 2 characters)."
    },
    "type": {
      "description": "What to search (default all).",
      "type": "string",
      "enum": [
        "all",
        "zone",
        "record"
      ]
    },
    "expand": {
      "description": "Include full record details (default true).",
      "type": "boolean"
    },
    "max": {
      "description": "Maximum results, 1-1000.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_list_monitoring_jobs

List the account's NS1 monitoring jobs (health checks that feed traffic steering): id, name, type, regions, frequency, rules, current status, active flag and notify list id. Request header values and credentials are redacted. GET /v1/monitoring/jobs.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_monitoring_job(job_id)

One monitoring job by id with its configuration, rules, regions and status. Header values and credentials are redacted. GET /v1/monitoring/jobs/{id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Monitoring job id (from ns1_list_monitoring_jobs)."
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_list_notify_lists

List the notifier lists that monitoring alerts are sent to: id, name and the notifier types and labels (email, Slack, PagerDuty, webhook). Notifier settings (webhook URLs, tokens, service keys, addresses) are redacted. GET /v1/lists.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_list_data_sources

List the data sources (connections to third-party monitoring or custom push sources used for traffic steering): id, name, source type, status and their feeds. Connection settings and credentials are redacted. GET /v1/data/sources.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_data_source(source_id)

One data source by id with its feeds. Connection settings and credentials are redacted. GET /v1/data/sources/{id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "source_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Data source id (from ns1_list_data_sources)."
    }
  },
  "required": [
    "source_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_list_data_feeds(source_id)

List the feeds of one data source (each feed is one monitored item, e.g. one server's health) with id, name and settings. GET /v1/data/feeds/{source_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "source_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Data source id."
    }
  },
  "required": [
    "source_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_data_feed(source_id, feed_id)

One data feed of a source by id. GET /v1/data/feeds/{source_id}/{feed_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "source_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Data source id."
    },
    "feed_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Data feed id."
    }
  },
  "required": [
    "source_id",
    "feed_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_account_summary

The account's subscription, resources and utilization (queries, records, filter chains, monitors, ... against the plan limits). GET /v1/account/summary.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_usage_stats(zone, domain, type, period, aggregate, ...)

DNS query counts for the whole account, one zone, or one record (give zone, or zone + domain + type). period is 1h, 24h or 30d; aggregate, expand, limit and after apply to the account and zone levels only (a record takes just period). If next_page is not null, call again with its after/limit. GET /v1/stats/usage[/{zone}[/{domain}/{type}]].

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "domain": {
      "description": "Full record name inside the zone, e.g. www.example.com (or the zone name itself for the apex).",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "type": {
      "type": "string",
      "pattern": "^[A-Z0-9]{1,12}$",
      "description": "Record type, e.g. A, AAAA, CNAME, MX, TXT."
    },
    "period": {
      "description": "Time window: 1h, 24h or 30d. Omit for the API default.",
      "type": "string",
      "enum": [
        "1h",
        "24h",
        "30d"
      ]
    },
    "aggregate": {
      "description": "Sum the counts over the period.",
      "type": "boolean"
    },
    "expand": {
      "description": "Break the counts down further. Account and zone level only.",
      "type": "boolean"
    },
    "limit": {
      "description": "Maximum items per page, 1-1000. Omit for NS1's default page size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "after": {
      "description": "Continue after this item: pass next_page.after from the previous reply.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_qps_stats(zone, domain, type)

Current queries per second for the whole account, one zone, or one record (give zone, or zone + domain + type). GET /v1/stats/qps[/{zone}[/{domain}/{type}]].

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "domain": {
      "description": "Full record name inside the zone, e.g. www.example.com (or the zone name itself for the apex).",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "type": {
      "type": "string",
      "pattern": "^[A-Z0-9]{1,12}$",
      "description": "Record type, e.g. A, AAAA, CNAME, MX, TXT."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_billing_records

How many DNS records the account uses against its plan limit in the current billing cycle. GET /billing-usage/v1/records.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ns1_get_billing_queries(from, to)

Billable DNS query usage between two Unix timestamps. GET /billing-usage/v1/queries?from=&to=.

入力スキーマ

{
  "type": "object",
  "properties": {
    "from": {
      "type": "integer",
      "minimum": 0,
      "maximum": 4102444800,
      "description": "Start, Unix seconds."
    },
    "to": {
      "type": "integer",
      "minimum": 0,
      "maximum": 4102444800,
      "description": "End, Unix seconds."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ns1_create_record(zone, domain, type, answers, ttl)

WRITE: creates ONE new DNS record and CHANGES LIVE DNS for that name as soon as NS1 serves it; a wrong answer can take a site or mail offline. Plain records only (A, AAAA, ALIAS, CAA, CNAME, MX, PTR, SRV, TXT; no NS/SOA, no traffic-steering filters or metadata). Refuses when the record already exists (use ns1_update_record). Answers are lists of rdata fields: A ["192.0.2.10"], MX [10, "mail.example.com."], TXT ["v=spf1 -all"], SRV [10, 5, 5060, "sip.example.com."], CAA [0, "issue", "letsencrypt.org"]. PUT /v1/zones/{zone}/{domain}/{type}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "domain": {
      "description": "Full record name inside the zone, e.g. www.example.com (or the zone name itself for the apex).",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "type": {
      "type": "string",
      "enum": [
        "A",
        "AAAA",
        "ALIAS",
        "CAA",
        "CNAME",
        "MX",
        "PTR",
        "SRV",
        "TXT"
      ],
      "description": "Record type."
    },
    "answers": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "minItems": 1,
        "maxItems": 8,
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "number"
            }
          ]
        }
      },
      "description": "One entry per answer, each a list of rdata fields (see the tool description)."
    },
    "ttl": {
      "description": "TTL in seconds. Omit for the zone default.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    }
  },
  "required": [
    "zone",
    "domain",
    "type",
    "answers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ns1_update_record(zone, domain, type, answers, ttl)

WRITE: changes ONE existing DNS record and CHANGES LIVE DNS for that name immediately. Giving answers REPLACES all current answers of the record (send the complete new set); giving only ttl changes just the TTL. Plain records only (A, AAAA, ALIAS, CAA, CNAME, MX, PTR, SRV, TXT): when answers are given, a record that uses traffic-steering filters, links or per-answer metadata is refused (edit it in the NS1 portal). Fails if the record does not exist. POST /v1/zones/{zone}/{domain}/{type}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone name, e.g. example.com.",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "domain": {
      "description": "Full record name inside the zone, e.g. www.example.com (or the zone name itself for the apex).",
      "type": "string",
      "minLength": 1,
      "maxLength": 254
    },
    "type": {
      "type": "string",
      "enum": [
        "A",
        "AAAA",
        "ALIAS",
        "CAA",
        "CNAME",
        "MX",
        "PTR",
        "SRV",
        "TXT"
      ],
      "description": "Record type of the existing record."
    },
    "answers": {
      "description": "The COMPLETE new answer set, each answer a list of rdata fields (as for ns1_create_record).",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "minItems": 1,
        "maxItems": 8,
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "number"
            }
          ]
        }
      }
    },
    "ttl": {
      "description": "New TTL in seconds.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    }
  },
  "required": [
    "zone",
    "domain",
    "type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 18 件