Skip to main content

dopesecurity-mcp-server

The Dope MCP is a local Model Context Protocol server that lets an AI assistant talk to your dope.security tenant — look at endpoints, read and tweak policies, and curate custom URL categories. It wraps most of the Flightdeck partner API, runs on your machine, and is read-only out of the box: nothing changes in your tenant until you explicitly turn writes on. It's currently in beta, we hope you enjoy using it.

Installation

Installation is via uvx.

Runs the server on demand. Nothing is installed globally.

Prerequisites

  1. Install uv — see Astral's install guide.

  2. Install a Python runtime with uv:

    uv python install 3.11
    

MCP client config

Add the server to your MCP client configuration:

{
  "mcpServers": {
    "dope-security": {
      "command": "uvx",
      "args": ["dopesecurity-mcp-server"],
      "env": {
        "DOPE_CLIENT_ID": "your-client-id",
        "DOPE_CLIENT_SECRET": "your-client-secret",
        "DOPE_ENABLE_MUTATIONS": "false",
        "DOPE_ENABLE_DESTRUCTIVE": "false"
      }
    }
  }
}

Three tiers of access

The tool surface is gated by two environment variables, both false by default. Tools that aren't enabled by the active combination are not registered at all — they don't exist on the MCP wire.

DOPE_ENABLE_MUTATIONS DOPE_ENABLE_DESTRUCTIVE What the agent can do
false false Read-only. Inspect endpoints, policies, custom categories. Cannot modify the tenant.
true false Read + write. Per-entry creates, updates, upserts, assigns, unassigns, and per-entry deletes. Cannot drop a whole policy or wipe a section.
true true Read + write + destructive. Adds whole-policy drops, whole-section resets to base, whole-custom-category deletes, and wipe-all-URLs.
false true Invalid — the server refuses to start.

Flightdeck RBAC still applies on top of whichever tier you enable: even when a tool is registered, Flightdeck may reject the call because your OAuth client's role doesn't permit it. Start with read-only, flip to mutations when you trust the agent's workflow, and only enable destructive when you explicitly want the agent to be able to start over.

Configuration reference

Env var CLI flag Default Description
DOPE_CLIENT_ID — — API client ID issued from the dope console. Required.
DOPE_CLIENT_SECRET — — API client secret issued from the dope console. Required.
DOPE_ENABLE_MUTATIONS --enable-mutations false Expose write tools that modify tenant state.
DOPE_ENABLE_DESTRUCTIVE --enable-destructive false Additionally expose destructive tools (whole-policy drops, whole-section resets). Requires mutations.
DOPE_TIMEOUT_SECONDS --timeout-seconds 30 HTTP timeout for Flightdeck calls.
DOPE_LOG_LEVEL --log-level INFO Log verbosity (logs go to stderr only).

DOPE_CLIENT_ID and DOPE_CLIENT_SECRET should be provided as environment variables. You can grab the credentials from the dope console.

Available tools

Endpoints (read-only)

Tool Description
search_endpoints List or search endpoints (cursor paged).

Policies (read)

Tool Description
list_policies List all policies.
get_policy_assignments Show users/groups assigned to a policy.
get_policy_restrictions Show per-category restrictions.
get_policy_exceptions Show per-category exceptions.
get_policy_url_bypass List URL bypass entries.
get_policy_application_bypass_entries List application bypass entries.

Policies (write — only when mutations enabled)

Tool Description
create_policy Create a new policy.
assign_policy_principals Add users/groups to a policy.
unassign_policy_principals Remove users/groups from a policy.
update_policy_restrictions Update per-category restrictions.
replace_policy_category_exceptions Replace exceptions for the submitted category.
upsert_policy_url_bypass Add or update URL bypass entries.
delete_policy_url_bypass_entries Delete named URL bypass entries.
upsert_policy_application_bypass Add or update application bypass entries.
delete_policy_application_bypass_entries Delete named application bypass entries.

Policies (destructive — only when both mutations and destructive are enabled)

Tool Description
delete_policy Delete a whole policy.
reset_policy_restrictions_to_base Reset all restrictions to Base.
reset_policy_url_bypass_to_base Reset URL bypass to Base.
reset_policy_application_bypass_to_base Reset application bypass to Base.

Custom categories (read)

Tool Description
list_custom_categories List all custom categories.
get_custom_category_urls List URLs in a custom category.

Custom categories (write — only when mutations enabled)

Tool Description
create_custom_category Create a new custom category.
add_urls_to_custom_category Add URLs to a custom category.
delete_single_url_from_custom_category Remove one URL from a category.

Custom categories (destructive — only when both mutations and destructive are enabled)

Tool Description
delete_custom_category Delete a whole custom category.
delete_all_urls_from_custom_category Wipe every URL from a category.

Developing

Setup and verification

From the repository root:

make install      # uv sync --locked
make check        # lint + typecheck + unit tests
make integration-tests  # requires DOPE_MCP_TESTS_CLIENT_SECRET
uv run dopesecurity-mcp-server --help

Run make help to see all available targets.

Known limitations

  • assign_policy_principals and unassign_policy_principals are read-merge-write on top of Flightdeck's overwrite-only assignments endpoint, so concurrent edits to the same policy may be clobbered.
  • Pagination is cursor-based; the mcp server does not auto-fetch all pages.

Flightdeck routes deliberately omitted from MCP

Some Flightdeck partner API routes are intentionally not exposed as MCP tools and will not be added. This is the list — treat it as a "don't bother proposing this" register.

  • PUT /custom_categories/{name}/urls — overwrite-all semantics. An agent calling this with a partial list silently destroys every URL it didn't mention. Use add_urls_to_custom_category, delete_single_url_from_custom_category, and delete_all_urls_from_custom_category instead, which force the agent to state intent explicitly.

Running a local checkout from an MCP client

To point an MCP client (Amp, Claude Desktop, etc.) at your local checkout instead of the published uvx package, replace the command/args so the client launches the server through uv run --directory:

{
  "mcpServers": {
    "dope-security-dev": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/dopemcp",
        "dopesecurity-mcp-server"
      ],
      "env": {
        "DOPE_CLIENT_ID": "your-client-id",
        "DOPE_CLIENT_SECRET": "your-client-secret",
        "DOPE_ENABLE_MUTATIONS": "true",
        "DOPE_ENABLE_DESTRUCTIVE": "true",
        "DOPE_LOG_LEVEL": "DEBUG"
      }
    }
  }
}

Replace /absolute/path/to/dopemcp with the path to your clone. The MCP client spawns the server over stdio on demand.

Metadata

Release files for dopesecurity-mcp-server 0.2.0

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

Source distribution (sdist)

Source distribution for dopesecurity-mcp-server 0.2.0
File Size Uploaded Provenance Actions
dopesecurity_mcp_server-0.2.0.tar.gz 29.7 kB With provenance Details for dopesecurity_mcp_server-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dopesecurity-mcp-server 0.2.0
File Interpreter ABI Platform Actions
dopesecurity_mcp_server-0.2.0-py3-none-any.whl Python 3 none any Details for dopesecurity_mcp_server-0.2.0-py3-none-any.whl

Total release size: 69.2 kB

Release files / dopesecurity_mcp_server-0.2.0.tar.gz

Download URL dopesecurity_mcp_server-0.2.0.tar.gz
Size 29.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a1ab3fb672869a083dc63146d0bcaa8e69d8035a51b2e5c3a1ea399696c9979c
BLAKE2b-256 checksum
How to use checksums
ae26c17ec37387b07654b8a7d42adcfaab081bdfca07a06424ec63771ef93313
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 6, 2026.

Transparency log

Release files / dopesecurity_mcp_server-0.2.0-py3-none-any.whl

Download URL dopesecurity_mcp_server-0.2.0-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c4ad5cb06f63200d152cf4585eb0384e43caa050cfab77f7093684136e34262
BLAKE2b-256 checksum
How to use checksums
690a2c74eeb1b57449a2540adabca3377df71a537f6b7bec6d8aa45e1d244892
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 6, 2026.

Transparency log

Security for dopesecurity-mcp-server 0.2.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dopesecurity_mcp_server-0.2.0.tar.gz

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 Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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