Skip to main content

FastMCP server exposing ResQ platform capabilities to AI clients

Project description

ResQ MCP: Disaster Response Intelligence for AI

CI PyPI Docker GHCR License

A production-ready Model Context Protocol (MCP) server that connects AI agents to the ResQ platform's robotics, physics simulations, and disaster telemetry.

Key Features

  • Drone Fleet Command — Real-time telemetry, sector scanning, and autonomous swarm deployment via the Hybrid Coordination Engine (HCE).
  • Predictive Intelligence — Probabilistic disaster forecasting and sector-level vulnerability mapping (PDIE).
  • Digital Twin Simulations — Physics-based RL optimization strategies for incident response (DTSOP).
  • Safe-Mode Execution — Built-in protection prevents destructive platform mutations by default.

Requirements

  • Python 3.11 or newer
  • VS Code, Cursor, Claude Desktop, or any other MCP client

Getting Started

Install the ResQ MCP server with your client. The standard config works in most tools:

{
  "mcpServers": {
    "resq": {
      "command": "uvx",
      "args": ["resq-mcp"],
      "env": {
        "RESQ_SAFE_MODE": "true"
      }
    }
  }
}
VS Code

A pre-configured .vscode/mcp.json is included in this repo — just open the project and the server is available.

Or install manually. Add to your user or workspace mcp.json:

{
  "servers": {
    "resq-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["resq-mcp"],
      "env": {
        "RESQ_SAFE_MODE": "true"
      }
    }
  }
}

For local development (from a cloned repo), replace "command": "uvx" and "args" with "command": "uv" and "args": ["run", "resq-mcp"].

Claude Desktop

Add to your claude_desktop_config.json (MCP install guide):

{
  "mcpServers": {
    "resq": {
      "command": "uvx",
      "args": ["resq-mcp"],
      "env": {
        "RESQ_API_KEY": "your-prod-token",
        "RESQ_SAFE_MODE": "true"
      }
    }
  }
}
Claude Code
claude mcp add resq -- uvx resq-mcp
Cursor

Go to Cursor SettingsMCPAdd new MCP Server. Use command type with the command uvx resq-mcp.

Or add manually to your MCP config:

{
  "mcpServers": {
    "resq": {
      "command": "uvx",
      "args": ["resq-mcp"]
    }
  }
}
Windsurf

Follow Windsurf MCP documentation. Use the standard config above.

Docker

Run the server as a container in SSE mode:

{
  "mcpServers": {
    "resq": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--init",
        "-e", "RESQ_SAFE_MODE=true",
        "resqsoftware/mcp"
      ]
    }
  }
}

Or pull from GitHub Container Registry:

docker pull ghcr.io/resq-software/pypi:latest

To run as a long-lived SSE service:

docker run -d --rm --init \
  --name resq-mcp \
  -p 8000:8000 \
  -e RESQ_SAFE_MODE=true \
  resqsoftware/mcp

Then point your MCP client at the HTTP endpoint:

{
  "mcpServers": {
    "resq": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

You can also build the image yourself:

docker build -t resq-mcp .
Local development
git clone https://github.com/resq-software/pypi.git
cd mcp
uv sync
uv run resq-mcp

Configuration

Control server behavior via environment variables or a .env file:

Variable Description Default
RESQ_API_KEY Platform authentication token resq-dev-token
RESQ_SAFE_MODE Prevents destructive mutations true
RESQ_PORT Port for SSE (networked) mode 8000
RESQ_HOST Host to bind the SSE server 0.0.0.0
RESQ_DEBUG Enable verbose logging false
RESQ_TELEMETRY_BACKEND Observability backend (none, console, jaeger, otlp) none
RESQ_OTEL_EXPORTER_OTLP_ENDPOINT OTLP exporter endpoint (when backend is otlp) http://localhost:4317
RESQ_OTEL_SERVICE_NAME Service name reported to the telemetry backend resq-mcp

Note: RESQ_API_KEY defaults to resq-dev-token for local development. No external token is needed to run the server — it works out of the box.


Security & Safety

Safe Mode is enabled by default (RESQ_SAFE_MODE=true). In this state, any tool that performs platform mutations (e.g., dispatching a drone swarm or starting a high-fidelity simulation) will raise a FastMCPError. This allows AI agents to plan missions safely without triggering real-world consequences. Disable this only when you are ready for autonomous execution.


Tools

Mission Control (HCE)

  • validate_incident — Submit a confirmation or rejection for an incident report. Supports idempotent re-submission and conflict detection for opposing validations.

    • Parameters: incident_id, is_confirmed, validation_source, correlated_pre_alert_id (optional), notes
  • update_mission_params — Push authorized mission parameters to a specific drone for an approved strategy. Includes urgency escalation, conflict guards, and idempotent re-dispatch.

    • Parameters: drone_id, strategy_id, is_urgent (optional, default false)

Simulation (DTSOP)

  • run_simulation — Queue a high-fidelity Digital Twin physics simulation (flood, wildfire, earthquake). Returns a job ID — subscribe to the resource URI for progress updates.

    • Parameters: scenario_id, sector_id, disaster_type, parameters, priority
  • get_deployment_strategy — Generate an RL-optimized drone deployment and evacuation strategy for a confirmed incident or PDIE pre-alert.

    • Parameters: incident_id

Resources

URI Description
resq://drones/active Real-time fleet status — drone types, battery levels, sector assignments.
resq://simulations/{sim_id} Simulation progress and results. Supports SSE subscriptions for push updates on state transitions.

Prompts

Prompt Description
incident_response_plan Structured crisis coordination template that guides an AI agent through situation analysis, asset allocation, and risk assessment for a given incident.

Example Workflows

Run a Flood Simulation

You:   "Run a flood simulation for Sector-3 with water level 4.2m"
Agent: Calls run_simulation → receives SIM-ABCD1234
       Subscribes to resq://simulations/SIM-ABCD1234
       Waits for status: completed
       Returns result URL and analysis

Full Incident Response

You:   "Validate incident INC-789 and deploy drones"
Agent: 1. Calls validate_incident(INC-789, confirmed=True)
       2. Calls get_deployment_strategy("INC-789")
       3. Reviews strategy with operator
       4. Calls update_mission_params("DRONE-Alpha", "STRAT-XYZ", urgent=True)
       5. Returns mission parameters and audit hash

Crisis Planning with Prompts

You:   Use the incident_response_plan prompt for INC-456
Agent: Receives structured template → calls tools → produces:
       - Situation Summary
       - Asset Allocation
       - Risk Assessment

Technical Architecture

C4Context
    title ResQ MCP Integration
    Person(ai, "AI Client", "Claude / VS Code / Cursor")
    System_Boundary(resq_boundary, "resq-mcp Server") {
        System(server, "resq-mcp Server", "FastMCP Interface")
        System_Boundary(backend, "ResQ Platform") {
            Component(dtsop, "DTSOP Engine", "Physics/RL Simulations")
            Component(hce, "HCE Engine", "Coordination Logic")
            Component(telemetry, "Drone Telemetry", "Real-time Status")
        }
    }
    Rel(ai, server, "Uses MCP (STDIO/SSE)")
    Rel(server, dtsop, "Executes Simulation")
    Rel(server, hce, "Validates Incidents")
    Rel(server, telemetry, "Subscribes to Data")

Module Overview

src/resq_mcp/
├── server.py              # FastMCP init, lifespan, background tasks
├── resources.py           # @mcp.resource() endpoints (drones, sims)
├── prompts.py             # @mcp.prompt() templates (incident response)
├── core/                  # Cross-cutting: config, errors, security, telemetry, timeout
├── drone/                 # Drone feed: scan, swarm, deployment (models + service)
├── dtsop/                 # Digital Twin: simulation, optimization (models + service + tools)
├── hce/                   # Hybrid Coordination: incidents, missions (models + service + tools)
└── pdie/                  # Predictive Intelligence: vulnerability, alerts (models + service)

Contributing

We use uv for dependency management and ruff for linting.

  1. Setup: uv sync (installs all dependencies including dev group).
  2. Test: uv run pytest
  3. Lint: uv run ruff check .

Distributed under the Apache-2.0 License. Copyright 2026 ResQ.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resq_mcp-1.2.0.tar.gz (235.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resq_mcp-1.2.0-py3-none-any.whl (57.4 kB view details)

Uploaded Python 3

File details

Details for the file resq_mcp-1.2.0.tar.gz.

File metadata

  • Download URL: resq_mcp-1.2.0.tar.gz
  • Upload date:
  • Size: 235.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resq_mcp-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e610b32f885f307d9db1a5bd6c09325613df137f97b73c36f5c9cb543a6df4f1
MD5 1cb430f39569b339ca7f9736db5022c2
BLAKE2b-256 668d2a54e23c592f2a0181dc6a92a040e4e73fad59b83950479edd06d104c4ce

See more details on using hashes here.

File details

Details for the file resq_mcp-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: resq_mcp-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 57.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resq_mcp-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c2820c067f8337f8935d305504c7683d945c02b568ebe4cb2b27c160400f805
MD5 9bd04d9e529528bc6a539d1918fa70a3
BLAKE2b-256 112b1bbfed8e4f774a82d880b44075072a94b91f72a87119ecd53afcad64fde5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page