MVT Server

August 27, 2026 Β· View on GitHub

🌐 English | Español | 🏠 mvtproj.dev

MVT Server

One Platform. Every Cartographic Resource.

An Open Source Cartographic Publishing Platform

MVT Server turns PostGIS data into complete, production-ready cartographic services β€” not just vector tiles.

Layers, maps, styles, legends, glyphs and sprites are all published, organized and operated from one place: a single Rust binary with a modern web administration interface behind it. No hand-edited config files, no juggling separate tools for each resource.


What Can MVT Server Publish?

ResourceDescription
πŸ—Ί Vector Tile LayersPublish PostGIS tables and views as MVT services
🧭 TileJSONTileJSON 3.0.0 document per layer plus a discovery index, for zero-config client setup
🌍 MapsComplete MapLibre maps composed from multiple layers
🎨 Layer StylesReusable styles for individual layers
πŸ“– LegendsDynamic legends
πŸ”€ GlyphsFont hosting
🎯 SpritesIcon hosting

Every resource above is managed through the same web interface β€” created, versioned and served without touching a config file.


Fine-Grained Publishing Control

Publishing from PostGIS is not all-or-nothing. Every layer is tuned individually, from the admin interface:

  • Which tables or views get published β€” nothing is exposed unless you explicitly publish it.
  • Which fields of that layer travel in the tile β€” and in what order.
  • Cache policy per layer β€” each layer sets its own cache max-age, independently of the rest.
  • Record limit per request β€” cap how many records a single tile request may return, per layer.
  • SQL filters and zoom range per layer β€” control which records are served and at which zoom levels.
  • Access control per layer β€” restrict a layer to specific user groups.

The tiles you serve carry exactly the data you intend β€” no more, no less.


See It In Action

Two clips, one continuous workflow β€” from raw PostGIS table to a styled map in QGIS, without touching a config file.

1. Publish a layer and consume it as a vector tile service

Publish a PostGIS table as an MVT layer from the admin UI, then connect to it live from QGIS as a Vector Tiles source.

https://github.com/user-attachments/assets/cb4071d2-39fa-4ccb-99a2-d97bad72e599

2. Publish a style and apply it to that layer

Create a MapLibre style from the admin UI and attach it to the layer published in step 1 β€” same layer, now with cartography.

https://github.com/user-attachments/assets/220999be-fb03-4c8d-85c0-b520a4037eb7


Deployment

MVT Server supports both Standalone and Cluster deployments.

Standalone

  • Single executable
  • Local cache or shared Redis cache
  • Simple installation

Cluster

  • Multiple instances
  • Shared PostgreSQL/PostGIS
  • Shared Redis cache
  • Load balancer support

See docs/clustering.md.


Project Philosophy

Publishing vector maps should be as easy as publishing a web application.

The open source geospatial ecosystem already provides outstanding tools for serving vector tiles, implementing OGC standards and exposing geospatial APIs. MVT Server focuses on a different challenge:

One platform to publish, manage and operate every cartographic resource β€” directly from PostGIS.

That's the idea behind the slogan: it's not about adding one more tile server to the ecosystem, it's about giving every resource a map needs (layers, styles, legends, glyphs, sprites) a single home, with a web interface instead of hand-edited config files.


The Open Source Geospatial Ecosystem

The geospatial ecosystem is rich with excellent open source software. Every project has its own philosophy and strengths, and many of them complement each other rather than compete.

MVT Server is designed to integrate naturally with technologies such as:

  • PostGIS
  • MapLibre
  • QGIS
  • OpenLayers
  • Leaflet
  • Redis
  • Nginx
  • Prometheus

Its goal is not to replace existing tools, but to simplify the publication and administration of vector map services.


Platform Capabilities

Beyond what MVT Server publishes (see the table above), this is how it operates as a platform:

Sources & Composition

  • Multiple PostgreSQL databases.
  • Single-layer, multi-layer and category-based sources.
  • Layer composition.
  • Fine-grained control per layer: published fields and their order, SQL filter, zoom range, cache, record limits, allowed groups.
  • Optional label sub-layer per polygon/line layer, to avoid duplicate labels across tiles.

Administration

  • Modern web administration interface.
  • Layer catalog.
  • Categories.
  • User and group management.
  • Authentication using JWT or Basic Auth.
  • Multi-language interface: English, Spanish (Argentina/Spain), Italian, Portuguese (Brazil) and French.

Infrastructure

  • Redis or disk cache.
  • Layer-level cache control.
  • Monitoring dashboard.
  • Prometheus metrics.
  • Lua plugin system.
  • Built with Rust for performance and reliability.

Performance Tips

  • Enable gzip for vector tiles.
  • Configure cache per layer.
  • Use Redis when running multiple instances.

Getting Started

Download a prebuilt binary from the latest release (Linux, macOS, Windows, FreeBSD):

curl -LO https://github.com/mvt-proj/mvt-rs/releases/latest/download/mvt-server-linux-gnu-x86_64.zip
unzip mvt-server-linux-gnu-x86_64.zip
./mvt-server --config config/config.yaml

Or build from source:

git clone https://github.com/mvt-proj/mvt-rs.git
cd mvt-rs
cargo build --release
./target/release/mvt-server --config config/config.yaml

Then open the web administration interface at http://localhost:5887 to connect your PostGIS database and publish your first layer.

See TUTORIAL.md for full installation, configuration, publishing layers, MapLibre styles, QGIS integration, monitoring and clustering instructions.


License

MVT Server is licensed under the BSD-3-Clause license.


Support

If MVT Server helps your organization, consider supporting the project.

❀️ Thank you for helping keep the project active.