Skip to main content

What You Can Do

Connect Cursor, Claude Code, Codex, or another MCP client to MindFort and work with your organization’s security program from your agent. The MindFort MCP server exposes an explicit, organization-scoped tool catalog for:
  • Browsing, creating, updating, and deleting authorized targets
  • Managing write-only test credentials for web applications and APIs
  • Reviewing secure-anchor coverage and managing user-defined anchors
  • Starting, monitoring, and canceling assessments
  • Browsing, triaging, commenting on, and retesting findings
  • Reading security metrics, distributions, aging, remediation, and health scores
  • Generating, polling, and downloading reports
MindFort remains the source of truth. Your agent receives positive-allowlisted public fields and uses resource IDs returned by MindFort instead of guessing identifiers.

MCP Use Cases

MCP vs. Platform Patching

Use Patching when you want MindFort to generate a pull request directly from the platform. Use MCP when you want your local AI agent to combine MindFort evidence with your repository checkout, build system, and engineering conventions.

Install

Cursor

Install in Cursor Or add the server to .cursor/mcp.json:

Claude Code

Then run /mcp inside Claude Code to sign in. Or add the server to .mcp.json:

Codex

Or add the server to ~/.codex/config.toml:

Other MCP Clients

Use the Streamable HTTP endpoint:
MindFort uses stateless Streamable HTTP: clients send MCP requests with POST /mcp. The legacy HTTP+SSE transport and the old GET /mcp stream and DELETE /mcp session methods are not supported.

Sign In and Authorization

MindFort MCP uses browser-based OAuth with your existing MindFort account. You do not need an API key.
  1. Add the MindFort MCP server.
  2. Complete the browser sign-in when your client prompts you.
  3. Select the intended MindFort organization.
  4. Ask the agent to call get_current_context and confirm the organization, role, and enabled capabilities.
Each MCP request revalidates your active WorkOS organization membership and effective feature flags. Removing or deactivating a membership takes effect without waiting for the OAuth token to expire.
Every active organization member receives the baseline registered MCP catalog. Feature-gated tools and credential variants appear only when their organization has the corresponding feature enabled. MindFort does not expose billing administration, API-key administration, organization membership, or role administration over MCP.

Start with Context

For reliable agent workflows, use this sequence:
  1. Call get_current_context to confirm the selected organization and available capabilities.
  2. Call list_targets, then get_target before target-specific work.
  3. Reuse target, credential, assessment, finding, anchor, and report IDs returned by MindFort.
  4. Review tool warnings before starting active testing or performing destructive actions.
  5. Poll asynchronous operations with their corresponding read tool.
The server also exposes the fixed resource mindfort://guides/start-here. MCP clients that support resources can discover and read it for the compact operating sequence. For detailed semantics, use this documentation and the agent-readable documentation index.

Capabilities and Feature Gating

The tool catalog is explicit and may differ by organization.

Complete tool catalog

The baseline and feature-gated catalog contains the following tools. Call get_current_context first because feature-gated tools may be absent for the selected organization. Feature-gated capabilities include:
  • network-targets: network target creation and assessment inputs
  • sms-credentials: SMS credential variants, provisioning metadata, and code checks
  • finding-severity-overrides: setting severity overrides; clearing an existing override remains available
The server refreshes membership and feature state on each request. Some clients cache tool discovery for a conversation or process, so reconnect or start a new chat after a catalog-changing deployment or entitlement change.

Targets and Credentials

Web application and API targets require an HTTP(S) web_domain. Network targets require an ip_address and are available only when enabled for the organization. Targets created through REST or MCP start unverified; complete ownership or network verification in the MindFort dashboard before active testing. Credential reads return metadata only. Passwords, API-key values, TOTP seeds, one-time codes, and pending inbox IDs are never returned. For API targets, api_key credentials require nonblank target-level api_auth_instructions that explain:
  • The validation route and HTTP method
  • The required request shape
  • Where the key is placed, such as a bearer token, header, query parameter, or JSON field
  • The expected successful response
Secrets are write-only. Rotate a secret through the update tool instead of expecting to read it back.

Assessments and Stage Progress

Starting an assessment begins active security testing and may consume plan capacity. Use only a target the user intends to test. get_assessment returns the canonical stage_progress roster. It merges the current expected plan with every stage recorded on that assessment:
  • NOT_STARTED means no state has been recorded.
  • RUNNING or ACTIVE means work is in progress.
  • Other values are terminal stage outcomes.
  • Active testing stages may include customer-safe executor status, attempt, and timing fields.
Top-level created_at, updated_at, started_at, and completed_at describe the full run. Failed runs may include a bounded failure_reason. Cancellation accepts an optional cancel_reason for the audit trail.

Findings and Retests

The list_findings tool accepts the same filters as GET /v1/findings. Use total for the full matching count rather than the first page length. To match the dashboard Open tab, use status=ACTIVE and exclude_secured=true. Retests are asynchronous and may be started for ACTIVE, RESOLVED, or ARCHIVED findings. Poll get_finding:
  • QUEUED or RUNNING: execution is still active.
  • FAILED: retest_failure_reason explains why execution could not complete.
  • COMPLETED: validation finished and the result was applied. A fixed finding becomes RESOLVED; a still-vulnerable finding becomes ACTIVE.
See Findings API for REST examples and field details.

Pagination

MCP list tools use opaque cursors rather than REST offsets. When a result includes next_cursor, pass it back unchanged with the same filters. Cursors are bound to the operation and filter set, so changing filters requires starting a new pagination sequence. tools/list returns the complete authorized catalog and is not paginated.

Errors and Sensitive Actions

Tool failures include a stable error code, safe message, retry guidance when applicable, and a request ID for support correlation. Validation errors may also include field-level details. Common actionable codes include:
  • target_not_verified
  • api_auth_instructions_required
  • assessment_already_running
  • assessment_credits_insufficient
  • assessment_queue_loading
  • retest_already_running
Destructive tools have prominent warnings and MCP destructive annotations. Invoking the tool performs the action after normal validation; MindFort does not add a second approval handshake. Review target names, resource IDs, and warnings before deletion, cancellation, archival, or active testing.

Troubleshooting

Confirm the URL is exactly https://api.mindfort.app/mcp, your network allows HTTPS, and your client supports Streamable HTTP. Restart the client and try again.
Clear the MCP connection and add it again. In Claude Code, run /mcp, select MindFort, and re-authenticate. If the issue continues, contact support@mindfort.ai.
Call get_current_context to confirm the selected organization and its public feature flags. Then reconnect or start a new chat so the client refreshes tool discovery.
This is expected when list_findings uses the default status=ACTIVE. Pass status=RESOLVED or status=ARCHIVED to browse those lifecycle states.
The dashboard Open tab hides informational secured probes by default. Pass exclude_secured=true and status=ACTIVE to match it. Use assessment_id when comparing one assessment.
Pass next_cursor back unchanged with the same tool and filters. Start over without a cursor after changing filters.