AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Spaceship Mcp

mcp-bartwaardenburg-spaceship-mcp · by BartWaardenburg

MCP server for the Spaceship API — manage domains, DNS, contacts & marketplace listings via AI

No reviews yet
0 installs
40 views
0.0% view→install

Install

$ agentstack add mcp-bartwaardenburg-spaceship-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-bartwaardenburg-spaceship-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Spaceship Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

spaceship-mcp

[](https://www.npmjs.com/package/spaceship-mcp) [](https://opensource.org/licenses/MIT) [](https://nodejs.org/) [](https://github.com/bartwaardenburg/spaceship-mcp/actions/workflows/ci.yml) [](https://bartwaardenburg.github.io/spaceship-mcp/) [](https://modelcontextprotocol.io)

A community-built Model Context Protocol (MCP) server for the Spaceship API. Manage domains, DNS records, contacts, marketplace listings, and more — all through natural language via any MCP-compatible AI client.

> Note: This is an unofficial, community-maintained project and is not affiliated with or endorsed by Spaceship.

Add To Your Editor

CLI one-liners — the fastest way to get started. Pick your tool:

Claude Code

claude mcp add --scope user spaceship-mcp \
  --env SPACESHIP_API_KEY=your-key \
  --env SPACESHIP_API_SECRET=your-secret \
  -- npx -y spaceship-mcp

Codex CLI (OpenAI)

codex mcp add spaceship-mcp \
  --env SPACESHIP_API_KEY=your-key \
  --env SPACESHIP_API_SECRET=your-secret \
  -- npx -y spaceship-mcp

Gemini CLI (Google)

gemini mcp add spaceship-mcp -- npx -y spaceship-mcp

Set environment variables SPACESHIP_API_KEY and SPACESHIP_API_SECRET separately via ~/.gemini/settings.json.

VS Code (Copilot)

Open the Command Palette (Cmd+Shift+P / Ctrl+Shift+P) > MCP: Add Server > select Command (stdio).

Or add to .vscode/mcp.json in your project directory:

{
  "servers": {
    "spaceship-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "spaceship-mcp"],
      "env": {
        "SPACESHIP_API_KEY": "your-key",
        "SPACESHIP_API_SECRET": "your-secret"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "spaceship-mcp": {
      "command": "npx",
      "args": ["-y", "spaceship-mcp"],
      "env": {
        "SPACESHIP_API_KEY": "your-key",
        "SPACESHIP_API_SECRET": "your-secret"
      }
    }
  }
}

Supported Clients

This MCP server works with any client that supports the Model Context Protocol, including:

| Client | Easiest install | |---|---| | Claude Code | One-liner: claude mcp add | | Codex CLI (OpenAI) | One-liner: codex mcp add | | Gemini CLI (Google) | One-liner: gemini mcp add | | VS Code (Copilot) | Command Palette: MCP: Add Server | | Claude Desktop | JSON config file | | Cursor | JSON config file | | Windsurf | JSON config file | | Cline | UI settings | | Zed | JSON settings file |

Claude Desktop, Cowork & other GUI clients (expand)

Claude Desktop / Cowork

Cowork runs inside Claude Desktop and uses the same connected MCP servers and permissions. Configure once in Claude Desktop, then the server is available in Cowork.

Add the following to your Claude Desktop config file:

| Platform | Config file | |---|---| | macOS | ~/Library/Application Support/Claude/claude_desktop_config.json | | Windows | %APPDATA%\Claude\claude_desktop_config.json |

{
  "mcpServers": {
    "spaceship-mcp": {
      "command": "npx",
      "args": ["-y", "spaceship-mcp"],
      "env": {
        "SPACESHIP_API_KEY": "your-key",
        "SPACESHIP_API_SECRET": "your-secret"
      }
    }
  }
}

Windsurf / Cline / Zed

Windsurf — add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "spaceship-mcp": {
      "command": "npx",
      "args": ["-y", "spaceship-mcp"],
      "env": {
        "SPACESHIP_API_KEY": "your-key",
        "SPACESHIP_API_SECRET": "your-secret"
      }
    }
  }
}

Cline — open Settings > MCP Servers > Edit, then add the same mcpServers block shown above.

Zed — add to your Zed settings (~/.zed/settings.json on macOS, ~/.config/zed/settings.json on Linux):

{
  "context_servers": {
    "spaceship-mcp": {
      "command": "npx",
      "args": ["-y", "spaceship-mcp"],
      "env": {
        "SPACESHIP_API_KEY": "your-key",
        "SPACESHIP_API_SECRET": "your-secret"
      }
    }
  }
}

Docker

docker run -i --rm \
  -e SPACESHIP_API_KEY=your-key \
  -e SPACESHIP_API_SECRET=your-secret \
  ghcr.io/bartwaardenburg/spaceship-mcp

Generic MCP Server Config

Use this as the baseline in any host:

  • Command: npx
  • Args: ["-y", "spaceship-mcp"]
  • Required env vars: SPACESHIP_API_KEY, SPACESHIP_API_SECRET
  • Optional env vars: SPACESHIP_CACHE_TTL, SPACESHIP_MAX_RETRIES, SPACESHIP_TOOLSETS, SPACESHIP_DYNAMIC_TOOLS (see [Configuration](#configuration))

Host key mapping:

| Host | Top-level key | Notes | |---|---|---| | VS Code | servers | Add "type": "stdio" on the server object | | Claude Desktop / Cursor / Windsurf / Cline | mcpServers | Same command/args/env block | | Zed | context_servers | Same command/args/env block | | Codex CLI (TOML) | mcp_servers | Uses TOML, shown below |

Codex CLI (TOML config alternative)

If you prefer editing ~/.codex/config.toml directly:

[mcp_servers.spaceship-mcp]
command = "npx"
args = ["-y", "spaceship-mcp"]
env = { "SPACESHIP_API_KEY" = "your-key", "SPACESHIP_API_SECRET" = "your-secret" }

Other MCP Clients

For any MCP-compatible client, use this server configuration:

  • Command: npx
  • Args: ["-y", "spaceship-mcp"]
  • Environment variables: SPACESHIP_API_KEY and SPACESHIP_API_SECRET

Claude Ecosystem Notes

Claude currently has multiple MCP-related concepts that are easy to mix up:

  • Local MCP servers (Claude Desktop): defined in claude_desktop_config.json and started on your machine (docs).
  • Cowork: reuses the MCP servers connected in Claude Desktop (docs).
  • Connectors: remote MCP integrations managed in Claude (docs).
  • Cowork plugins: Claude-specific workflow packaging (instructions + tools/data integrations) (docs). Useful in Claude, but not portable as a generic MCP server config for other agent clients.

Verified against vendor docs on 2026-03-05.

Terminology

What is portable across hosts:

  • MCP server runtime settings (command, args, env)
  • Transport model (stdio command server)
  • Tool names and tool schemas exposed by this server

What is host/vendor-specific (not portable as-is):

Features

  • 48 tools across 8 categories covering the full Spaceship API
  • 13 DNS record types with dedicated, type-safe creation tools (A, AAAA, ALIAS, CAA, CNAME, HTTPS, MX, NS, PTR, SRV, SVCB, TLSA, TXT)
  • Complete domain lifecycle — register, renew, transfer, and restore domains
  • SellerHub integration — list domains for sale and generate checkout links
  • DNS alignment analysis — compare expected vs actual records to catch misconfigurations
  • WHOIS privacy and contact management with TLD-specific attribute support
  • Input and output validation via Zod schemas on every tool for safe, predictable operations
  • 5 MCP Resources for passive context loading (domain list, domain details, DNS records, contacts, SellerHub)
  • 9 MCP Prompts — 5 guided workflows and 4 with argument auto-complete
  • Resource subscriptions with polling-based change detection and automatic notifications
  • Response caching with configurable TTL and automatic invalidation on writes
  • Rate limit handling with exponential backoff and Retry-After header support
  • Toolset filtering to expose only the tool categories you need
  • Dynamic tool loading mode for agents with constrained context windows
  • Actionable error messages with context-aware recovery suggestions
  • Docker support for containerized deployment
  • 453 unit tests with near-complete coverage

Configuration

Required

| Variable | Description | |---|---| | SPACESHIP_API_KEY | Your Spaceship API key | | SPACESHIP_API_SECRET | Your Spaceship API secret |

Generate your credentials in the Spaceship API Manager.

Optional

| Variable | Description | Default | |---|---|---| | SPACESHIP_CACHE_TTL | Response cache lifetime in seconds. Set to 0 to disable caching. | 120 | | SPACESHIP_MAX_RETRIES | Maximum retry attempts for rate-limited (429) requests with exponential backoff. | 3 | | SPACESHIP_TOOLSETS | Comma-separated list of tool categories to enable (see [Toolset Filtering](#toolset-filtering)). | All toolsets | | SPACESHIP_DYNAMIC_TOOLS | Set to true to enable dynamic tool loading mode (see [Dynamic Tool Loading](#dynamic-tool-loading)). | false |

API Key Setup

Creating Your API Key

  1. Log in to your Spaceship account
  2. Navigate to API Manager (direct link)
  3. Click New API key
  4. Give the key a descriptive name (e.g. "MCP Server")
  5. Select the scopes you need (see below)
  6. Copy both the API key and API secret — the secret is only shown once

Available Scopes

Each scope controls access to a specific part of the Spaceship API. When creating your key, enable only the scopes you need.

| Scope | Access | |---|---| | domains:read | List domains, check availability, view domain details and settings | | domains:write | Modify domain settings (nameservers, auto-renew, contacts, privacy) | | domains:billing | Register, renew, restore, and transfer domains (financial operations) | | domains:transfer | Transfer lock, auth codes, and transfer status | | contacts:read | Read saved contact profiles and attributes | | contacts:write | Create and update contact profiles and attributes | | dnsrecords:read | List DNS records for your domains | | dnsrecords:write | Create, update, and delete DNS records | | sellerhub:read | View marketplace listings and verification records | | sellerhub:write | List/delist domains for sale, update pricing, generate checkout links | | asyncoperations:read | Poll status of async operations (registration, renewal, transfer) |

Scopes Per Feature

The table below shows which scopes are required for each group of tools.

| Feature | Tools | Required scopes | |---|---|---| | DNS Records | list_dns_records | dnsrecords:read | | | save_dns_records, delete_dns_records, all create_*_record tools | dnsrecords:read dnsrecords:write | | Domain Info | list_domains, get_domain, check_domain_availability | domains:read | | Domain Settings | update_nameservers, set_auto_renew, set_privacy_level, set_email_protection, update_domain_contacts | domains:write | | Domain Lifecycle | register_domain, renew_domain, restore_domain, transfer_domain | domains:billing | | Transfer | set_transfer_lock, get_auth_code, get_transfer_status | domains:transfer | | Contacts | get_contact, get_contact_attributes | contacts:read | | | save_contact, save_contact_attributes | contacts:write | | Personal NS | list_personal_nameservers, get_personal_nameserver | domains:read | | | update_personal_nameserver, delete_personal_nameserver | domains:write | | SellerHub | list_sellerhub_domains, get_sellerhub_domain, get_verification_records | sellerhub:read | | | create_sellerhub_domain, update_sellerhub_domain, delete_sellerhub_domain, create_checkout_link | sellerhub:write | | Async Operations | get_async_operation | asyncoperations:read | | Analysis | check_dns_alignment | dnsrecords:read |

Recommended Scope Presets

Full access — enable everything for unrestricted use:

domains:read  domains:write  domains:billing  domains:transfer
contacts:read  contacts:write
dnsrecords:read  dnsrecords:write
sellerhub:read  sellerhub:write
asyncoperations:read

DNS management only — just read/write DNS records:

dnsrecords:read  dnsrecords:write

Read-only — browse domains and records without making changes:

domains:read  contacts:read  dnsrecords:read  sellerhub:read  asyncoperations:read

Available Tools

DNS Records

| Tool | Description | |---|---| | list_dns_records | List all DNS records for a domain with pagination | | save_dns_records | Save (upsert) DNS records — replaces records with the same name and type | | delete_dns_records | Delete DNS records by name and type |

Type-Specific Record Creation

Each DNS record type has a dedicated tool with type-safe parameters and validation.

| Tool | Description | |---|---| | create_a_record | Create an A record (IPv4 address) | | create_aaaa_record | Create an AAAA record (IPv6 address) | | create_alias_record | Create an ALIAS record (CNAME flattening at zone apex) | | create_caa_record | Create a CAA record (Certificate Authority Authorization) | | create_cname_record | Create a CNAME record (canonical name) | | create_https_record | Create an HTTPS record (SVCB-compatible) | | create_mx_record | Create an MX record (mail exchange) | | create_ns_record | Create an NS record (nameserver delegation) | | create_ptr_record | Create a PTR record (reverse DNS) | | create_srv_record | Create an SRV record (service locator) | | create_svcb_record | Create an SVCB record (general service binding) | | create_tlsa_record | Create a TLSA record (DANE/TLS certificate association) | | create_txt_record | Create a TXT record (text data) |

Domain Management

| Tool | Description | |---|---| | list_domains | List all domains in the account with pagination | | get_domain | Get detailed domain information | | check_domain_availability | Check availability for up to 20 domains at once | | update_nameservers | Update nameservers for a domain | | set_auto_renew | Toggle auto-renewal for a domain | | set_transfer_lock | Toggle transfer lock for a domain | | get_auth_code | Get the transfer auth/EPP code |

Domain Lifecycle

| Tool | Description | |---|---| | register_domain | Register a new domain (financial operation, async) | | renew_domain | Renew a domain registration (financial operation, async) | | restore_domain | Restore a domain from redemption grace period (financial operation, async) | | transfer_domain | Transfer a domain to Spaceship (financial operation, async) | | get_transfer_status | Check the status of a domain transfer | | get_async_operation | Poll the status of an async operation by its operation ID |

Contacts & Privacy

| Tool | Description | |---|---| | save_contact | Create or update a reusable contact profile | | get_contact | Retrieve a saved contact by ID | | save_contact_attributes | Save TLD-specific contact attributes (e.g. tax IDs) | | get_contact_attributes | Retrieve all stored contact attribute

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.