MCP SFD - Seattle Fire Department MCP Server
A Model Context Protocol (MCP) server that provides tools for LLMs to fetch and analyze Seattle Fire Department live incident data.
Features
- Low-level API proxy (
sfd.fetch_raw
) with normalization and caching - Latest incident retrieval (
sfd.latest_incident
) for quick updates - Fire detection (
sfd.is_fire_active
) with intelligent status analysis - Evacuation monitoring (
sfd.has_evacuation_orders
) with keyword scanning - Robust error handling and retry logic
- Comprehensive data normalization
- In-memory caching with configurable TTL
Installation
Usage
Running the MCP Server
Environment Variables
SFD_BASE_URL
: Base URL for SFD API (default:https://sfdlive.com/api/data/
)DEFAULT_CACHE_TTL
: Default cache TTL in seconds (default: 15)
Available Tools
sfd.fetch_raw
Low-level proxy for the SFD API with full parameter control.
sfd.latest_incident
Returns the single most recent incident.
sfd.is_fire_active
Checks if there are any active fire incidents in Seattle.
sfd.has_evacuation_orders
Scans for evacuation-related keywords in recent incidents.
Development
Running Tests
Code Quality
Architecture
The server is built with several key components:
- HTTP Client (
http_client.py
): Handles API requests with retry logic and caching - Data Normalization (
normalize.py
): Converts upstream API format to standardized schemas - Pydantic Schemas (
schemas.py
): Type-safe data models for all inputs and outputs - Tool Implementations (
tools/
): Individual MCP tool logic - Server (
server.py
): MCP server registration and error handling
Data Normalization
The server handles complex data transformations:
- Flattens nested upstream data structures
- Converts Seattle local time to UTC
- Normalizes coordinates from various formats
- Parses unit identifiers and status information
- Standardizes boolean fields
Error Handling
All tools use standardized MCP error codes:
UPSTREAM_HTTP_ERROR
: API connectivity issuesUPSTREAM_TIMEOUT
: Request timeoutsSCHEMA_VALIDATION_ERROR
: Data parsing failures
License
MIT
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables real-time monitoring of Seattle Fire Department incident data, allowing users to check for active fires, evacuation orders, and retrieve live emergency response information through natural language queries.