fbi-crime-mcp-server

v0.2.0 pre-1.0

Exposes the FBI Crime Data Explorer API — UCR crime estimates, NIBRS incident breakdowns, hate crimes, arrests, human trafficking, and agency participation data via MCP. STDIO or Streamable HTTP.

fbi-crime.caseyjhand.com/mcp
claude mcp add --transport http fbi-crime-mcp-server https://fbi-crime.caseyjhand.com/mcp
codex mcp add fbi-crime-mcp-server --url https://fbi-crime.caseyjhand.com/mcp
{
  "mcpServers": {
    "fbi-crime-mcp-server": {
      "url": "https://fbi-crime.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http fbi-crime-mcp-server https://fbi-crime.caseyjhand.com/mcp
{
  "mcpServers": {
    "fbi-crime-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://fbi-crime.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "fbi-crime-mcp-server": {
      "type": "http",
      "url": "https://fbi-crime.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://fbi-crime.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

12

fbi_list_code_table

[UNAVAILABLE] The FBI code table endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For code reference values, consult the FBI CDE website at cde.ucr.cjis.gov.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_list_code_table",
    "arguments": {
      "table": "<table>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "table": {
      "type": "string",
      "enum": [
        "offenses",
        "bias_motivation",
        "location_type",
        "weapon_type",
        "population_group",
        "victim_type",
        "prop_desc",
        "resident_status",
        "relationship",
        "circumstance"
      ],
      "description": "Code table name (unused — endpoint unavailable)."
    }
  },
  "required": [
    "table"
  ],
  "additionalProperties": false
}
view source ↗

fbi_search_agencies

open-world

[UNAVAILABLE] The FBI agency search endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For agency ORI codes, consult the FBI CDE website directly at cde.ucr.cjis.gov.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_search_agencies",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "state_abbr": {
      "description": "State abbreviation (unused — endpoint unavailable).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "agency_type": {
      "description": "Agency type (unused).",
      "type": "string",
      "enum": [
        "City",
        "County",
        "Federal",
        "State Police",
        "University or College",
        "Tribal",
        "Other"
      ]
    },
    "city": {
      "description": "City name (unused).",
      "type": "string"
    },
    "population_group": {
      "description": "Population group code (unused).",
      "type": "string"
    },
    "page": {
      "default": 1,
      "description": "Page number (unused).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "default": 25,
      "description": "Results per page (unused).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "page",
    "per_page"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_agency

open-world

[UNAVAILABLE] The FBI agency profile endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For agency details, consult the FBI CDE website at cde.ucr.cjis.gov.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_agency",
    "arguments": {
      "ori": "<ori>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "ori": {
      "type": "string",
      "minLength": 9,
      "maxLength": 9,
      "description": "9-character ORI code (unused — endpoint unavailable)."
    }
  },
  "required": [
    "ori"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_participation

open-world

[UNAVAILABLE] The FBI UCR/NIBRS participation endpoint has been decommissioned. Both the UCR legacy backend and the CDE /LATEST/participation/ paths return 404. This tool will return an error on every call. For participation data, consult the FBI CDE website at cde.ucr.cjis.gov or download bulk data files.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_participation",
    "arguments": {
      "scope": "<scope>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state",
        "agency"
      ],
      "description": "Scope (unused)."
    },
    "state_abbr": {
      "description": "State abbreviation (unused).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "year": {
      "description": "Year (unused).",
      "type": "integer",
      "minimum": 1960,
      "maximum": 2030
    },
    "nibrs_only": {
      "description": "NIBRS filter (unused).",
      "type": "boolean"
    },
    "page": {
      "default": 1,
      "description": "Page (unused).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "default": 50,
      "description": "Per page (unused).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "scope",
    "page",
    "per_page"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_crime_estimates

open-world

Monthly offense rates (per 100k population) and raw counts for national, state, or agency scope. Data comes from the FBI Crime Data Explorer summarized endpoint. Returns month-by-month data for the requested offense and date range. Use scope "national" or "state" for aggregate trends; scope "agency" for a single law enforcement agency by ORI code. Offense options: violent-crime, property-crime, robbery, burglary, larceny, motor-vehicle-theft, arson, aggravated-assault, rape, homicide.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_crime_estimates",
    "arguments": {
      "scope": "<scope>",
      "offense": "<offense>",
      "from_year": "<from_year>",
      "to_year": "<to_year>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state",
        "agency"
      ],
      "description": "Geographic scope: national, state (requires state_abbr), or agency (requires ori)."
    },
    "offense": {
      "type": "string",
      "enum": [
        "violent-crime",
        "property-crime",
        "robbery",
        "burglary",
        "larceny",
        "motor-vehicle-theft",
        "arson",
        "aggravated-assault",
        "rape",
        "homicide"
      ],
      "description": "Offense type: violent-crime, property-crime, robbery, burglary, larceny, motor-vehicle-theft, arson, aggravated-assault, rape, or homicide."
    },
    "state_abbr": {
      "description": "Two-letter state abbreviation (e.g. CA). Required when scope is \"state\".",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "ori": {
      "description": "9-character ORI agency code. Required when scope is \"agency\".",
      "type": "string",
      "minLength": 9,
      "maxLength": 9
    },
    "from_year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2030,
      "description": "Start year of the data range (inclusive). The API uses monthly granularity."
    },
    "from_month": {
      "default": 1,
      "description": "Start month (1–12). Defaults to January.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "to_year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2030,
      "description": "End year of the data range (inclusive)."
    },
    "to_month": {
      "default": 12,
      "description": "End month (1–12). Defaults to December.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    }
  },
  "required": [
    "scope",
    "offense",
    "from_year",
    "from_month",
    "to_year",
    "to_month"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_agency_offenses

open-world

Monthly offense rates and counts for a specific law enforcement agency (by ORI code), a state, or the national scope. Data comes from the FBI CDE summarized endpoint. Returns per-100k rates and raw actuals by month. The original UCR per-agency breakdown endpoint has been decommissioned — this tool uses the summarized endpoint which provides comparable trend data. Offense options: violent-crime, property-crime, robbery, burglary, larceny, motor-vehicle-theft, arson, aggravated-assault, rape, homicide.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_agency_offenses",
    "arguments": {
      "scope": "<scope>",
      "offense": "<offense>",
      "from_year": "<from_year>",
      "to_year": "<to_year>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state",
        "agency"
      ],
      "description": "Data scope: national, state (requires state_abbr), or agency (requires ori)."
    },
    "offense": {
      "type": "string",
      "enum": [
        "violent-crime",
        "property-crime",
        "robbery",
        "burglary",
        "larceny",
        "motor-vehicle-theft",
        "arson",
        "aggravated-assault",
        "rape",
        "homicide"
      ],
      "description": "Offense type: violent-crime, property-crime, robbery, burglary, larceny, motor-vehicle-theft, arson, aggravated-assault, rape, or homicide."
    },
    "ori": {
      "description": "9-character ORI code for a single agency. Required when scope is \"agency\".",
      "type": "string",
      "minLength": 9,
      "maxLength": 9
    },
    "state_abbr": {
      "description": "Two-letter state abbreviation. Required when scope is \"state\".",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "from_year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2030,
      "description": "Start year of the data range."
    },
    "from_month": {
      "default": 1,
      "description": "Start month (1–12). Defaults to January.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "to_year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2030,
      "description": "End year of the data range."
    },
    "to_month": {
      "default": 12,
      "description": "End month (1–12). Defaults to December.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    }
  },
  "required": [
    "scope",
    "offense",
    "from_year",
    "from_month",
    "to_year",
    "to_month"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_nibrs_breakdown

open-world

[UNAVAILABLE] The FBI NIBRS breakdown endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For NIBRS data, consult the FBI CDE website at cde.ucr.cjis.gov.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_nibrs_breakdown",
    "arguments": {
      "dimension": "<dimension>",
      "variable": "<variable>",
      "scope": "<scope>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "dimension": {
      "type": "string",
      "enum": [
        "offenders",
        "victims",
        "offenses"
      ],
      "description": "Dimension (unused)."
    },
    "variable": {
      "type": "string",
      "enum": [
        "ethnicity",
        "race_code",
        "sex_code",
        "age_num",
        "offense_name",
        "location_name",
        "prop_desc_name",
        "offender_relationship",
        "resident_status_code",
        "circumstance_name",
        "weapon_name",
        "method_entry_code",
        "num_premises_entered"
      ],
      "description": "Grouping variable (unused)."
    },
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state"
      ],
      "description": "Scope (unused)."
    },
    "state_abbr": {
      "description": "State abbreviation (unused).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "offense_name": {
      "description": "Offense filter (unused).",
      "type": "string"
    },
    "since_year": {
      "description": "Start year (unused).",
      "type": "integer",
      "minimum": 1985,
      "maximum": 2030
    },
    "until_year": {
      "description": "End year (unused).",
      "type": "integer",
      "minimum": 1985,
      "maximum": 2030
    }
  },
  "required": [
    "dimension",
    "variable",
    "scope"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_arrests

open-world

[UNAVAILABLE] The FBI arrests endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For arrest data, consult the FBI CDE website at cde.ucr.cjis.gov or download bulk data files.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_arrests",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "since_year": {
      "description": "Start year (unused).",
      "type": "integer",
      "minimum": 1960,
      "maximum": 2030
    },
    "until_year": {
      "description": "End year (unused).",
      "type": "integer",
      "minimum": 1960,
      "maximum": 2030
    }
  },
  "additionalProperties": false
}
view source ↗

fbi_get_hate_crimes

open-world

[UNAVAILABLE] The FBI hate crimes endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For hate crime data, consult the FBI CDE website at cde.ucr.cjis.gov or download bulk data files.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_hate_crimes",
    "arguments": {
      "scope": "<scope>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state"
      ],
      "description": "Scope (unused)."
    },
    "state_abbr": {
      "description": "State abbreviation (unused).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "since_year": {
      "description": "Start year (unused).",
      "type": "integer",
      "minimum": 1991,
      "maximum": 2030
    },
    "until_year": {
      "description": "End year (unused).",
      "type": "integer",
      "minimum": 1991,
      "maximum": 2030
    },
    "cross_offense": {
      "default": false,
      "description": "Cross-offense breakdown (unused).",
      "type": "boolean"
    }
  },
  "required": [
    "scope",
    "cross_offense"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_human_trafficking

open-world

[UNAVAILABLE] The FBI human trafficking endpoint has been decommissioned. The UCR backend (crime-data-api.fr.cloud.gov) no longer responds. This tool will return an error on every call. For human trafficking data, consult the FBI CDE website at cde.ucr.cjis.gov or download bulk data files.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_human_trafficking",
    "arguments": {
      "scope": "<scope>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state",
        "agency"
      ],
      "description": "Scope (unused)."
    },
    "state_abbr": {
      "description": "State abbreviation (unused).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "ori": {
      "description": "ORI code (unused).",
      "type": "string",
      "minLength": 9,
      "maxLength": 9
    },
    "since_year": {
      "description": "Start year (unused).",
      "type": "integer",
      "minimum": 2013,
      "maximum": 2030
    },
    "until_year": {
      "description": "End year (unused).",
      "type": "integer",
      "minimum": 2013,
      "maximum": 2030
    }
  },
  "required": [
    "scope"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_leoka

open-world

LEOKA officer fatality trends, weapons, activity, circumstances, demographics, geographic regions, and time-of-day/month breakdowns. Period "ytd" requests a year; "monthly" requires month and includes comparison-year monthly series. Both periods return the CDE YTD totals block, separately from month-specific breakdowns. Raw dod/doi totals have unspecified interpretation; classified deaths remain in the trend and region series.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_leoka",
    "arguments": {
      "period": "<period>",
      "year": "<year>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "period": {
      "type": "string",
      "enum": [
        "ytd",
        "monthly"
      ],
      "description": "Data period: ytd for the year, monthly for month-specific breakdowns and comparison years. Both include the CDE YTD totals block."
    },
    "year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2030,
      "description": "Year to retrieve LEOKA data for. Required — the API does not default to a year."
    },
    "month": {
      "description": "Month number (1–12). Required when period is \"monthly\".",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    }
  },
  "required": [
    "period",
    "year"
  ],
  "additionalProperties": false
}
view source ↗

fbi_get_arson

open-world

[UNAVAILABLE — use fbi_get_crime_estimates] The dedicated UCR arson endpoint has been decommissioned. However, arson data IS available via fbi_get_crime_estimates with offense="arson" and scope="national" or scope="state". That endpoint returns monthly rates and counts from the CDE summarized API.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fbi_get_arson",
    "arguments": {
      "scope": "<scope>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "national",
        "state"
      ],
      "description": "Scope (unused — use fbi_get_crime_estimates instead)."
    },
    "state_abbr": {
      "description": "State abbreviation (unused).",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "since_year": {
      "description": "Start year (unused).",
      "type": "integer",
      "minimum": 1960,
      "maximum": 2030
    },
    "until_year": {
      "description": "End year (unused).",
      "type": "integer",
      "minimum": 1960,
      "maximum": 2030
    }
  },
  "required": [
    "scope"
  ],
  "additionalProperties": false
}
view source ↗

Resources

2

[UNAVAILABLE] The FBI agency profile endpoint has been decommissioned. Attempting to read this resource will return a ServiceUnavailable error. For agency details, consult the FBI CDE website at cde.ucr.cjis.gov.

uri fbi://agency/{ori} mime application/json

[UNAVAILABLE] The FBI state participation endpoint has been decommissioned. The CDE /LATEST/participation/state/ path returns 404. Attempting to read this resource will return a ServiceUnavailable error.

uri fbi://state/{state_abbr} mime application/json