Skip to main content
Glama

Seattle Fire Department MCP Server

by dpkirschner
README.md2.88 kB
# 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 ```bash # Install the package pip install -e . # Install development dependencies pip install -e ".[dev]" ``` ## Usage ### Running the MCP Server ```bash # Run with default settings python -m mcp_sfd.server # Or use the CLI command mcp-sfd ``` ### 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. ```json { "order": "new", "length": 100, "search": "Any", "cacheTtlSeconds": 15 } ``` #### `sfd.latest_incident` Returns the single most recent incident. ```json {} ``` #### `sfd.is_fire_active` Checks if there are any active fire incidents in Seattle. ```json { "lookbackMinutes": 120 } ``` #### `sfd.has_evacuation_orders` Scans for evacuation-related keywords in recent incidents. ```json { "lookbackMinutes": 180 } ``` ## Development ### Running Tests ```bash # Run all tests pytest # Run with coverage pytest --cov=mcp_sfd # Run specific test file pytest tests/test_normalize.py ``` ### Code Quality ```bash # Format code black mcp_sfd/ tests/ # Lint ruff check mcp_sfd/ tests/ # Type check mypy mcp_sfd/ ``` ## 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

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dpkirschner/mcp-sfd'

If you have feedback or need assistance with the MCP directory API, please join our Discord server