What is an MDT in FiveM? Police Computer Systems Explained
If you have ever watched a popular Grand Theft Auto roleplay stream, you have likely seen law enforcement pull up a sleek, high-tech interface to run a suspect's license plate or…

If you have ever watched a popular Grand Theft Auto roleplay stream, you have likely seen law enforcement pull up a sleek, high-tech interface to run a suspect's license plate or file a report. This system is known as an MDT (Mobile Data Terminal) or CAD (Computer-Aided Dispatch).
MDT systems are arguably the most critical piece of infrastructure for any Law Enforcement (LEO) or Emergency Medical Services (EMS) faction on a FiveM server. This guide breaks down exactly what an MDT is, why your server needs one, and how they function on a technical level.
What is a Mobile Data Terminal (MDT)?

In the real world, an MDT is the computerized system mounted in the center console of a police cruiser. It connects personnel in the field to a centralized dispatch database, allowing them to communicate, run records, and file reports without tying up voice radio channels.
In FiveM, an MDT script replicates this exact functionality. It provides an immersive, interactive interface (usually triggered by a command like /mdt or using an item) where personnel can access server-wide databases, interact with other emergency responders, and document roleplay scenarios natively within the game.
Why Do You Need an MDT for Roleplay?
While smaller or less serious servers might rely on external tools like Discord channels or Google Sheets to track incidents, a dedicated MDT script improves the roleplay experience significantly for several reasons:
Immersion and Breaking the Fourth Wall
Instead of alt-tabbing out of the game to check a spreadsheet, personnel use an in-game animated tablet or laptop prop. This keeps players engaged in the world and prevents the immersion breaks associated with external record-keeping.
Centralized Records
An MDT acts as a permanent, server-side memory bank. When a stop occurs, they can look up a character name to see:
- Previous infractions and records.
- Active driver's licenses or permits.
- Known affiliations or notes.
Real-Time Dispatch and GPS Tracking
Modern MDTs integrate directly with FiveM Police Scripts to provide a live map of all active LEO and EMS units, alongside active calls.
Core Features of a High-Quality FiveM MDT
If you are a server owner looking to purchase or configure an MDT, these are the essential features to look for:
1. Citizen Database
The core of any MDT. It queries your framework's database (like ESX or QBCore) to display every registered character. You can attach mugshots, update addresses, and revoke licenses directly from this page.
2. Vehicle Registration System
When a vehicle is purchased by a player, the MDT registers the license plate to that owner. If a car is reported stolen, users can flag the plate in the MDT so that ALPR (Automated License Plate Reader) systems can alert them later.
3. Incident Reports
After a major scenario, LEOs need to document the event. Advanced MDTs allow them to:
- Tag multiple individuals in a single incident.
- Upload photos of evidence (via Discord webhooks or Imgur links).
- Automatically calculate fines and times based on a built-in Penal Code.
4. Warrants and BOLO Systems
If an individual escapes a chase, an officer can issue a BOLO (Be On The Look Out) or an active warrant. The next time that suspect interaction occurs, the MDT flashes a high-priority alert.
Technical Implementation of MDTs
For developers, understanding how MDTs work under the hood is vital. MDTs typically use one of three implementation approaches:
NUI (CEF) Based – Most Common
Most FiveM MDTs are built using FiveM's NUI (Native UI) implementation, which runs a Chromium browser within the game. Developers build the interface using modern web frameworks like React, Vue, or Svelte.
Here is a simplified example of how an MDT is opened via the client:
-- Client-side NUI trigger example
RegisterCommand('mdt', function()
SetNuiFocus(true, true)
SendNUIMessage({
type = 'openMDT',
officerName = GetPlayerName(PlayerId()),
badgeNumber = GetPlayerServerId(PlayerId())
})
end)
And the server-side logic handles the heavy database querying to prevent client manipulation:
-- Server-side database query
RegisterServerEvent('mdt:searchPerson')
AddEventHandler('mdt:searchPerson', function(firstname, lastname)
local src = source
MySQL.Async.fetchAll('SELECT * FROM users WHERE firstname = @first AND lastname = @last', {
['@first'] = firstname,
['@last'] = lastname
}, function(result)
TriggerClientEvent('mdt:returnSearch', src, result)
end)
end)
External Web Applications
Some premium MDT systems (like Sonoran CAD) operate completely outside of the game on a standard web browser. While this requires players to have a second monitor or use alt-tab, it saves significant server performance and allows dispatchers to play without even launching Grand Theft Auto.
Framework Integration (ESX / QBCore / Qbox)
An MDT is useless if it cannot read your player database. Ensure the MDT you choose natively supports your server's framework. It needs to know which SQL tables to query for characters (users vs players). If you are migrating, check out our ESX to QBCore Migration Guide.
Connecting MDTs to Other Scripts
To truly unlock an MDT's potential, it should interconnect with other scripts:
- Dispatch / 911 Scripts: Calls should feed directly into the MDT's board.
- Confinement Scripts: When a report is submitted, pressing "Submit" should physically teleport the target player into the processing area.
- Phone Scripts: Players should be able to view their own records or pay citations via apps built into their FiveM Phone.
Popular FiveM MDT Scripts Compared
With so many options available on the CFX forum and mod marketplaces, choosing the right MDT comes down to your framework, budget, and how much customization you need. Here is a comparison of the most widely used MDT and CAD systems in 2026:
| Script | Framework | Type | Price | Dispatch Integration | Active Dev |
|---|---|---|---|---|---|
| ps-mdt | QBCore | In-game NUI | Free (open-source) | Via ps-dispatch | Community |
| okokMDT | ESX / QBCore | In-game NUI | Paid | okokNotify / Discord | Active |
| Renewed-Mdt | QBCore | In-game NUI | Free (open-source) | Renewed-Dispatch | Community |
| core_mdt | ESX | In-game NUI | Free | Custom events | Limited |
| Sonoran CAD | ESX / QBCore / Standalone | External web app | Freemium / Paid tiers | Native plugin | Active |
| Dispatch Systems CAD | QBCore | Hybrid (in-game + web) | Paid | Built-in | Active |
| WraithV2 (ALPR) | Standalone | In-game plugin | Free | MDT webhook trigger | Community |
ps-mdt and Renewed-Mdt are the most popular free options for QBCore servers. Both are actively maintained by the community and cover the core feature set — citizen lookup, vehicle registration, incidents, and warrants. If you are running ESX, okokMDT is the most polished paid option with consistent updates and dedicated support.
Sonoran CAD sits in a class of its own. Because it runs in an external browser, it is the only option that lets a non-playing dispatcher manage active calls and track units in real time without holding a server slot. This makes it the top choice for servers with dedicated dispatch roles.
How to Choose the Right MDT for Your Server
Picking an MDT is not just a script decision — it affects how your entire LEO faction operates. Use this decision framework:
Step 1: Identify Your Framework
All MDTs depend on your player database structure. ESX stores characters in the users table; QBCore uses players. An MDT built for QBCore will not query the right table on an ESX server without manual config changes. Always confirm framework compatibility before purchasing or installing.
Step 2: Decide on In-Game vs. External
- In-game MDTs (ps-mdt, okokMDT) keep players inside the world. Officers access the system via a prop animation (pulling out a tablet), which looks great on stream and in screenshots. The downside: dispatchers must be in-game to use the board.
- External CADs (Sonoran CAD) require a second monitor or window. They are better for servers that want dedicated civilian dispatchers who are not driving patrol cars.
Step 3: Evaluate Dispatch Integration
The MDT alone is only useful for records. For active calls to populate in real time, your MDT must integrate with a dispatch / 911 script. Check that the MDT you choose has a supported dispatch plugin for your existing phone or emergency script before committing.
Step 4: Consider Your Player Base Size
For servers under 50 slots, a free open-source MDT like ps-mdt covers everything needed. For 100+ slot servers with active LEO factions and structured departments, the additional features and support of a paid solution like okokMDT or Sonoran CAD are worth the investment. The cost of staff time debugging a broken free MDT is often higher than the script's price.
Setting Up an MDT: Installation Overview
Most NUI-based MDTs follow the same general installation pattern. Here is what to expect:
1. Download and Place the Resource
Extract the MDT resource folder into your server's /resources directory. For open-source scripts from GitHub, clone the repository directly:
cd /path/to/your/server/resources
git clone https://github.com/project-sloth/ps-mdt
2. Import the SQL Schema
MDTs create their own database tables for incidents, warrants, and reports. Find the .sql file in the resource folder and import it:
-- Example for ps-mdt
SOURCE /resources/ps-mdt/sql/mdt.sql;
3. Configure Framework Tables
Open config.lua (or config/config.lua) and confirm the correct table names for your framework:
Config.Framework = 'qb-core' -- or 'esx'
Config.PlayersTable = 'players' -- qb uses 'players'; esx uses 'users'
Config.VehiclesTable = 'player_vehicles'
4. Link Your Dispatch Script
Most MDTs expose server events for incoming calls. Register the connection in your dispatch script's config:
-- Example: triggering MDT call board from a 911 call
TriggerServerEvent('mdt:addDispatchCall', {
code = '10-31',
callType = 'Suspicious Person',
location = coords,
caller = playerName
})
5. Add to server.cfg
ensure ps-mdt
Start the server and verify the MDT opens in-game with the configured command (usually /mdt or via item).
Connecting MDTs to Other Scripts
To truly unlock an MDT's potential, it should interconnect with other scripts:
- Dispatch / 911 Scripts: Calls should feed directly into the MDT's board.
- Confinement Scripts: When a report is submitted, pressing "Submit" should physically teleport the target player into the processing area.
- Phone Scripts: Players should be able to view their own records or pay citations via apps built into their FiveM Phone.
- ALPR Scripts: Wraith ALPR or similar tools can fire MDT alerts when a flagged plate drives past a checkpoint, creating immersive automated interactions without staff involvement.
For more scripts that enhance your LEO setup, browse the VertexMods FiveM scripts catalog — filtering by the "police" category surfaces the most popular law enforcement resources.
Summary
An MDT is the beating heart of law enforcement roleplay. Without it, factions cannot establish history, track repeat offenders, or organize large-scale departments. The right choice depends on your framework, player count, and whether you need dedicated civilian dispatching. Free open-source options like ps-mdt are excellent starting points; paid solutions like okokMDT and Sonoran CAD are worth considering once your server scales beyond casual roleplay.
Whatever MDT you choose, prioritize framework compatibility and dispatch integration above all else. A visually impressive CAD system that does not talk to your 911 script is just a glorified notepad.
Frequently Asked Questions
What is the difference between an MDT and a CAD in FiveM?
MDT (Mobile Data Terminal) and CAD (Computer-Aided Dispatch) are often used interchangeably, but they describe slightly different tools. An MDT is the officer-facing terminal for running records, filing reports, and checking warrants. A CAD is the dispatcher-facing system for receiving calls, assigning units, and tracking active incidents. In many FiveM scripts, both functions are combined into a single resource — which is why the terms blend together in community conversations.
Do I need coding knowledge to install an MDT?
Basic installations require only file extraction, SQL import, and a server.cfg edit — no coding required. Advanced customization (adding custom charge codes, modifying the UI, connecting non-standard dispatch scripts) will require some Lua and basic web development knowledge. Most premium MDTs provide dedicated support channels that handle configuration questions without requiring you to touch the code yourself.
Will an MDT slow down my FiveM server?
The server-side impact of an MDT is low — it only queries the database when a player opens the interface and searches. The NUI (in-game browser) runs on the client side and does not consume server tick budget. The main performance concern is database query optimization: ensure your character and vehicle tables have indexed columns on firstname, lastname, and plate to keep searches fast on populated servers.
Can players access their own records through the MDT?
It depends on the MDT. Most scripts restrict MDT access to specific jobs (police, ambulance, etc.). Some support a civilian-facing "personal records" view accessible via the phone or a separate command, where players can see their fines and license status. Check the documentation of your chosen MDT for supported job permissions.
Is Sonoran CAD worth the cost for a small server?
Sonoran CAD has a free tier that covers basic MDT and dispatch functionality, so there is no cost to try it. The paid tiers add features like automated traffic stop tools, live unit GPS in the CAD, and API integrations. For a server with fewer than 30 players, the free tier plus a solid open-source in-game MDT is usually sufficient. Sonoran CAD's paid plans become compelling once you have dedicated dispatcher players who want to operate from outside the game.
Frequently Asked Questions
What is What is an MDT in FiveM? Police Computer Systems Explained?
If you have ever watched a popular Grand Theft Auto roleplay stream, you have likely seen law enforcement pull up a sleek, high-tech interface to run a suspect's license plate or file a report. This system is known as an MDT (Mobile Data Terminal) or CAD (Computer-Aided Dispatch).


