Skip to main content
Glama

dreamhost-mcp

MCP server for the DreamHost API. Currently exposes DNS management and API metacommands.

Authentication

DreamHost uses an API key (not OAuth). You generate it in the panel:

  1. Open DreamHost API Keys

  2. Add a comment so you can identify the key later

  3. Enable the commands you need (at minimum: dns-list_records, dns-add_record, dns-remove_record)

  4. Click Generate a new API Key now!

  5. Copy the key — it is shown once

Set it as an environment variable:

DREAMHOST_API_KEY=your_key_here

Optional:

DREAMHOST_ACCOUNT=123456   # account number from Manage Account page

Test without your own account

DreamHost provides a read-only demo key with list-only access:

6SHU5P2HLDAYECUM

Related MCP server: porkbun-mcp

Install

cd /home/chris/projects/dreamhost-mcp
npm install
npm run build

Cursor MCP config

This server runs in WSL. Copy cursor-mcp.example.json into your Cursor MCP settings (~/.cursor/mcp.json):

{
  "mcpServers": {
    "dreamhost-mcp": {
      "command": "wsl",
      "args": ["-e", "/home/chris/projects/dreamhost-mcp/scripts/cursor-mcp.sh"],
      "env": {
        "WSLENV": "DREAMHOST_API_KEY/u:DREAMHOST_ACCOUNT/u",
        "DREAMHOST_API_KEY": "your_key_here"
      }
    }
  }
}

Tools

Tool

DreamHost command

Description

dns_list_records

dns-list_records

List all DNS records

dns_add_record

dns-add_record

Add a DNS record

dns_remove_record

dns-remove_record

Remove a DNS record

api_list_accessible_commands

api-list_accessible_cmds

Commands your key can run

api_list_keys

api-list_keys

List API keys (needs * permission)

API scope note

DreamHost has removed most legacy API commands (mail, users, databases, etc.). As of 2026, only DNS and metacommands remain in their public API.

Available Tools

5 tools
api_list_accessible_commandsA

List API commands your current API key is allowed to run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It states it lists allowed commands but does not mention any behavioral aspects like rate limits or authentication. For a simple read-only operation, it is minimally adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence with no wasted words. It is appropriately front-loaded and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool with no output schema, the description is fully complete. It explains the purpose and scope, and given sibling tools, the context is sufficient for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters, so the description does not need to add parameter details. Baseline 4 is appropriate as no compensation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'List', the resource 'API commands', and the scope 'your current API key is allowed to run'. It clearly distinguishes from siblings (api_list_keys lists keys, DNS tools are for records).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly tells when to use: when you need to know which commands your API key can run. It does not explicitly exclude alternatives, but the context is clear enough for this simple, parameterless tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

api_list_keysA

List all API keys on the account. Requires a key with full (*) permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the permission requirement but omits other behavioral details such as pagination, response format, or whether the operation is read-only. More context is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded key information. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless listing tool, the description covers purpose and prerequisite. Missing details about output format, but overall adequate given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters (schema coverage 100% empty object), so baseline is 4. The description adds no parameter-specific info but that is appropriate given zero params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (API keys), and scope (all on account). It distinguishes from sibling tools like api_list_accessible_commands and DNS tools, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies a prerequisite (full permissions), indicating when this tool can be used. However, it does not explicitly mention when not to use it or suggest alternatives, though the context of sibling tools implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dns_add_recordB

Add a DNS record to a domain. Propagation can take several hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesDNS record type
valueYesRecord value (IP, hostname, text, etc.)
recordYesDomain or hostname, e.g. example.com or www.example.com
commentNoOptional comment stored with the record
unique_idNoOptional idempotency key to avoid duplicate submissions

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It adds value by noting 'Propagation can take several hours,' a key latency trait. However, it omits other important behaviors such as whether updates are allowed, permission requirements, idempotency behavior (despite a 'unique_id' parameter), and error scenarios like duplicate records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and achieves its purpose without extraneous text. It is front-loaded with the core action. A slightly more structured break (e.g., bullet for propagation) could improve readability without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with no output schema, the description is adequate but leaves gaps. It doesn't explain return values (e.g., confirmation, resource ID), error handling, or the effect of the 'comment' and 'unique_id' parameters on behavior. Propagation delay is noted, but pre-existing record conflict handling is missing. The lack of annotations raises the requirement but fails to fully meet it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3. The description does not provide additional meaning beyond the schema for any parameters. It does not explain format expectations, constraints, or how parameters interact (e.g., record and type).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add a DNS record to a domain' uses a specific verb and resource, clearly indicating the action and target. It distinguishes this tool from siblings like 'dns_list_records' and 'dns_remove_record' by implying creation rather than reading or deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'dns_list_records' or 'dns_remove_record'. The context for when to add (e.g., new record needed) is implied but not stated, and there are no exclusions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dns_list_recordsA

List all DNS records for domains on your DreamHost account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It only states the basic action without disclosing any behavioral traits such as pagination, authentication requirements, or what happens if no records exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy. It is front-loaded and efficient, earning its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no parameters, no output schema), the description is adequate but lacks details about the return format or any additional context. It is minimally complete for a straightforward list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the schema coverage is 100% by being empty. The description does not need to add parameter details; baseline for 0 params is 4, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (DNS records) with a specific scope (domains on DreamHost account), distinguishing it from sibling tools like dns_add_record and dns_remove_record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any prerequisites or context. The description is minimal and does not help an agent decide between this and sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dns_remove_recordA

Remove a DNS record. record, type, and value must match the existing record exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesDNS record type
valueYesExact record value to remove
recordYesDomain or hostname, e.g. example.com
unique_idNoOptional idempotency key to avoid duplicate submissions

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states removal and exact match requirement, but does not disclose idempotency, error behavior if record not found, or permissions needed. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action, no wasted words. Essential constraint included concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so return behavior is unknown. Missing details on success/failure responses, idempotency (though unique_id param hints at it), and edge cases like non-existent record. Adequate for simple tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). Description adds critical context: 'record, type, and value must match the existing record exactly,' which is not in schema descriptions. This clarifies the requirement for successful removal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('Remove') and resource ('DNS record') with additional constraint that attributes must match exactly. Distinguishes from siblings by specifying exact match requirement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The description implies usage for removing a record that exists, but does not compare with siblings like dns_add_record or dns_list_records.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedapi_list_accessible_commands
    • First observedapi_list_keys
    • First observeddns_add_record
    • First observeddns_list_records
    • First observeddns_remove_record

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: API key management and DNS record management are separate groups with no overlap.

Naming Consistency5/5

All tools follow a consistent 'prefix_verb_noun' pattern using snake_case, such as api_list_keys and dns_add_record.

Tool Count4/5

5 tools is a reasonable number for a focused set covering API keys and DNS, though the broader DreamHost domain could justify a few more.

Completeness3/5

The set covers core operations but lacks DNS record update and API key creation/deletion, which are notable gaps for typical management tasks.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers