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?
| Resource | Description |
|---|---|
| πΊ Vector Tile Layers | Publish PostGIS tables and views as MVT services |
| π§ TileJSON | TileJSON 3.0.0 document per layer plus a discovery index, for zero-config client setup |
| π Maps | Complete MapLibre maps composed from multiple layers |
| π¨ Layer Styles | Reusable styles for individual layers |
| π Legends | Dynamic legends |
| π€ Glyphs | Font hosting |
| π― Sprites | Icon 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.