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 cachingLatest incident retrieval (
sfd.latest_incident
) for quick updatesFire detection (
sfd.is_fire_active
) with intelligent status analysisEvacuation monitoring (
sfd.has_evacuation_orders
) with keyword scanningRobust 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 cachingData Normalization (
normalize.py
): Converts upstream API format to standardized schemasPydantic Schemas (
schemas.py
): Type-safe data models for all inputs and outputsTool Implementations (
tools/
): Individual MCP tool logicServer (
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.