Koskamo

Crime Data API MCP

An MCP server that allows AI agents to access police-reported incident data for 11 US cities without requiring an API key. It supports querying incidents within a 1 km radius for the last 180 days, returning up to 50 rows per call with source attribution and freshness metadata.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Crime Data API MCP logo, by Crime Data APICommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Crime Data API
You need:free MCP server at https://crimedata.dev/mcp , no key
MCP endpoint (Streamable HTTP)
https://crimedata.dev/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 0 of 5 declare behavior hints · 1 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Query police-reported incidents by location and time range
  • Retrieve incident counts and statistics for specific cities
  • Access data freshness and source licence information
  • Connect AI agents to crime data via Streamable HTTP

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
crime-data 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Tools

5 advertised

crime_incidents
Advertised by the server during the last successful anonymous check.

Recent police-reported incidents near a point in covered US cities, newest first.

crime_incidents input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "ISO date, exclusive"
    },
    "lat": {
      "type": "number",
      "description": "Latitude (WGS84); or pass address instead"
    },
    "lon": {
      "type": "number",
      "description": "Longitude (WGS84)"
    },
    "from": {
      "type": "string",
      "description": "ISO date, inclusive; the free server covers the last 180 days"
    },
    "limit": {
      "type": "number",
      "description": "Max rows, 1-50 (default 50)"
    },
    "address": {
      "type": "string",
      "description": "US street address, used instead of lat and lon"
    },
    "category": {
      "enum": [
        "homicide",
        "sexual_offense",
        "robbery",
        "assault",
        "burglary",
        "vehicle_theft",
        "theft_from_vehicle",
        "theft",
        "fraud",
        "vandalism",
        "weapons",
        "drugs",
        "dui",
        "trespass",
        "harassment",
        "public_order",
        "traffic",
        "non_criminal",
        "other"
      ],
      "type": "string"
    },
    "radius_m": {
      "type": "number",
      "description": "Search radius in metres, 1-1000 (default 500)"
    }
  }
}
crime_stats
Advertised by the server during the last successful anonymous check.

Incident counts by category and by month near a point.

crime_stats input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "ISO date, exclusive"
    },
    "lat": {
      "type": "number",
      "description": "Latitude (WGS84); or pass address instead"
    },
    "lon": {
      "type": "number",
      "description": "Longitude (WGS84)"
    },
    "from": {
      "type": "string",
      "description": "ISO date, inclusive; the free server covers the last 180 days"
    },
    "address": {
      "type": "string",
      "description": "US street address, used instead of lat and lon"
    },
    "category": {
      "enum": [
        "homicide",
        "sexual_offense",
        "robbery",
        "assault",
        "burglary",
        "vehicle_theft",
        "theft_from_vehicle",
        "theft",
        "fraud",
        "vandalism",
        "weapons",
        "drugs",
        "dui",
        "trespass",
        "harassment",
        "public_order",
        "traffic",
        "non_criminal",
        "other"
      ],
      "type": "string"
    },
    "radius_m": {
      "type": "number",
      "description": "Search radius in metres, 1-1000 (default 500)"
    }
  }
}
crime_compare
Advertised by the server during the last successful anonymous check.

Compare incident stats (by category, violent vs property, hour, weekday, 90-day trend) for 2-5 points with the same radius.

crime_compare input schema
{
  "type": "object",
  "required": [
    "points"
  ],
  "properties": {
    "to": {
      "type": "string",
      "description": "ISO date, exclusive"
    },
    "from": {
      "type": "string",
      "description": "ISO date, inclusive; the free server covers the last 180 days"
    },
    "points": {
      "type": "string",
      "description": "lat,lon;lat,lon (2-5 points)"
    },
    "category": {
      "enum": [
        "homicide",
        "sexual_offense",
        "robbery",
        "assault",
        "burglary",
        "vehicle_theft",
        "theft_from_vehicle",
        "theft",
        "fraud",
        "vandalism",
        "weapons",
        "drugs",
        "dui",
        "trespass",
        "harassment",
        "public_order",
        "traffic",
        "non_criminal",
        "other"
      ],
      "type": "string"
    },
    "radius_m": {
      "type": "number",
      "description": "Search radius in metres, 1-1000 (default 500)"
    }
  }
}
crime_score
Advertised by the server during the last successful anonymous check.

Safety score 0-100 (higher = fewer incidents) and A-F grade for a point: incident density percentile against sampled occupied-area cells of the city (same radius) over its last 12 months. Not a prediction of personal risk; not comparable across cities. Outside covered cities it returns coverage "city_fallback": the city's FBI city-wide violent/property rates per 100k and national percentiles, no grade. May include a "tract" block: 2020 Census tract population and incidents per 1,000 estimated residents in the radius per year (tract residents only, so commercial and nightlife areas overstate risk).

crime_score input schema
{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "description": "Latitude (WGS84); or pass address instead"
    },
    "lon": {
      "type": "number",
      "description": "Longitude (WGS84)"
    },
    "address": {
      "type": "string",
      "description": "US street address, used instead of lat and lon"
    },
    "radius_m": {
      "type": "number",
      "description": "Search radius in metres, 1-1000 (default 500)"
    }
  }
}
crime_coverage
Advertised by the server during the last successful anonymous check.

Covered cities, data source, licence and freshness.

crime_coverage input schema
{
  "type": "object",
  "properties": {}
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (3 of 3 answered).

  1. 2026-11-09: 2 of 2 checks answered
  2. 2026-11-10: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
441 ms
95th percentile latency
441 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 441 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http crime-data-api-mcp https://crimedata.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add crime-data-api-mcp --url https://crimedata.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable crime-data-api-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "crime-data-api-mcp": {
      "url": "https://crimedata.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "crime-data-api-mcp": {
      "type": "streamableHttp",
      "url": "https://crimedata.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start crime-data-api-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "crime-data-api-mcp": {
      "type": "http",
      "url": "https://crimedata.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http crime-data-api-mcp https://crimedata.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://crimedata.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "crime-data-api-mcp": {
      "serverUrl": "https://crimedata.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Crime Data API MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.