Skip to main content

controld-blade-mcp

MCP server for Control-D DNS filtering and privacy management. 23 tools covering profiles, filters, services, custom rules, devices, and analytics.

Install

uv sync

Configure

Env var Required Description
CONTROLD_API_KEY Yes API token from controld.com/dashboard/api
CONTROLD_WRITE_ENABLED No Set true to enable write operations (default: false)
CONTROLD_MCP_TRANSPORT No stdio (default) or http
CONTROLD_MCP_HOST No HTTP bind address (default: 127.0.0.1)
CONTROLD_MCP_PORT No HTTP port (default: 8767)
CONTROLD_MCP_API_TOKEN When http Bearer token clients must send. Required to start http transport (loopback-only, never unauthenticated).

Transport policy. The default stdio transport needs no token. The http transport is a manual loopback path only: the server refuses to start unless CONTROLD_MCP_API_TOKEN is set and CONTROLD_MCP_HOST is loopback (127.0.0.1/::1/localhost). Control-D tools mutate DNS-filtering policy — never expose this surface unauthenticated or on a public interface.

Usage

Claude Code

{
  "mcpServers": {
    "controld": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/controld-blade-mcp", "controld-blade-mcp"],
      "env": {
        "CONTROLD_API_KEY": "your-api-key"
      }
    }
  }
}

Stallari

Automatically configured via the pack system. See stallari-plugin.yaml.

Tools (23)

Read (12)

Tool Description
cd_info Account info + caller IP (health check)
cd_network Service availability across PoPs
cd_profiles List all profiles
cd_profile Single profile detail with options
cd_filters Native + external filters (merged)
cd_services Active service rules
cd_service_catalog Full service catalog (cached 1hr)
cd_rules Custom DNS rules by folder
cd_default_rule Catch-all rule status
cd_devices All DNS endpoints
cd_access IPs querying a device
cd_analytics_config Log levels + storage regions

Write (11, gated)

Tool Gate Description
cd_profile_create write Create profile
cd_profile_update write Update profile settings
cd_filters_update write Toggle filters (single or batch)
cd_service_update write Set service rule
cd_rule_create write Create custom rule(s)
cd_rule_update write Update custom rule(s)
cd_rule_delete write+confirm Delete custom rule
cd_default_rule_set write Set default rule
cd_device_create write Create DNS endpoint
cd_device_update write Update device settings
cd_access_update write+confirm Authorize/deauthorize IPs

Development

make install-dev    # Install with dev dependencies
make test           # Run unit tests
make check          # Lint + format check + type check
make test-cov       # Tests with coverage

Token Efficiency

Responses use compact pipe-delimited format. Typical costs:

Operation ~Tokens
cd_info ~40
cd_profiles (5 profiles) ~150
cd_rules (20 rules) ~500
cd_devices (10 devices) ~200

Conformance & hardening (DD-385)

  • Audit surface (CONV-29 / S-AUD-001). Every tool appends a canonical _meta: {...} JSON tail on the success path via stallari-mcp-helpers (append_meta/meta_envelope). Write tools carry target_id + rows_affected. Gate / confirm / error returns stay plain (no tail). All 23 tools verify match under stallari-mcp-lint --strict.
  • Risk class (DD-280). The catalog entry declares per-tool risk_class: 12 read_only, 9 external_side_effect, 2 high_risk (cd_rule_delete, cd_access_update — both write+confirm).
  • Transport (DD-242). http transport is bearer-mandatory + loopback-only (see Transport policy above); stdio is the default.
  • Readiness: production — live-hardening certification PASSED (v0.4.0). The DD-385 live-capture audit ran against a real Control-D account and fixed 12 wire-fidelity defects a 100%-green mocked suite passed straight through — every formatter read keys the API doesn't emit (stats.rules vs profile.rule.count, flat do vs action.do, top-level filter status vs per-levels[], device_type vs icon, …); cd_rules 400'd on every default call (/rules/0); update_service silently no-op'd without a required status field; format_write_result crashed on the bare-list delete response; spoof/redirect rules rendered without their target (via nests under action.via for rules, unlock_location for services). The mocks now encode the captured wire shapes, and all read + write paths are live-verified (incl. cd_access_update on a throwaway device, spoof→IP / redirect→location rules, and the profile options render). 13 defects fixed.

Licence

MIT

Metadata

Release files for controld-blade-mcp 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for controld-blade-mcp 0.4.2
File Size Uploaded
controld_blade_mcp-0.4.2.tar.gz 107.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for controld-blade-mcp 0.4.2
File Interpreter ABI Platform
controld_blade_mcp-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 128.8 kB

Release files / controld_blade_mcp-0.4.2.tar.gz

Download URL controld_blade_mcp-0.4.2.tar.gz
Size 107.1 kB
Tags Source
SHA-256 checksum
How to use checksums
42080349df90491b26cdbb6f14c4cd77fd98e055590de75eceb0ccfd6c3adb6a
BLAKE2b-256 checksum
How to use checksums
fdb104f0ed1614baac512f5b1b53dcac3f8ea9c67f31f605a5874ff484c7cec2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 8, 2026.

Transparency log

Release files / controld_blade_mcp-0.4.2-py3-none-any.whl

Download URL controld_blade_mcp-0.4.2-py3-none-any.whl
Size 21.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e89acc3ab6a3fd80c0777f647e32599aa50ccebd658916d3f77a4dda1c5cc087
BLAKE2b-256 checksum
How to use checksums
d8d7d090ef007815bd3b762c504ba467c2211432078cee4fd727292929be7cde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page