Skip to main content
Glama
Yarroudh

cityjson-mcp

by Yarroudh

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CJDB_BINNoOptional cjdb executable override.cjdb
CJIO_BINNoOptional cjio executable override.cjio
CJVAL_BINNoOptional cjval executable override.cjval
PGPASSWORDNoPostgreSQL password used by cjdb for database import/export.
VAL3DITY_BINNoOptional val3dity executable override.val3dity
CITYGML_TOOLS_BINNoOptional citygml-tools executable override.citygml-tools
CITYJSON_MCP_INPUTNoInput directory used by cityjson_import../input
CITYJSON_MCP_WORKSPACENoManaged source and derived datasets../.cityjson-mcp-workspace
CITYJSON_MCP_ALLOWED_ROOTSNoAuthorized filesystem roots. Use ':' on macOS/Linux and ';' on Windows.current directory
CITYJSON_MCP_COMMAND_TIMEOUT_MSNoExternal command timeout.120000
CITYJSON_MCP_MAX_DOWNLOAD_BYTESNoMaximum inline MCP download size. Datum streams downloads directly.26214400

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
cityjson_backend_statusA

Check which external CityJSON/CityGML engines are installed and callable. Run this first when a backend-dependent operation fails.

cityjson_openA

Open a CityJSON file by a full server-visible path inside an allowed root. This is an advanced path-based operation. For files delivered to the configured input inbox, use cityjson_import with a filename instead.

cityjson_list_importsA

List JSON files in the configured input inbox. Use this when the user did not name an attached/imported file or when cityjson_import reports multiple candidates. Returns filenames only; never ask the user for an absolute path.

cityjson_importA

Import a CityJSON file already placed in the configured input inbox and return an immutable dataset handle. Pass only its filename, never an absolute path. If filename is omitted, the import succeeds only when the inbox contains exactly one JSON file.

cityjson_import_textA

Fallback for small programmatically supplied CityJSON documents only. The complete JSON travels through the MCP request, so never use it for normal chat attachments or large models; use cityjson_import instead.

cityjson_downloadA

Prepare an opened or transformed dataset for download. The web host streams the managed file directly; standalone MCP clients receive an embedded application/json resource within the configured inline-size limit.

cityjson_infoA

Return metadata, object counts, types, LoDs, attribute names, transform and extensions for an opened dataset.

cityjson_saveC

Copy an opened/derived CityJSON dataset to an explicit destination path.

cityjson_list_objectsB

List CityObjects with IDs, types, selected attributes and LoDs. Supports filtering by CityObject type and pagination.

cityjson_get_objectB

Return one complete CityObject and a computed real-world bounding box derived from referenced vertices.

cityjson_queryB

Query CityObjects natively by IDs, types, 2D bbox and attribute predicates. Attribute predicates support eq, neq, gt, gte, lt, lte, contains and in.

cityjson_validate_schemaA

Validate a dataset with the official cjval validator: JSON syntax, CityJSON schemas, extensions and additional structural consistency checks.

cityjson_validate_geometryA

Validate CityJSON 3D primitives with val3dity according to ISO 19107 concepts and CityJSON-specific geometric checks. Returns a detailed report plus a compact reportSummary containing every invalid object ID and error-code count.

cityjson_validateA

Run cjval and val3dity and return one combined structural + geometric validation result. geometry.reportSummary contains the complete invalidObjectIds list for reliable follow-up subsets.

cityjson_subsetC

Create a derived CityJSON subset with cjio using IDs, bbox, radius, random count or CityObject types. Returns a new dataset_id.

cityjson_filter_lodA

Keep only one level of detail using cjio lod_filter. Returns a new dataset_id.

cityjson_reprojectB

Reproject coordinates to a target EPSG CRS with cjio. The source dataset must already define a CRS. Returns a new dataset_id.

cityjson_assign_crsA

Assign/update the EPSG reference without changing coordinate values using cjio. Returns a new dataset_id.

cityjson_translateB

Translate CityJSON coordinates with cjio. With minxyz, coordinates are shifted relative to the supplied minimum; without it cjio uses the model minimum.

cityjson_clean_verticesA

Remove duplicate and orphan vertices with cjio vertices_clean. Returns a new dataset_id.

cityjson_triangulateB

Triangulate surfaces with cjio. Use sloppy=true only when the robust triangulator fails.

cityjson_mergeA

Merge two or more opened CityJSON datasets with cjio. Returns a new dataset_id.

cityjson_attribute_renameB

Rename an attribute across CityObjects with cjio.

cityjson_attribute_removeC

Remove an attribute across CityObjects with cjio.

cityjson_remove_texturesB

Remove all textures with cjio. Returns a new dataset_id.

cityjson_remove_materialsB

Remove all materials with cjio. Returns a new dataset_id.

cityjson_upgradeB

Upgrade an older supported CityJSON file to the version supported by the installed cjio.

cityjson_exportB

Export an opened CityJSON dataset with cjio to jsonl, obj, stl, glb or b3dm.

citygml_to_cityjsonA

Convert a CityGML 1.0/2.0/3.0 GML/XML dataset to CityJSON using citygml-tools. A regular CityJSON output is automatically opened and returned as a dataset_id.

cityjson_to_citygmlA

Convert an opened CityJSON dataset to CityGML using citygml-tools. The installed citygml-tools version controls the default target encoding.

cityjson_db_importB

Convert the dataset to CityJSONSeq with cjio and import it into PostgreSQL/PostGIS using cjdb. PostgreSQL password should be supplied through PGPASSWORD, not tool arguments.

cityjson_db_exportA

Export all objects or a read-only SELECT-defined subset from cjdb to CityJSONSeq and optionally collect it into a normal CityJSON dataset handle.

cityjson_spec_outlineA

Return the bundled outline and canonical URLs for the current CityJSON specification and schemas.

cityjson_spec_readA

Fetch the canonical CityJSON 2.0.2 living specification and return either the beginning or a context window around a search query.

cityjson_schema_readA

Fetch one canonical CityJSON 2.0.2 JSON Schema by name.

cityjson_extensions_registryC

Fetch the official CityJSON Extensions registry and optionally return context around a search term.

cityjson_extension_schemaB

Fetch a registered CityJSON Extension schema from the canonical cityjson.github.io registry URL.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
cityjson-reference-indexSpecification chapters, schema names and canonical reference URLs.

TDQS

B3.4/5.0

Scored across 37 tools

Disambiguation4/5

Most tools map cleanly to distinct operations (validate vs validate_schema vs validate_geometry; import vs open vs import_text). A few boundaries rely on careful reading, such as open vs import and export vs db_export, but the descriptions generally make the intended use clear.

Naming Consistency5/5

All tools consistently use the cityjson_ prefix followed by lowercase snake_case verb phrases such as list_imports, validate_geometry, assign_crs, and db_export. No camelCase, no arbitrary verb mixing, and the pattern is predictable across the entire set.

Tool Count2/5

At 37 tools, the server is well past the 25-tool threshold for a heavy surface. While the domain is broad, many tools are thin wrappers around the same underlying cjio engine, and the count adds cognitive load without clearly earning every slot.

Completeness4/5

The surface covers import/open, query, validation, transformation, export, conversion, database round-tripping, and spec/schema access, which is strong for CityJSON processing. Minor gaps remain, such as no obvious way to list open dataset handles or delete objects, but these are workable limitations rather than dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues