{"id":48254963,"url":"https://github.com/dathere/fbi-crime-data-mcp","last_synced_at":"2026-05-31T14:00:33.083Z","repository":{"id":348832242,"uuid":"1199931871","full_name":"dathere/fbi-crime-data-mcp","owner":"dathere","description":"FBI Crime Data MCP Server","archived":false,"fork":false,"pushed_at":"2026-05-31T12:17:35.000Z","size":424,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T12:20:41.630Z","etag":null,"topics":["crime","fbi","mcp","opendata"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dathere.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T21:27:49.000Z","updated_at":"2026-05-31T12:17:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dathere/fbi-crime-data-mcp","commit_stats":null,"previous_names":["dathere/fbi-crime-data-mcp"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dathere/fbi-crime-data-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dathere%2Ffbi-crime-data-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dathere%2Ffbi-crime-data-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dathere%2Ffbi-crime-data-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dathere%2Ffbi-crime-data-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dathere","download_url":"https://codeload.github.com/dathere/fbi-crime-data-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dathere%2Ffbi-crime-data-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33733754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crime","fbi","mcp","opendata"],"created_at":"2026-04-04T21:05:20.947Z","updated_at":"2026-05-31T14:00:33.071Z","avatar_url":"https://github.com/dathere.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FBI Crime Data MCP Server\n\n[![PyPI](https://img.shields.io/pypi/v/fbi-crime-data-mcp)](https://pypi.org/project/fbi-crime-data-mcp/)\n[![CI](https://github.com/dathere/fbi-crime-data-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/dathere/fbi-crime-data-mcp/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/dathere/fbi-crime-data-mcp/graph/badge.svg)](https://codecov.io/gh/dathere/fbi-crime-data-mcp)\n\nAn MCP (Model Context Protocol) server that provides access to the [FBI's Crime Data Explorer](https://cde.ucr.cjis.gov/LATEST/webapp/#/pages/home) [API](https://cde.ucr.cjis.gov/LATEST/webapp/#/pages/docApi).\n\nQuery crime statistics, arrest data, hate crimes, NIBRS incidents, law enforcement employment, and more — directly from any MCP-compatible client.\n\nCreated for data journalists, researchers, and anyone interested in exploring US crime data with the power of language models. Initially created for use by the [Policy Analyst Agent](https://github.com/dathere/qsv/blob/master/.claude/skills/agents/policy-analyst.md) of the [qsv Claude Cowork plugin](https://github.com/dathere/qsv?tab=readme-ov-file#qsv-blazing-fast-data-wrangling-toolkit).\n\n## Features\n\n- **17 tools** covering a wide range of crime data topics\n  - Crime trends and Summary Reporting System (SRS) crime data\n  - National Incident Based Reporting System (NIBRS) incident-based data and national estimates\n  - Arrest statistics with demographic breakdowns\n  - Hate crime incidents by bias motivation\n  - Expanded homicide and property crime details\n  - Police employment, Law Enforcement Officers Killed and Assaulted (LEOKA), Law Enforcement Suicide Data Collection (LESDC), and use of force\n  - Agency lookup, reference data, cache management, and spillover reading\n- **Geographic query levels** — national, state, and agency for most tools; some also support region (`get_police_employment`, `get_nibrs_estimation`) or agency-type / population-size breakdowns (`get_nibrs_estimation`) — all with automatic parameter validation\n- **Smart yearly aggregation** — monthly API data is automatically rolled up into yearly totals (sums for counts, averages for rates, last value for population), with an option for monthly granularity\n- **Tiered disk-backed caching** — 90-day time-to-live (TTL) for stable data (trends, reference, summaries, NIBRS estimation), 30-day TTL for dynamic data (incidents, arrests, agency lookups), and 1-day TTL for the homepage summary (refresh dates change frequently)\n- **Spillover handling** — responses exceeding 128K characters are saved to disk with a preview returned, so large queries are never silently truncated\n- **Input validation** — date format/ordering checks, offense and bias code validation, and level-based parameter requirements with clear error messages\n- **Sliding-window rate limiting** — 1,000 requests/hour with transparent wait-time feedback\n- **Reference tools** for agency lookups (by state, Originating Agency Identifier (ORI), or district with name filtering) and code translations\n\n## Quick Start\n\n1. **Get a free API key** from [api.data.gov](https://api.data.gov/signup/)\n\n2. **Run with Claude Desktop** — add to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"fbi-crime-data\": {\n      \"command\": \"uvx\",\n      \"args\": [\"fbi-crime-data-mcp\"],\n      \"env\": {\n        \"FBI_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n3. **Or run directly:**\n\n```bash\nFBI_API_KEY=your-key uvx fbi-crime-data-mcp\n```\n\n## Available Tools (17)\n\n### Core Crime Data\n| Tool | Description |\n|------|-------------|\n| [`get_summarized_crime_data`](src/fbi_crime_data_mcp/tools/summarized.py) | SRS crime data — rates, actuals, clearances for violent crime, property crime, homicide, rape, robbery, assault, burglary, larceny, motor vehicle theft, arson |\n| [`get_nibrs_data`](src/fbi_crime_data_mcp/tools/nibrs.py) | NIBRS incident-based data for 70+ offense types |\n| [`get_arrest_data`](src/fbi_crime_data_mcp/tools/arrests.py) | Arrest statistics by offense with optional demographic breakdowns (male, female, sex, race) |\n| [`get_crime_trends`](src/fbi_crime_data_mcp/tools/trends.py) | National crime trend percent changes across 10 crime types |\n| [`get_nibrs_estimation`](src/fbi_crime_data_mcp/tools/nibrs_estimation.py) | NIBRS national estimates by state, region, agency type, or population size |\n\n### Specialized Crime Data\n| Tool | Description |\n|------|-------------|\n| [`get_hate_crime_data`](src/fbi_crime_data_mcp/tools/hate_crime.py) | Hate crime incidents by bias motivation (30+ categories) |\n| [`get_expanded_homicide_data`](src/fbi_crime_data_mcp/tools/homicide.py) | Supplementary Homicide Reports — victim/offender demographics, weapons, circumstances |\n| [`get_expanded_property_data`](src/fbi_crime_data_mcp/tools/property_data.py) | Expanded property crime details — stolen/recovered values for burglary, larceny, motor vehicle theft (MVT), robbery |\n\n### Law Enforcement Data\n| Tool | Description |\n|------|-------------|\n| [`get_police_employment`](src/fbi_crime_data_mcp/tools/employment.py) | Officer and civilian employee counts by gender, rates per 1,000 population |\n| [`get_leoka_data`](src/fbi_crime_data_mcp/tools/leoka.py) | Officers killed and assaulted — weapons, circumstances, demographics |\n| [`get_lesdc_data`](src/fbi_crime_data_mcp/tools/lesdc.py) | Law enforcement suicide data — demographics, race, duty status, and more |\n| [`get_use_of_force_data`](src/fbi_crime_data_mcp/tools/use_of_force.py) | Use of force incidents resulting in death, serious injury, or firearm discharge |\n\n### Overview\n| Tool | Description |\n|------|-------------|\n| [`get_cde_homepage_summary`](src/fbi_crime_data_mcp/tools/homepage.py) | CDE homepage summary — mission statement, navigation, data freshness, date ranges, and national crime trends |\n\n### Reference \u0026 Lookup\n| Tool | Description |\n|------|-------------|\n| [`lookup_agency`](src/fbi_crime_data_mcp/tools/agency.py) | Find law enforcement agencies by state, ORI code, or judicial district |\n| [`get_reference_data`](src/fbi_crime_data_mcp/tools/reference.py) | State lists, offense/bias code lookups, data refresh dates |\n| [`manage_cache`](src/fbi_crime_data_mcp/tools/cache.py) | View cache stats, clear all entries, or clear only expired entries |\n| [`read_spillover`](src/fbi_crime_data_mcp/tools/spillover_reader.py) | Read spillover files saved when tool responses exceed the size limit |\n\n## Large Responses\n\nWhen a tool response exceeds 128,000 characters, the full result is saved to `~/.cache/fbi-crime-data-mcp/spillover/` and a truncated preview is returned with the file path. To avoid this, narrow your query (shorter date range, specific state/agency).\n\n## Data Sources\n\nAll data comes from the FBI's [Crime Data Explorer](https://cde.ucr.cjis.gov/) API, which provides Uniform Crime Reporting (UCR) data including both the Summary Reporting System (SRS) and the National Incident-Based Reporting System (NIBRS).\n\n## API Rate Limits\n\n- **Registered key**: 1,000 requests per hour (rolling window)\n- **DEMO_KEY**: 30 requests per IP per hour\n\nThe server includes a built-in rate limiter (1,000 req/hr). The DEMO_KEY limit is enforced API-side.\n\n## Development\n\n```bash\n# Install dependencies\nuv sync\n\n# Run the server locally\nFBI_API_KEY=your-key uv run fbi-crime-data-mcp\n\n# Run tests\nuv run pytest\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdathere%2Ffbi-crime-data-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdathere%2Ffbi-crime-data-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdathere%2Ffbi-crime-data-mcp/lists"}