MVT Server: A Simple Vector Tile Server

May 13, 2026 ยท View on GitHub

This is a simple and high-speed vector tile server developed in Rust, using the Salvo web framework. It provides an efficient way to serve vector geospatial data over the web.

MVT Server will allow you to publish any table or view with a geometry field as vector tiles. It relies on the use of the PostGIS function ST_AsMVT.

MVT Server focuses exclusively on the generation and delivery of Vector Tiles from PostGIS to maximize performance, simplicity, and ease of use.

Key Features

  • Support for multiple PostgreSQL databases simultaneously.
  • Layer server, maps server (through Maplibre Style) and legends server.
  • On-the-fly vector tile generation using PostgreSQL/PostGIS.
  • Web-based administration for managing users, groups, layers, styles, categories, and more.
  • Integrated caching with support for disk or Redis storage.
  • Granular cache control at the layer level.
  • Multiple source variants: Single layer, Multi-layer by composition, and Multi-layer by category.
  • Built-in glyph and sprite server for custom styles.
  • Layer access control via Basic Authentication or JWT.
  • Monitoring and Metrics with Prometheus support.
  • Extensible via Lua plugins: add custom filter logic per layer or category without recompiling.

Performance Tips

  • Gzip compression: Enable gzip in your reverse proxy (nginx, caddy, etc.) for application/x-protobuf responses. Vector tiles compress 60โ€“80% on average. See the nginx configuration example in the Tutorial.
  • Caching: Configure max_cache_age per layer. Static layers (boundaries, basemaps) benefit from long or infinite cache. Real-time layers should use a short TTL. Cache can be invalidated manually per layer from the admin panel.
  • Redis: Use Redis as the cache backend when running multiple instances behind a load balancer.

Getting Started

Check out the MVT Server Tutorial for a complete step-by-step guide on:

  • Requirements & Installation
  • Configuration (YAML, Env vars, Arguments)
  • Managing Layers & Administration UI
  • Consuming Tiles in QGIS, MapLibre, OpenLayers, and Leaflet
  • Advanced usage (Styles, Legends, Sprites, Glyphs)

Configuration

MVT Server uses a hierarchical configuration system. Please see the Tutorial for detailed instructions on the new config.yaml structure and how to configure the server.

Installation (Quick Start)

# Clone the repository
git clone https://github.com/mvt-proj/mvt-rs.git
cd mvt-rs

# Compile for production
cargo build --release

๐Ÿ™Œ Support This Project

If you find MVT Server useful, please consider supporting its development. Your contribution helps improve the project and keep it actively maintained.

Donate

Thank you for your support! ๐Ÿ’–