Public Safety MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Public Safety MCP ServerWhat incidents occurred in the last hour?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Public Safety MCP Server
An MCP (Model Context Protocol) server exposing CAD (Computer-Aided Dispatch), AVL (Automatic Vehicle Location), and NERIS incident data as tools for use by Claude and other MCP clients.
Overview
The server connects to a Microsoft SQL Server database (CAD/AVL data) and the NERIS public incident API, and exposes both generic database access tools and purpose-built operational query tools over a single streamable HTTP MCP endpoint.
Related MCP server: data-detroit
Requirements
Node.js
Access to the CAD/AVL MSSQL database
A NERIS API subscription key
Setup
npm installCreate config/config.env with:
MCP_HOST=
MCP_PORT=
PS_DB_SERVER=
PS_DB_DATABASE=
PS_DB_USER=
PS_DB_PASSWORD=
NERIS_SUBSCRIPTION_KEY=
NERIS_API_KEY=Development
npm run dev # run with tsx + nodemon, auto-reload
npm run build # compile TypeScript to dist/ (tsc + tsc-alias)
npm start # run compiled server from dist/
npm run deploy # rsync build + config to production host and restart via pm2The server listens on MCP_PORT (default 7001) and exposes:
GET /publicsafety/health— health checkPOST /publicsafety— MCP streamable HTTP endpoint
Project Structure
app.ts Server entrypoint
routes/ Express routes (MCP endpoint, tile proxy)
tools/
mssql/ Generic DB tools: listTables, describeTable, executeQuery, getTablePreview
cad/ CAD operational tools: call volume, by-hour/day-of-week, top call types, incident search/activity log, raw query
avl/ AVL/GPS tools: unit tracking, movement detection, incident response time, breadcrumb report rendering
neris/ NERIS API client and incident list/get tools
combined/ Cross-source tools (e.g. CAD-NERIS join on incident timestamps)
utils/registerTools.ts Registers all tools with the MCP server
config/config.env Environment configuration (not committed)
skills/ Claude skill definitions (CAD, AVL) packaged as .zipTools
Tools are aggregated in tools/index.ts and registered on the McpServer in app.ts via registerAllTools. See individual files under tools/ for each tool's schema and behavior.
Notes
CAD/AVL coordinates are stored as scaled integers in the database and transformed by the server before rendering on maps.
The CAD-NERIS join correlates records by matching CAD's First Unit Assigned Time to NERIS's OnsetDate (truncated to seconds).
cadIncidentSearchToolis intentionally slim (9 columns, required date range) to avoid context overflow; usecadQueryToolfor arbitrary queries.
This server cannot be deployed
Maintenance
Related MCP Connectors
- RumboOAuthcom.rumboar
Securely query and analyze business data, dashboards, projections, alerts, and knowledge.
Read Physical AI datasets, projects, fleet and quality data. Requires authorized Avala access.
Agent-native MCP server over 49M+ US public and government records, privacy-first, always current.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Claude to OpenNMS, allowing plain language interaction with alarms, nodes, events, asset records, categories, and service collection.1-
- AlicenseNot gradedqualityBmaintenanceProvides access to Detroit open data via ArcGIS REST API, enabling querying and analysis of municipal datasets through natural language or direct tool calls.152 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and querying City of Pittsburgh GIS open geospatial data (parcels, zoning, public works) through ArcGIS feature services via MCP tools.128 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides aerospace fleet telemetry monitoring, Mil-Spec RAG search, fleet maintenance queries, sandboxed mission log exports, and tactical alert dispatching.MIT