A multi-interface (REST and MCP) server for automatic license plate recognition 🚗
SaferSkills independently audited Omni Lpr (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center"> <picture> <img alt="Omni-LPR Logo" src="logo.svg" width="300"> </picture> <br>
<h2>Omni-LPR</h2>
A multi-interface (REST and MCP) server for automatic license plate recognition
</div>
Omni-LPR is a self-hostable server that provides automatic license plate recognition (ALPR) capabilities via a REST API and the Model Context Protocol (MCP). It can be used both as a standalone ALPR microservice and as an ALPR toolbox for AI agents and large language models (LLMs).
Using Omni-LPR can have the following benefits:
or specific ML dependencies because the server handles all of that.
app, or you can use MCP, which is designed for AI agent integration.
deploy and start using immediately.
CPUs (OpenVINO), and NVIDIA GPUs (CUDA).
many concurrent requests without getting bogged down.
suddenly need more ALPR power, you can scale Omni-LPR up without touching anything else.
See the ROADMAP.md for the list of implemented and planned features.
[!IMPORTANT] Omni-LPR is in early development, so bugs and breaking API changes are expected. Please use the issues page to report bugs or request features.
You can get started with Omni-LPR in a few minutes by following the steps described below.
#### 1. Install the Server
You can install Omni-LPR using pip:
pip install omni-lpr#### 2. Start the Server
When installed, start the server with a single command:
omni-lprBy default, the server will be listening on http://127.0.0.1:8000. You can confirm it's running by accessing the health check endpoint:
curl http://127.0.0.1:8000/api/health
# Sample expected output: {"status": "ok", "version": "0.3.4"}#### 3. Recognize a License Plate
Now you can make a request to recognize a license plate from an image. The example below uses a publicly available image URL.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"path": "https://www.olavsplates.com/foto_n/n_cx11111.jpg"}' \
http://127.0.0.1:8000/api/v1/tools/detect_and_recognize_plate_from_path/invokeYou should receive a JSON response with the detected license plate information.
Omni-LPR exposes its capabilities as "tools" that can be called via a REST API or over the MCP.
#### Available Tools
The server provides tools for listing models, recognizing plates from image data, and recognizing plates from a path.
list_models: Lists the available detector and OCR models.recognize_plate: Recognizes text from a pre-cropped license plate image.detect_and_recognize_plate: Detects and recognizes all license plates in a full image.recognize_plate_from_path: Recognizes text from a pre-cropped license plate image at a given path.detect_and_recognize_plate_from_path: Detects and recognizes plates in a full image at a given path.For more details on how to use the different tools and provide image data, please see the API Documentation.
#### REST API
The REST API provides a standard way to interact with the server. All tool endpoints are available under the /api/v1 prefix. Once the server is running, you can access interactive API documentation in the Swagger UI at http://127.0.0.1:8000/api/v1/apidoc/swagger.
#### MCP Interface
The server also exposes its tools over the MCP for integration with AI agents and LLMs. The MCP endpoint is available at http://127.0.0.1:8000/mcp/, via streamable HTTP.
You can use a tool like MCP Inspector to explore the available MCP tools.
<div align="center"> <picture> <img src="docs/assets/screenshots/mcp-inspector-3.png" alt="MCP Inspector Screenshot" width="auto"> </picture> </div>
You can connect any client that supports the MCP protocol to the server. The following examples show how to use the server with LM Studio.
#### LM Studio Configuration
{
"mcpServers": {
"omni-lpr-local": {
"url": "http://127.0.0.1:8000/mcp/"
}
}
}#### Tool Usage Examples
The screenshot of using the list_models tool in LM Studio to list the available models for the APLR.
<div align="center"> <picture> <img src="docs/assets/screenshots/lmstudio-list-models-1.png" alt="LM Studio Screenshot 1" width="auto" height="auto"> </picture> </div>
The screenshot below shows using the detect_and_recognize_plate_from_path tool in LM Studio to detect and recognize the license plate from an image available on the web.
<div align="center"> <picture> <img src="docs/assets/screenshots/lmstudio-detect-plates-1.png" alt="LM Studio Screenshot 2" width="auto" height="auto"> </picture> </div>
Omni-LPR documentation is available here.
#### Examples
Check out the examples directory for usage examples.
Contributions are always welcome! Please see CONTRIBUTING.md for details on how to get started.
Omni-LPR is licensed under the MIT License (see LICENSE).
and fast-alpr Python libraries.
<!-- Need to add this line for MCP registry publication --> <!-- mcp-name: io.github.habedi/omni-lpr -->
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.