PluginBench
MCP Server
Maintained
MIT

io.github.habedi/omni-lpr MCP Server

io.github.habedi/omni-lpr

Self-hostable automatic license plate recognition server with REST API and MCP interface

What is the io.github.habedi/omni-lpr MCP server?

Omni-LPR is a self-hostable server that provides automatic license plate recognition (ALPR) capabilities via REST API and Model Context Protocol (MCP). It detects and recognizes license plates in images using optimized ML models, supporting multiple hardware backends (CPU, OpenVINO, CUDA) and can be deployed as a standalone microservice or integrated with AI agents.

Omni-LPR decouples license plate recognition from your main application by providing a dedicated microservice with both REST and MCP interfaces. It handles image processing, plate detection, and OCR recognition, with support for hardware acceleration and high-performance asynchronous I/O. Use it to add ALPR capabilities to any application or AI agent without language or dependency constraints.

How to install io.github.habedi/omni-lpr

Copy-paste configuration for popular MCP clients.

transport: http
Config generated by PluginBench — verify against the source before use.
~/.cursor/mcp.json
{
  "mcpServers": {
    "omni-lpr": {
      "url": "https://{baseUrl}/mcp/"
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • list_models — Lists the available detector and OCR models
  • recognize_plate — Recognizes text from a pre-cropped license plate image (Base64 or file upload)
  • detect_and_recognize_plate — Detects and recognizes all license plates in a full image (Base64 or file upload)
  • recognize_plate_from_path — Recognizes text from a pre-cropped license plate image at a given URL or local file path
  • detect_and_recognize_plate_from_path — Detects and recognizes plates in a full image at a given URL or local file path

Use cases

  • Integrate license plate recognition into traffic monitoring or parking management systems
  • Add ALPR capabilities to AI agents for automated vehicle identification tasks
  • Process bulk images to extract and recognize license plates at scale
  • Build vehicle tracking or access control systems with automatic plate detection
  • Analyze surveillance footage or uploaded images for plate information

io.github.habedi/omni-lpr MCP server FAQ

What does Omni-LPR do?

Omni-LPR is an automatic license plate recognition (ALPR) server that detects license plates in images and extracts the plate text. It provides both REST API and MCP interfaces for easy integration.

Is Omni-LPR free?

Yes, Omni-LPR is open-source and licensed under the MIT License. You can install it via pip or use pre-built Docker images.

How do I install Omni-LPR in Cursor or Claude?

Configure the MCP server in your client's settings with the streamable HTTP endpoint: http://127.0.0.1:8000/mcp/ (or your server's URL). The server must be running separately.

Does Omni-LPR require authentication?

The README does not mention authentication requirements. The server listens on localhost by default and is designed for self-hosted deployment.

What image formats and input methods does it support?

Omni-LPR accepts images as Base64-encoded data, file uploads, or URLs/local file paths. It can process both pre-cropped plate images and full images containing multiple plates.

What hardware does Omni-LPR support?

The server supports generic CPUs (ONNX), Intel CPUs (OpenVINO), and NVIDIA GPUs (CUDA) with pre-built Docker images for each configuration.

README (reference)

Source of truth, from the repository.

<div align="center"> <picture> <img alt="Omni-LPR Logo" src="logo.svg" width="300"> </picture> <br> <h2>Omni-LPR</h2>

Tests Code Coverage Code Quality Python Version PyPI License <br> Documentation Examples Docker Image (CPU) Docker Image (OpenVINO) Docker Image (CUDA)

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).

Why Omni-LPR?

Using Omni-LPR can have the following benefits:

  • Decoupling. Your main application can be in any programming language. It doesn't need to be tangled up with Python or specific ML dependencies because the server handles all of that.

  • Multiple Interfaces. You aren't locked into one way of communicating. You can use a standard REST API from any app, or you can use MCP, which is designed for AI agent integration.

  • Ready-to-Deploy. You don't have to build it from scratch. There are pre-built Docker images that are easy to deploy and start using immediately.

  • Hardware Acceleration. The server is optimized for the hardware you have. It supports generic CPUs (ONNX), Intel CPUs (OpenVINO), and NVIDIA GPUs (CUDA).

  • Asynchronous I/O. It's built on Starlette, which means it has high-performance, non-blocking I/O. It can handle many concurrent requests without getting bogged down.

  • Scalability. Because it's a separate service, it can be scaled independently of your main application. If you 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.


Quickstart

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-lpr

By 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/invoke

You should receive a JSON response with the detected license plate information.

Usage

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.

  • Tools that process image data (provided as Base64 or file upload):

    • 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.
  • Tools that process an image path (a URL or local file path):

    • 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>

Integration

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>

Documentation

Omni-LPR documentation is available here.

Examples

Check out the examples directory for usage examples.


Contributing

Contributions are always welcome! Please see CONTRIBUTING.md for details on how to get started.

License

Omni-LPR is licensed under the MIT License (see LICENSE).

Acknowledgements

<!-- Need to add this line for MCP registry publication --> <!-- mcp-name: io.github.habedi/omni-lpr -->

Related MCP servers

Connect Claude, ChatGPT, Gemini, Cursor, or Copilot to ServiceNow with 450+ tools across all modules.

211
TypeScript
View repository →

Zero-config SQL flight recorder for slow Python/SQLAlchemy jobs: exact call site, count, and fix.

0
Python
MIT
View repository →
HAHackle logo

Hackle

Maintained

Remote MCP server for the Hackle Admin API: experiments, feature flags, remote config, messaging.

2
JavaScript
MIT
View repository →

Manage Proxmox VE via Cursor: QEMU, LXC, storage, HA, firewall, access.

1
Python
MIT
View repository →
PAPathmark logo

Pathmark

Active

Local-first intent and provenance for Codex, Claude Code, Cursor, Gemini CLI, and MCP agents.

3
TypeScript
MIT
View repository →

Convert files, URLs, and documents to clean, AI-ready Markdown via MCP.