npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

namesilo-mcp

v0.1.0

Published

MCP server for the NameSilo API — manage domains, DNS, contacts, nameservers, privacy/lock, and portfolio from any MCP-capable agent.

Readme

NameSilo MCP

npm version npm downloads License: MIT

Manage your NameSilo domains from any MCP-capable agent — Claude Desktop, Cursor, VS Code (Copilot), Windsurf, and more.

One npx command. No app to install. Your API key stays local on your machine.

Published to npmnpx -y namesilo-mcp pulls the pre-built package from npmjs.com/package/namesilo-mcp on demand. No git clone, no npm run build — just paste a config and restart your agent.

  • List domains → inspect → manage DNS, nameservers, contacts
  • Check availability & prices, register / renew / transfer domains
  • DNS records (A, AAAA, CNAME, MX, TXT, SRV), DNSSec, registered name servers
  • Privacy, registrar lock, auto-renew, portfolios, email forwarding, marketplace

Built for agents that chain tools. Every list_* returns IDs you need for the next call. All NameSilo API XML responses are parsed to JSON.


1. Get your API key

  1. Log in at namesilo.comAccount → API Manager at namesilo.com/account_api.php.
  2. Generate a key. By default it is restricted to your current IP — either add your outbound IP to the allowlist or generate an unrestricted key.
  3. Use the checkIp tool once to discover the IP NameSilo sees if calls fail with code 200.

Keep it secret — you'll paste it into your MCP config, never into chat.


2. Add to your agent (copy-paste)

You need Node.js >= 18. Check with node -v.

All configs below use the env var NAMESILO_API_KEY (or --api-key flag). Optional NAMESILO_BASE_URL to override the API base (e.g., local mock).

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "namesilo": {
      "command": "npx",
      "args": ["-y", "namesilo-mcp@latest"],
      "env": {
        "NAMESILO_API_KEY": "your-namesilo-key"
      }
    }
  }
}

Tip: @latest auto-updates on next agent restart. Pin to a version for reproducibility: ["-y", "[email protected]"]. Bare namesilo-mcp also resolves to @latest.

Restart Claude Desktop.

Cursor

Global (~/.cursor/mcp.json — all projects) or project-scoped (.cursor/mcp.json — commit without secrets):

{
  "mcpServers": {
    "namesilo": {
      "command": "npx",
      "args": ["-y", "namesilo-mcp@latest"],
      "env": {
        "NAMESILO_API_KEY": "your-namesilo-key"
      }
    }
  }
}

Settings → Tools & MCP will hot-reload — no restart needed.

VS Code (Copilot / MCP extension)

Create .vscode/mcp.json in your workspace (note servers + type: "stdio" — VS Code's variant):

{
  "servers": {
    "namesilo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "namesilo-mcp@latest"],
      "env": {
        "NAMESILO_API_KEY": "your-namesilo-key"
      }
    }
  }
}

Claude Code (CLI)

claude mcp add namesilo -- npx -y namesilo-mcp@latest
# then in your config add env:
# NAMESILO_API_KEY=your-namesilo-key
# or: claude mcp add --env NAMESILO_API_KEY=your-namesilo-key namesilo -- npx -y namesilo-mcp@latest

Scope it: --scope project for the repo, --scope user for global.

Alternative: --api-key flag

If you cannot set env (e.g., testing locally):

{
  "mcpServers": {
    "namesilo": {
      "command": "npx",
      "args": ["-y", "namesilo-mcp@latest", "--api-key", "your-namesilo-key"]
    }
  }
}

Windsurf / Cline / Continue / any mcp.json client

{
  "mcpServers": {
    "namesilo": {
      "command": "npx",
      "args": ["-y", "namesilo-mcp@latest"],
      "env": {
        "NAMESILO_API_KEY": "your-namesilo-key"
      }
    }
  }
}

All examples now use @latest so npx fetches the newest published version from npm on next restart. Replace with @0.1.0 to lock.

Remote/HTTP clients: this package is stdio via npx today (no hosted URL). Wrap with mcp-remote if you need HTTP.


3. Verify it works

Ask your agent:

"Verify my NameSilo connection with checkIp and listDomains, then show my domain prices."

What you should see:

  • checkIp{ ip: "…", apiCallOk: true }
  • listDomains{ code: 300, domains: [...] } with expiration info
  • getPrices → per-TLD registration/renewal/transfer pricing

If checkIp says code 200 IP not on allowlist, add that IP to your allowlist at account_api.php or regenerate an unrestricted key. 110 means invalid key.


4. What you can do — example prompts

Copy these verbatim to your agent.

  1. Inventory

    "List all my NameSilo domains with listDomains, then getDomainInfo for the first one."

  2. Check before buying

    "Check if example.com and example.net are available with checkDomain, then show me prices for .com and .io with getPrices."

  3. DNS management

    "List DNS records for example.com, then add an A record for blog.example.com pointing to 1.2.3.4, then update its TTL."

  4. Nameservers

    "Change nameservers for example.com to ns1.cloudflare.com and ns2.cloudflare.com."

  5. Lock & privacy

    "Check registrar lock status for example.com, enable lock and privacy, and enable auto-renew."

  6. Email forwarding

    "List email forwards for example.com, then create [email protected] forwarding to [email protected]."

  7. Portfolio

    "Create a portfolio called clients, then move example.com into it, then list portfolios."

  8. Renewal

    "Check my account balance, then renew example.com for 2 years (ask me to confirm cost first)."


5. All tools (52)

Domains (15)

listDomains, getDomainInfo, checkDomain, getPrices, registerDomain, renewDomain, transferDomain, getAccountBalance, checkIp, listRegisteredNameServers, addRegisteredNameServer, updateRegisteredNameServer, deleteRegisteredNameServer, getDomainForwarding, forwardDomain

DNS (9)

listDnsRecords, addDnsRecord, updateDnsRecord, deleteDnsRecord, changeNameServers, dnsSecListRecords, addDnsSecRecord, deleteDnsSecRecord, getDomainDnsSecStatus

Registrar Lock / Privacy / Auto-Renew (9)

getRegistrarLockStatus, enableRegistrarLock, disableRegistrarLock, getPrivacyStatus, enablePrivacy, disablePrivacy, getAutoRenewStatus, enableAutoRenew, disableAutoRenew

Contacts & Portfolios (11)

listContacts, addContact, deleteContact, updateContact, changeDomainContacts, listPortfolios, getPortfolio, createPortfolio, deletePortfolio, addToPortfolio, removeFromPortfolio

Email Forwarding & Marketplace (8)

listEmailForwards, configureEmailForward, deleteEmailForward, getEmailForwardingAvailability, listMarketplaceSales, addMarketplaceSale, removeMarketplaceSale, searchMarketplace


6. How chaining works

The MCP is built so an agent never has to guess IDs.

  1. DiscoverlistDomains, listContacts, listPortfolios, getPrices
  2. InspectgetDomainInfo, listDnsRecords (get rrid), getRegistrarLockStatus
  3. MutateaddDnsRecord → returns detail; updateDnsRecord/deleteDnsRecord need rrid
  4. ProtectenableRegistrarLock, enablePrivacy, enableAutoRenew
  5. TransactcheckDomaingetPricesregisterDomain / renewDomain (confirm cost first)
  6. OrganizecreatePortfolioaddToPortfolio

Tip: Always checkDomain before registerDomain. Check getAccountBalance before spending. DNS rrhost="" is root.


7. Env options

| Env var | Purpose | Default | |---|---|---| | NAMESILO_API_KEY | NameSilo API key (required) | — | | NAMESILO_BASE_URL | Override API base (e.g., local mock) | https://www.namesilo.com/api |

  • You can also pass --api-key YOUR_KEY as a CLI arg instead of env.
  • If both are set, --api-key wins.
  • NAMESILO_BASE_URL is useful for testing with a mock server.

8. Troubleshooting

  • Code 110 invalid key → key missing/invalid. Regenerate at Account → API Manager.
  • Code 200 IP not on allowlist → your outbound IP isn't whitelisted. Run checkIp to see the IP NameSilo sees, then add it at account_api.php or generate an unrestricted key.
  • Code 261/262 domain unavailable / not in account → domain not owned by this key or already taken.
  • Money tools fail with insufficient balance → top up at NameSilo → Account → Add Funds, check getAccountBalance.
  • Tool "Missing NameSilo API key" → you set the key in the wrong config file or forgot to restart. Copy the exact env block from §2; keep JSON valid.
  • Still stuck? Open an issue: https://github.com/niyogi/namesilo-mcp/issues with the tool name + error text (never paste your full key).

9. Security & privacy

  • Your API key never leaves your machine — the MCP fetch calls www.namesilo.com directly from your local npx process. No proxy, no telemetry.
  • Never log/commit your key. If you use project-scoped .cursor/mcp.json, use ${NAMESILO_API_KEY} placeholder in git and keep the real key in your global ~/.cursor/mcp.json.
  • No exec or shell — all API calls are GET with query params; XML is parsed with fast-xml-parser (pure JS, no native bindings).
  • Rate-limit aware — fetch has 20s timeout via AbortController.
  • PII-safe: all upstream data is returned as JSON text content, never as injected instructions.

Report a security issue: please open a private issue or contact the maintainer — don't publish keys in bug reports.


10. Developing / contributing

This section is for contributors only — you don't need it to use the MCP.

git clone https://github.com/niyogi/namesilo-mcp
cd namesilo-mcp
npm install
npm run build        # tsc -> dist/
npm run inspect      # MCP Inspector (requires NAMESILO_API_KEY — still lists tools without it)
# or with mock:
NAMESILO_API_KEY=dummy NAMESILO_BASE_URL=http://localhost:17892 npx -y @modelcontextprotocol/inspector node dist/index.js

XML parsing choice: fast-xml-parser was chosen over xml2js because it is lightweight, pure JS, sync, actively maintained, and has no native dependencies — xml2js pulls in sax and is callback-based/heavier. The NameSilo API returns XML (?type=xml) which we parse to JSON for tool outputs.

Publish (maintainers):

npm run build
npm pack --dry-run   # check files
npm publish --access public
# bump version first: npm version patch && npm publish --access public && git push --follow-tags

API docs: https://www.namesilo.com/api_reference.php.

License: MIT.