MCP Hub
Back to servers

resQ MCP Server

A Model Context Protocol server for the resQ emergency response system that integrates with digital twin simulations and coordination engines. It allows users to trigger simulations, generate deployment strategies, and monitor real-time drone status for incident response analysis.

glama
Forks
1
Updated
Mar 27, 2026

ResQ PyPI Packages

CI resq-mcp resq-dsa License

Repository for all ResQ Python packages published to PyPI.

Packages

PackageDescriptionVersion
resq-mcpFastMCP server exposing ResQ platform capabilities to AI agentsPyPI
resq-dsaZero-dependency data structures & algorithmsPyPI

resq-dsa

Production-grade data structures and algorithms. Python 3.11+, zero dependencies.

Installation

pip install resq-dsa
# or
uv add resq-dsa

Usage

BloomFilter

Probabilistic set membership with configurable false positive rate.

from resq_dsa import BloomFilter

bf = BloomFilter(capacity=10_000, error_rate=0.01)
bf.add("drone-001")
bf.add("drone-002")

bf.has("drone-001")  # True
bf.has("drone-999")  # False (probably)

CountMinSketch

Probabilistic frequency estimation.

from resq_dsa import CountMinSketch

cms = CountMinSketch(epsilon=0.01, delta=0.01)
cms.increment("sensor-reading", 5)
cms.increment("sensor-reading", 3)

cms.estimate("sensor-reading")  # ~8

Graph

Directed weighted graph with BFS, Dijkstra, and A* pathfinding.

from resq_dsa import Graph

g = Graph()
g.add_edge("base", "wp-1", weight=100)
g.add_edge("wp-1", "wp-2", weight=50)
g.add_edge("base", "wp-2", weight=200)

# Breadth-first traversal
g.bfs("base")  # ['base', 'wp-1', 'wp-2']

# Shortest path (Dijkstra)
result = g.dijkstra("base", "wp-2")
# {'path': ['base', 'wp-1', 'wp-2'], 'cost': 150}

# A* with heuristic
result = g.astar("base", "wp-2", heuristic=lambda n: 0)

BoundedHeap

Bounded min-heap for top-k tracking by distance function.

from resq_dsa import BoundedHeap

heap = BoundedHeap(limit=3, dist=lambda x: x["priority"])
heap.insert({"name": "alpha", "priority": 5.0})
heap.insert({"name": "bravo", "priority": 1.0})
heap.insert({"name": "charlie", "priority": 3.0})
heap.insert({"name": "delta", "priority": 0.5})  # evicts highest

heap.peek()       # lowest priority item
heap.to_sorted()  # sorted by distance
heap.size         # 3

Trie

Prefix tree for string operations.

from resq_dsa import Trie

trie = Trie()
trie.insert("disaster")
trie.insert("dispatch")
trie.insert("distance")

trie.search("disaster")       # True
trie.search("disast")         # False
trie.starts_with("dis")       # ['disaster', 'dispatch', 'distance']

Rabin-Karp

Rolling hash string pattern matching. Returns list of starting indices.

from resq_dsa import rabin_karp

rabin_karp("the quick brown fox", "quick")  # [4]
rabin_karp("abcabcabc", "abc")              # [0, 3, 6]

resq-mcp

FastMCP server connecting AI agents to ResQ's drone fleet, predictive intelligence, and digital twin systems. See the resq-mcp README for full documentation.

pip install resq-mcp
resq-mcp  # Start in STDIO mode

Development

Each package is independent with its own pyproject.toml and virtual environment.

# resq-dsa
cd packages/resq-dsa
uv sync
uv run pytest                    # Run tests
uv run ruff check src/ tests/   # Lint

# resq-mcp
cd packages/resq-mcp
uv sync
uv run pytest                    # Run tests (unit + integration + property)
uv run ruff check src/ tests/   # Lint
uv run mypy src/                 # Type check

Contributing

  1. Fork the repo and create a feature branch
  2. Make changes in the appropriate packages/ directory
  3. Run tests and linting for the affected package
  4. Open a PR against main

License

Apache-2.0. See LICENSE for details.

Reviews

No reviews yet

Sign in to write a review