dreamhost-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dreamhost-mcplist all DNS records for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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:
Open DreamHost API Keys
Add a comment so you can identify the key later
Enable the commands you need (at minimum:
dns-list_records,dns-add_record,dns-remove_record)Click Generate a new API Key now!
Copy the key — it is shown once
Set it as an environment variable:
DREAMHOST_API_KEY=your_key_hereOptional:
DREAMHOST_ACCOUNT=123456 # account number from Manage Account pageTest without your own account
DreamHost provides a read-only demo key with list-only access:
6SHU5P2HLDAYECUMRelated MCP server: porkbun-mcp
Install
cd /home/chris/projects/dreamhost-mcp
npm install
npm run buildCursor 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 |
|
| List all DNS records |
|
| Add a DNS record |
|
| Remove a DNS record |
|
| Commands your key can run |
|
| List API keys (needs |
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.
Links
Available Tools
5 toolsapi_list_accessible_commandsA
List API commands your current API key is allowed to run.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | DNS record type | |
| value | Yes | Record value (IP, hostname, text, etc.) | |
| record | Yes | Domain or hostname, e.g. example.com or www.example.com | |
| comment | No | Optional comment stored with the record | |
| unique_id | No | Optional idempotency key to avoid duplicate submissions |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | DNS record type | |
| value | Yes | Exact record value to remove | |
| record | Yes | Domain or hostname, e.g. example.com | |
| unique_id | No | Optional idempotency key to avoid duplicate submissions |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v0.1.0- First observed
api_list_accessible_commands - First observed
api_list_keys - First observed
dns_add_record - First observed
dns_list_records - First observed
dns_remove_record
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: API key management and DNS record management are separate groups with no overlap.
All tools follow a consistent 'prefix_verb_noun' pattern using snake_case, such as api_list_keys and dns_add_record.
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.
The set covers core operations but lacks DNS record update and API key creation/deletion, which are notable gaps for typical management tasks.
Maintenance
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
MCP server for Hostinger API
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more6736 npm1MIT
- AlicenseAqualityCmaintenanceMCP server for the Porkbun DNS API. Manage DNS records, domains, DNSSEC, SSL certificates, and more.2523MIT
- AlicenseAqualityDmaintenanceComprehensive MCP server for the Namecheap API, enabling domain management, DNS record control, nameserver settings, and domain registration from any MCP client.1039 npmMIT
- FlicenseNot gradedqualityCmaintenanceMCP server for managing PowerDNS DNS records through the PowerDNS-Admin API. Supports listing zones, getting zone details, and creating, updating, deleting DNS records.1-