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 issues
- UPSTREAM_TIMEOUT: Request timeouts
- SCHEMA_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.