DevGrid MCP Server

The DevGrid MCP server lets you query your DevGrid data directly from AI assistants that support the Model Context Protocol spec.

Once connected, you can ask your AI assistant questions like "show me all critical vulnerabilities", "what components does the payments app depend on?", or "give me a portfolio overview" and it will call DevGrid tools to get live answers.

Connecting Your Client

Server URL

https://prod.api.devgrid.io/mcp

Claude Desktop

Add this to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "devgrid": {
      "url": "https://prod.api.devgrid.io/mcp"
    }
  }
}

Restart Claude Desktop. You will be prompted to log in with your DevGrid account the first time.

Claude.ai

Go to Settings, scroll to MCP Servers, click "Add Server", and enter the server URL above.

Cursor / Windsurf

Add to your .cursor/mcp.json or equivalent config:

{
  "mcpServers": {
    "devgrid": {
      "url": "https://prod.api.devgrid.io/mcp"
    }
  }
}

Claude Code

claude mcp add devgrid --transport streamable-http https://prod.api.devgrid.io/mcp

Authentication

The server uses OAuth 2.1 with PKCE. Most MCP clients handle this automatically:

  1. Your client discovers the auth configuration from the server
  2. A browser window opens for you to log in with your DevGrid credentials
  3. After login, the client stores your token and authenticates automatically

All data is scoped to your DevGrid account. You will only see entities belonging to your organization.

Permissions

Most tools are available to all authenticated users. Some tools require additional permissions:

  • Vulnerability tools require read:vulnerability
  • Repository tools require read:repository

If you get an "Access denied" error, contact your DevGrid admin to grant the required permission.

Available Tools

Search

ToolDescriptionParameters
searchSearch across entities, relationships, and blueprints in a single queryquery (required), limit (1-100, default 10), type (array of entity types to filter)

Components

ToolDescriptionParameters
components_listList software componentsname, shortId, status, limit, offset
components_getGet a component by IDid
components_dependenciesGet a component's dependency treeid, depth (1-5, default 1)

Applications

ToolDescriptionParameters
applications_listList applicationsname, status, limit, offset
applications_getGet an application by IDid

Portfolios

ToolDescriptionParameters
portfolios_listList portfoliosname, status, limit, offset
portfolios_getGet a portfolio by IDid
portfolios_appsList applications in a portfolioid, limit, offset

Technologies

ToolDescriptionParameters
technologies_listList technologiesname, limit, offset
technologies_getGet a technology by IDid
technologies_versionsList versions for a technologyid, limit, offset

Journeys

ToolDescriptionParameters
journeys_listList quality journeysname, active (boolean), limit, offset
journeys_getGet a journey with score and run countid
journeys_summaryAggregated journey scores per portfolioid

Incidents

ToolDescriptionParameters
incidents_listList incidentsstate, priority (0-7), limit, offset
incidents_getGet an incident by IDid
incidents_summaryOpen incident counts by state and priority(none)

Incident states: new, in_progress, on_hold, resolved, closed, canceled, reopened

Priority: 0 (P0, highest) through 7 (P7, lowest)

Changes

ToolDescriptionParameters
changes_listList change requestsstatus, type, riskLevel, limit, offset
changes_getGet a change by IDid

Change types: standard, normal, emergency, expedited

Risk levels: critical, high, medium, low

Statuses: draft, pending_approval, approved, scheduled, in_progress, implementing, testing, completed, closed, cancelled, failed, rolled_back

Vulnerabilities

ToolDescriptionParameters
vulnerabilities_listList vulnerabilitiesseverity, status, scanType, limit, offset
vulnerabilities_getGet a vulnerability by IDid
vulnerabilities_summaryCounts grouped by severity and status(none)
vulnerability_identifiers_listList CVE/CWE identifiersexternalSource, externalId, vulnerabilityId, limit, offset
vulnerability_identifiers_getGet a CVE/CWE identifierid

Severity levels: CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN

Statuses: detected, confirmed, dismissed, resolved

Scan types: sast, sca, container_scanning, and others

Relationships

ToolDescriptionParameters
relationships_listList relationships between entitiestype, fromId, toId, limit, offset
relationships_getGet a relationship by IDid

Common relationship types:

  • portfolio-contains-application
  • application-has-component
  • technology-has-version

Repositories

ToolDescriptionParameters
repos_listList source code repositoriesname, externalSystem, limit, offset
repos_getGet a repository by IDid

External systems: github, gitlab, bitbucket, azure-devops

Pagination

All list tools support pagination:

  • limit -- maximum results to return (1-100, default 20)
  • offset -- number of results to skip (default 0)

Responses include metadata.hasMore which is true when more results are available. To page through results:

  1. Call with { limit: 50, offset: 0 }
  2. If hasMore is true, call again with { limit: 50, offset: 50 }
  3. Continue until hasMore is false

Response Format

All tools return JSON with this structure:

List responses:

{
  "data": [ ... ],
  "metadata": {
    "count": 5,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Single-item responses:

{
  "data": { "id": "...", "name": "...", ... }
}

Search responses:

{
  "data": {
    "entities": [ ... ],
    "relationships": [ ... ],
    "blueprints": [ ... ]
  },
  "metadata": {
    "query": "auth",
    "entityCount": 3,
    "relationshipCount": 1,
    "blueprintCount": 0,
    "totalCount": 4
  }
}

Errors:

{
  "error": "Component with id abc-123 not found"
}

Prompts

The server includes pre-built workflow prompts. In clients that support them, these appear as slash commands:

PromptWhat it doesArguments
/security_reviewWalks through vulnerability data to produce a security posture summaryseverity (optional: CRITICAL, HIGH, MEDIUM, LOW)
/component_healthAssesses a component's status, dependencies, and security posturecomponentId (UUID)
/incident_triageReviews open incidents and produces a prioritized triage list(none)
/portfolio_overviewGenerates a summary of a portfolio's applications, security, and incidentsportfolioId (UUID)

Example Workflows

Find a component and its dependencies

"Find the auth-service component and show me what it depends on"

The assistant will:

  1. components_list with name: "auth-service" to find it
  2. components_get with the ID for full details
  3. components_dependencies with depth: 2 for the dependency tree

Review your security posture

"Show me all critical unresolved vulnerabilities"

The assistant will:

  1. vulnerabilities_summary for an overview
  2. vulnerabilities_list with severity: "CRITICAL" and status: "detected"
  3. vulnerability_identifiers_list to get CVE details for each

Triage incidents

"What incidents need attention right now?"

The assistant will:

  1. incidents_summary for a high-level view
  2. incidents_list with state: "new" for unacknowledged incidents
  3. incidents_get for details on high-priority items

Explore a portfolio

"Give me an overview of the payments portfolio"

The assistant will:

  1. portfolios_list with name: "payments" to find it
  2. portfolios_apps to list its applications
  3. vulnerabilities_summary and incidents_summary for health indicators

Search across everything

"Search for anything related to authentication"

The assistant will:

  1. search with query: "authentication" to find matching entities, relationships, and blueprints in one call

Troubleshooting

"Authentication required" error Your token has expired. Most clients will automatically re-authenticate. If not, disconnect and reconnect the server in your client settings.

"Access denied: missing read:vulnerability permission" Your DevGrid user account doesn't have permission for this resource. Ask your DevGrid admin to grant the required permission.

Empty results All data is scoped to your organization's account. If you're not seeing expected data, verify you're logged in with the correct DevGrid account.

Tool not found Make sure your client is connected to the correct server URL. Disconnect and reconnect if the tool list seems stale.