StackHawk MCP Server

StackHawk MCP Server

A Model Context Protocol (MCP) server for integrating with StackHawk's security scanning platform. Helps developers set up StackHawk, run security scans, and triage findings to fix vulnerabilities — all from within an LLM-powered IDE or chat.

Category
访问服务器

README

StackHawk MCP Server

Current Version: 1.2.5 Requires Python 3.10 or higher

A Model Context Protocol (MCP) server for integrating with StackHawk's security scanning platform. Helps developers set up StackHawk, run security scans, and triage findings to fix vulnerabilities — all from within an LLM-powered IDE or chat.


Table of Contents


Features

  • Setup: Detect your project, create a StackHawk application, and generate a ready-to-scan stackhawk.yml
  • Scan: Run StackHawk scans directly from your IDE or chat (with install help if the CLI is missing)
  • Triage: Get actionable findings at or above your failure threshold for remediation
  • Validate: Check YAML configs against the official schema and validate field paths to prevent hallucination
  • Custom User-Agent: All API calls include a versioned User-Agent header

Installation

  1. Install via pip (make sure you have write permission to your current python environment):
    > pip install stackhawk-mcp
    # Requires Python 3.10 or higher
    

Or Install via pip in a virtual env:

> python3 -m venv ~/.virtualenvs/mcp
> source ~/.virtualenvs/mcp/bin/activate
> (mcp) pip install stackhawk-mcp
# Requires Python 3.10 or higher

Or Install via pip using pyenv:

> pyenv shell 3.10.11
> pip install stackhawk-mcp
# Requires Python 3.10 or higher

Or Install locally from this repo:

> pip install --user .
# Run this command from the root of the cloned repository
  1. Set your StackHawk API key:
    > export STACKHAWK_API_KEY="your-api-key-here"
    

Usage

Running the MCP Server

python -m stackhawk_mcp.server

Running the HTTP Server (FastAPI)

python -m stackhawk_mcp.http_server

Running Tests

pytest

Integrating with LLMs and IDEs

StackHawk MCP can be used as a tool provider for AI coding assistants and LLM-powered developer environments, enabling security scanning setup, YAML validation, and vulnerability triage directly in your workflow.

Cursor (AI Coding Editor)

  • Setup:
    • Follow the installation instructions above to install stackhawk-mcp in your python environment.
    • In Cursor, go to Cursor Settings->Tools & Integrations->MCP Tools
    • Add a "New MCP Server" with the following json, depending on your setup:
      • Using a virtual env at ~/.virtualenvs/mcp:
        {
          "mcpServers": {
            "stackhawk": {
              "command": "/home/bobby/.virtualenvs/mcp/bin/python",
              "args": ["-m", "stackhawk_mcp.server"],
              "env": {
                "STACKHAWK_API_KEY": "${env:STACKHAWK_API_KEY}"
              },
              "disabled": false
            }
          }
        }
        
      • Using pyenv:
        {
          "mcpServers": {
            "stackhawk": {
              "command": "/home/bobby/.pyenv/versions/3.10.11/bin/python3",
              "args": ["-m", "stackhawk_mcp.server"],
              "env": {
                "STACKHAWK_API_KEY": "${env:STACKHAWK_API_KEY}"
              },
              "disabled": false
            }
          }
        }
        
      • Or use python directly:
        {
          "mcpServers": {
            "stackhawk": {
              "command": "python3",
              "args": ["-m", "stackhawk_mcp.server"],
              "env": {
                "STACKHAWK_API_KEY": "${env:STACKHAWK_API_KEY}"
              }
            }
          }
        }
        
      • Then make sure the "stackhawk" MCP Tool is enabled
  • Usage:
    • Use Cursor's tool invocation to call StackHawk MCP tools (e.g., vulnerability search, YAML validation).
    • Example prompt: Validate this StackHawk YAML config for errors.

OpenAI, Anthropic, and Other LLMs

  • Setup:
    • Deploy the MCP HTTP server and expose it to your LLM system (local or cloud).
    • Use the LLM's tool-calling or function-calling API to connect to the MCP endpoint.
    • Pass the required arguments (e.g., org_id, yaml_content) as specified in the tool schemas.
  • Example API Call:
    {
      "method": "tools/call",
      "params": {
        "name": "validate_stackhawk_config",
        "arguments": {"yaml_content": "..."}
      }
    }
    
  • Best Practices:
    • Use anti-hallucination tools to validate field names and schema compliance.
    • Always check the tool's output for warnings or suggestions.

IDEs like Windsurf

  • Setup:
    • Add StackHawk MCP as a tool provider or extension in your IDE, pointing to the local or remote MCP server endpoint.
    • Configure environment variables as needed.
  • Usage:
    • Invoke setup, scanning, validation, and triage tools directly from the IDE's command palette or tool integration panel.

General Tips

  • Ensure the MCP server is running and accessible from your LLM or IDE environment.
  • Review the Available Tools & API section for supported operations.
  • For advanced integration, see the example tool usage in this README or explore the codebase for custom workflows.

GitHub Copilot Agents

StackHawk can be added to the GitHub Coding Agent as an MCP server or as its own GitHub Custom Agent.

Add to GitHub Coding Agent

You can add StackHawk MCP to the GitHub Copilot Coding Agent. This gives the agent all the stackhawk/ tools.

StackHawk MCP installation into the Coding Agent

General instructions on GitHub

For StackHawk MCP, the MCP Configuration JSON should look something like this:

{
  "mcpServers": {
    "stackhawk": {
      "type": "local",
      "tools": [
        "*"
      ],
      "command": "uvx",
      "args": [
        "stackhawk-mcp"
      ],
      "env": {
        "STACKHAWK_API_KEY": "COPILOT_MCP_STACKHAWK_API_KEY"
      }
    }
  }
}

Then in the Repository's Settings->Environments->copilot->Environment Secrets, add COPILOT_MCP_STACKHAWK_API_KEY with your StackHawk API Key.

Installation verification instructions

StackHawk Onboarding Agent as a GitHub Copilot Custom Agent

You can the StackHawk Onboarding Agent as a custom agent at the enterprise, organization, or repository level in GitHub. When added, the StackHawk Onboarding Agent becomes a selectable option in the Copilot Agent Chat with context to help with onboarding, plus it installs stackhawk-mcp so the agent has access to all of those tools.

StackHawk Onboarding Agent installation

The general approach is to take the StackHawk Onboarding Agent defintion and apply it to either the desired repository, enterprise, or organization in GitHub.

Note that the mcp-servers block in the StackHawk Onboarding Agent definition references an environment variable called COPILOT_MCP_STACKHAWK_API_KEY. Go to the Repository's Settings->Environments->copilot->Environment Secrets, add COPILOT_MCP_STACKHAWK_API_KEY with your StackHawk API Key.


Configuration

  • All HTTP requests include a custom User-Agent header:
    User-Agent: StackHawk-MCP/{version}
    
  • The version is set in stackhawk_mcp/server.py as STACKHAWK_MCP_VERSION.
  • Set your API key via the STACKHAWK_API_KEY environment variable.

Available Tools

The MCP server exposes 7 tools organized around the developer workflow:

Phase Tool Description
Discover get_organization_info Get org details, teams, and applications
Discover list_applications List applications in an organization
Setup setup_stackhawk_for_project Detect language, find/create app, generate stackhawk.yml
Validate validate_stackhawk_config Validate YAML against the official StackHawk schema
Validate validate_field_exists Check if a field path is valid in the schema (anti-hallucination)
Scan run_stackhawk_scan Run a StackHawk scan via the CLI (returns install help if CLI is missing)
Triage get_app_findings_for_triage Get findings at/above the configured failure threshold

Example Tool Usage

# Set up StackHawk for a project
result = await server.call_tool("setup_stackhawk_for_project", {"host": "http://localhost:3000"})

# Validate a YAML config
result = await server.call_tool("validate_stackhawk_config", {"yaml_content": "..."})

# Run a scan
result = await server.call_tool("run_stackhawk_scan", {})

# Get findings to triage
result = await server.call_tool("get_app_findings_for_triage", {})

Official Schema URL: https://download.stackhawk.com/hawk/jsonschema/hawkconfig.json


Testing & Development

Running All Tests

pytest

Running Individual Tests

pytest tests/test_ux_improvements.py
pytest tests/test_user_scenarios.py

Code Formatting

black stackhawk_mcp/

Type Checking

mypy stackhawk_mcp/

Example Configurations

Basic Configuration

app:
  applicationId: "12345678-1234-1234-1234-123456789012"
  env: "dev"
  host: "http://localhost:3000"
  name: "Development App"
  description: "Local development environment"

Production Configuration with Authentication

app:
  applicationId: "87654321-4321-4321-4321-210987654321"
  env: "prod"
  host: "https://myapp.com"
  name: "Production App"
  description: "Production environment"
  authentication:
    type: "form"
    username: "your-username"
    password: "your-password"
    loginUrl: "https://myapp.com/login"
    usernameField: "username"
    passwordField: "password"

hawk:
  spider:
    base: true
    ajax: false
    maxDurationMinutes: 30
  scan:
    maxDurationMinutes: 60
    threads: 10
  startupTimeoutMinutes: 5
  failureThreshold: "high"

tags:
  - name: "environment"
    value: "production"
  - name: "application"
    value: "myapp"

Contributing

Contributions are welcome! Please open issues or pull requests for bug fixes, new features, or documentation improvements.


License

Apache License 2.0. See LICENSE for details.

Release and Version Bumping

Version bumps are managed via the "Prepare Release" GitHub Actions workflow. When triggering this workflow, you can select whether to bump the minor or major version. The workflow will automatically update version files, commit, and push the changes to main.

Note: The workflow is protected against infinite loops caused by automated version bump commits.

GitHub Actions Authentication

All CI/CD git operations use a GitHub App token for authentication. The git user and email are set from the repository secrets HAWKY_APP_USER and HAWKY_APP_USER_EMAIL.

Workflow Protections

Workflows are designed to skip jobs if the latest commit is an automated version bump, preventing workflow loops.

How to Trigger a Release

  1. Go to the "Actions" tab on GitHub.
  2. Select the "Prepare Release" workflow.
  3. Click "Run workflow" and choose the desired bump type (minor or major).
  4. The workflow will handle the rest!

<!-- mcp-name: com.stackhawk/stackhawk -->

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选