-
Notifications
You must be signed in to change notification settings - Fork 0
CityJSON MCP Tools
This page documents all 37 tools exposed by the CityJSON MCP server. It is generated from the current tool schemas and implementations, not merely from example prompts.
Most tools operate on a dataset_id, a handle such as cj_a1b2c3d4e5f6. A handle is returned by an import/open tool or by a transformation. The server stores the corresponding file in its managed workspace and persists the handle registry there.
Transformations are immutable: they create a new managed file and return a new dataset_id; they do not overwrite the source. A typical workflow is:
flowchart LR
A["cityjson_import"] --> B["cityjson_info / cityjson_query"]
B --> C["transformation(s)"]
C --> D["cityjson_validate"]
D --> E["cityjson_download"]
| Backend | Used for |
|---|---|
| Native JavaScript | Parsing, summaries, object lookup, filtering queries, bounding boxes, dataset bookkeeping |
cjio |
Subsetting, LoD/CRS/vertex/appearance/attribute transformations, merging and export |
cjval |
JSON syntax, schema, extension and structural validation |
val3dity |
3D geometry validation |
| CityGML Tools | CityGML ↔ CityJSON conversion |
cjdb |
PostgreSQL/PostGIS import and export; uses cjio for CityJSONSeq conversion |
| Network reference adapter | CityJSON specification, schemas and extension registry |
Tools do not normally invoke other MCP tools. Instead, the client chains tools into workflows. Where a tool internally combines multiple engines, most notably cityjson_validate and the database tools, this is called out explicitly below.
-
cityjson_importaccepts a filename from the configured input inbox, not a path. -
cityjson_open,cityjson_save, export and conversion paths must be insideCITYJSON_MCP_ALLOWED_ROOTS, the input directory, or the managed workspace as applicable. - Database passwords are never accepted as tool parameters. Set
PGPASSWORDin the server environment. - External commands run without a shell, have a timeout, and have bounded output.
- Normal results are returned both as JSON text and as MCP
structuredContent. Failures returnisError: truewith an error message and, for failed commands, exit/stdout/stderr details.
cityjson_backend_statuscityjson_opencityjson_list_importscityjson_importcityjson_import_textcityjson_downloadcityjson_infocityjson_save
cityjson_subsetcityjson_filter_lodcityjson_reprojectcityjson_assign_crscityjson_translatecityjson_clean_verticescityjson_triangulatecityjson_mergecityjson_attribute_renamecityjson_attribute_removecityjson_remove_texturescityjson_remove_materialscityjson_upgradecityjson_export
cityjson_spec_outlinecityjson_spec_readcityjson_schema_readcityjson_extensions_registrycityjson_extension_schema
Checks whether each external executable is installed and callable. Use it first when an operation that depends on a backend fails.
Engine: path policy plus executable probes for cjio, cjval, val3dity, CityGML Tools and cjdb.
Parameters: none ({}).
How it works: runs a short version or help command for every backend with a probe timeout of five seconds. It does not open or modify a dataset.
Returns: allowed roots, input/workspace paths, platform, and for every backend an available flag, command name, version/first output line or error.
Related workflow: call this before retrying a failed validator, transformation, conversion or database tool.
Opens an existing CityJSON file by a full path visible to the server and creates a dataset handle.
Engine: native parser and dataset manager.
| Parameter | Type | Required | Description |
|---|---|---|---|
source |
string | yes | Full path to a CityJSON file inside an allowed root. |
How it works: validates the path against the path policy, parses the JSON, verifies root type: "CityJSON", CityObjects and vertices, then registers the original file without copying it.
Returns: datasetId, path, byte size, version, object/vertex counts, type counts, LoDs, attributes, metadata, transform and extensions.
Use with: cityjson_info, query/validation/transformation tools, then cityjson_download. Prefer cityjson_import for attachments or inbox files.
Lists candidate JSON files in the configured input inbox.
Engine: native filesystem access.
Parameters: none ({}).
How it works: lists regular files ending in .json while ignoring letter case, collects their sizes and modification times, then sorts newest first and by filename.
Returns: inbox path, file count and files[] containing filename, sizeBytes and modifiedAt.
Use with: pass one returned filename to cityjson_import. It does not parse or register the files.
Imports a CityJSON file from the configured input inbox into the managed workspace.
Engine: native filesystem/parser and dataset manager.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filename |
string from 1 to 255 characters | no | none | Inbox filename only; paths are rejected. |
How it works: if filename is omitted, import succeeds only when exactly one JSON file exists. The source is copied to a uniquely named workspace file, parsed, summarized and registered. Invalid copies are removed.
Returns: new datasetId, source filename, size, operation and CityJSON summary.
Use with: this is the normal entry point for browser attachments and mounted input files. Use cityjson_list_imports if the filename is unknown.
Imports a complete CityJSON document supplied directly as MCP text.
Engine: native parser and dataset manager.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
content |
string | yes | none | Complete UTF 8 CityJSON JSON text. |
filename |
string from 1 to 200 characters | no | import.city.json |
Display filename for the workspace copy. |
How it works: checks CITYJSON_MCP_MAX_UPLOAD_BYTES (25 MiB by default), parses before writing, sanitizes the filename, creates a unique workspace file and registers it.
Returns: new datasetId, workspace path, size, operation and summary.
Use with: small programmatically generated documents only. Do not put normal or large attachments into this argument; use cityjson_import.
Prepares a managed CityJSON dataset for delivery to the client.
Engine: dataset manager and MCP resource responses.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Existing dataset handle. |
filename |
string from 1 to 200 characters | no | Suggested download filename; unsafe characters are replaced. |
How it works: resolves the managed file and creates a cityjson://download/... resource link. Datum's web host streams the file from its managed path. A standalone MCP client also receives the JSON as an embedded resource, provided it is below CITYJSON_MCP_MAX_DOWNLOAD_BYTES (25 MiB by default).
Returns: dataset ID, filename, MIME type, byte size, resource link and optionally embedded content.
Use with: the final step after transformations. Calling it does not alter the dataset.
Returns a compact summary of the dataset without placing the complete model in context.
Engine: native parser and dataset manager.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Existing dataset handle. |
How it works: reloads the registered file and scans its CityObjects and geometry metadata.
Returns: path/size, CityJSON version, object and vertex counts, counts per object type, distinct LoDs, attribute names, metadata, transform and extensions.
Use with: call immediately after import/open and before choosing query, transformation or validation steps.
Copies a managed CityJSON dataset to an explicit destination on the server.
Engine: dataset manager and path policy.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Existing dataset handle. |
destination |
string | yes | none | Writable path inside an allowed root/workspace. |
overwrite |
boolean | no | false |
Permit replacement of an existing file. |
How it works: validates the destination and creates its parent directory. With overwrite: false, an existing destination causes an error; otherwise the managed source is copied.
Returns: dataset ID, managed source path and savedTo path.
Use with: workflows that use folders mounted on the server. For ordinary chat delivery use cityjson_download.
Lists compact CityObject records with optional type filtering and pagination.
Engine: native JavaScript query engine.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Existing dataset handle. |
types |
string[] | no | all | Exact CityObject types to include. |
limit |
integer from 1 to 5000 | no | 100 |
Maximum returned objects. |
offset |
integer ≥ 0 | no | 0 |
Number of matches to skip. |
How it works: scans CityObjects, filters exact types and returns ID, type, all attributes, distinct LoDs, parent/child IDs. Bounding boxes remain null because no spatial filter requested their calculation.
Returns: totalMatched, offset, limit, and objects[].
Use with: discover IDs/types before cityjson_get_object or cityjson_subset.
Returns one complete CityObject plus its 3D bounding box in real world coordinates.
Engine: native JavaScript parser and geometry traversal.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Existing dataset handle. |
object_id |
string | yes | Exact key in CityObjects. |
How it works: looks up the object, recursively collects vertex indices referenced directly by its geometry boundaries, dequantizes vertices using transform.scale and transform.translate, and computes [minX,minY,minZ,maxX,maxY,maxZ]. It does not aggregate child geometry into a parent.
Returns: object ID, bounding box (or null when no referenced vertices exist) and the complete CityObject JSON.
Use with: inspect a selected result from cityjson_list_objects or cityjson_query.
Queries CityObjects by IDs, types, 2D spatial intersection and attribute predicates.
Engine: native JavaScript query engine.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Existing dataset handle. |
ids |
string[] | no | all | Exact object IDs. |
types |
string[] | no | all | Exact object types. |
bbox |
[minX,minY,maxX,maxY] |
no | none | 2D intersection box in the dataset CRS. |
attributes |
object | no | {} |
Attribute predicates described below. |
limit |
integer from 1 to 5000 | no | 100 |
Maximum returned records. |
offset |
integer ≥ 0 | no | 0 |
Matches to skip. |
Attribute values can be matched directly or with {eq}, {neq}, {gt}, {gte}, {lt}, {lte}, {contains} or {in: [...]}. Multiple ID/type/spatial/attribute conditions are combined with AND. Bounding boxes are computed only when bbox is supplied and use directly referenced geometry.
Returns: total count before pagination and compact object records. When spatial filtering is used, each record includes its calculated 3D bbox.
Use with: prefer this over downloading/returning a whole model; pass matching IDs to cityjson_subset.
Runs structural CityJSON validation with the official cjval command.
Engine: cjval.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Existing dataset handle. |
extension_schemas |
string[] | no | [] |
Readable extension schema paths on the server. |
How it works: executes cjval in report mode and supplies every allowed extension schema. Validator exit codes other than zero are captured as validation results rather than transport failures. Progress notifications are emitted when requested by the MCP client.
Returns: valid, exit code, parsed report when available, fallback stdout/stderr and duration.
Use with: use alone for schema/structure detail or as part of cityjson_validate for a complete check.
Runs CityJSON 3D geometry validation with val3dity.
Engine: val3dity.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Existing dataset handle. |
verbose |
boolean | no | false |
Request a verbose val3dity report. |
How it works: writes a report JSON file in the managed workspace and parses it. Validation exit codes other than zero remain valid tool responses. It derives validity from the report when possible and builds a compact summary.
Returns: validity, exit code, full report or path, standard output, standard error, duration and reportSummary with all invalid object IDs, error code counts and feature and primitive overviews.
Use with: feed reportSummary.invalidObjectIds to cityjson_subset to isolate invalid objects.
Runs complete structural and geometric validation concurrently.
Engines: internally calls the same cjval adapter used by cityjson_validate_schema and the same val3dity adapter used by cityjson_validate_geometry. It does not issue nested MCP calls.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Existing dataset handle. |
How it works: starts both validators in parallel, reports two progress steps, and uses Promise.allSettled so one backend failure does not erase the other result.
Returns: complete only when both validators produced boolean validity; combined valid (true, false, or null); and separate schema and geometry results. The geometry result includes the complete summary of invalid IDs.
Use with: recommended default validator after import or transformation. Use the individual tools when extension schemas or verbose geometry output are required.
All transformation tools in this section use cjio, keep their source datasets unchanged, write a new workspace file and register a new dataset_id, except cityjson_export, which writes an external format and returns file paths.
Creates a subset selected by one or more spatial, semantic or random criteria.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Source handle. |
ids |
string[] | conditionally | none | Object IDs supplied to the cjio ID filter. |
bbox |
[minX,minY,maxX,maxY] |
conditionally | none | Bounding box in the dataset CRS. |
radius |
[x,y,radius] |
conditionally | none | Center and positive radius. |
random |
positive integer | conditionally | none | Random object count. |
types |
string[] | conditionally | none | CityObject types supplied to the cjio type filter. |
exclude |
boolean | no | false |
Invert/exclude the selected set. |
At least one of ids, bbox, radius, random or types must be provided. Multiple arguments are passed together to cjio subset; exact combination behavior follows cjio.
Returns: new dataset summary, parent dataset ID, backend and command summary.
Use with: IDs from cityjson_query or invalid IDs from validation; then validate and download the derived handle.
Keeps one level of detail with cjio lod_filter.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Source handle. |
lod |
string that is not empty | yes | LoD identifier exactly as understood by cjio, e.g. 2.2. |
Returns: a new dataset handle/summary plus backend and command details.
Use with: inspect available values using cityjson_info first.
Reprojects coordinates with cjio crs_reproject.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Source handle; it must already define a CRS. |
epsg |
positive integer | yes | Target EPSG code. |
digit |
integer from 1 to 12 | no | Coordinate precision supplied to cjio. |
How it works: transforms coordinate values and updates CRS metadata.
Returns: new dataset handle/summary plus command details.
Use with: if the source lacks CRS metadata and you know it, first call cityjson_assign_crs.
Assigns or updates CRS metadata with cjio crs_assign without reprojecting coordinates.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Source handle. |
epsg |
positive integer | yes | EPSG code describing the existing coordinates. |
Returns: a new dataset handle and summary.
Important: use only when the coordinate values already use that CRS. Use cityjson_reproject to change coordinate values.
Translates model coordinates with cjio crs_translate.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Source handle. |
minxyz |
[x,y,z] |
no | Requested minimum coordinates supplied to cjio; when omitted cjio uses its default model minimum behavior. |
Returns: a new dataset handle and summary.
Use with: coordinate normalization or relocation workflows; inspect the transform and metadata afterward.
Runs cjio vertices_clean to remove duplicate and unreferenced/orphan vertices and remap indices.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
Returns: a new dataset handle and summary.
Use with: run before export or after operations that change geometry, then validate the result.
Triangulates surfaces with cjio triangulate.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Source handle. |
sloppy |
boolean | no | false |
Enables the less robust cjio fallback behavior. |
Returns: a new dataset handle and summary.
Use with: keep sloppy: false first; retry with true only when robust triangulation fails. Validate afterward.
Merges two or more managed CityJSON datasets with cjio.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_ids |
string[] (minimum 2) | yes | Source handles, in merge order. |
How it works: opens the first dataset as the cjio pipeline source, applies merge <path> for every remaining dataset, saves and registers one derived file with all source IDs as parents.
Returns: a new dataset handle/summary and command details.
Use with: datasets should have compatible CRS/semantics; inspect and validate the merged result.
Renames one attribute across CityObjects using cjio attribute_rename.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
old_name |
string that is not empty | yes |
new_name |
string that is not empty | yes |
Returns: a new dataset handle and summary.
Use with: inspect attributeNames via cityjson_info, transform, then query the new name to verify.
Removes one attribute across CityObjects using cjio attribute_remove.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
name |
string that is not empty | yes |
Returns: a new dataset handle and summary.
Use with: data minimization or schema cleanup; the source handle remains unchanged.
Removes all texture data with cjio textures_remove.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
Returns: a new dataset handle and summary.
Use with: reduce file size or prepare exports that contain only geometry. This removes textures globally, not selectively.
Removes all material data with cjio materials_remove.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
Returns: a new dataset handle and summary.
Use with: create datasets without appearance data. This removes materials globally, not selectively.
Upgrades an older supported CityJSON document with cjio upgrade.
| Parameter | Type | Required |
|---|---|---|
dataset_id |
string | yes |
How it works: the installed cjio version determines supported source versions and the target version.
Returns: a new dataset handle and summary.
Use with: inspect the resulting version and run cityjson_validate.
Exports a managed CityJSON dataset to another file format.
Engine: cjio export.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Source handle. |
format |
enum | yes | none |
jsonl, obj, stl, glb or b3dm. |
destination |
string | yes | none | Writable output path on the server. |
sloppy |
boolean | no | false |
Enables the less robust cjio export behavior. |
How it works: validates the destination, invokes cjio, then reports files that actually exist. OBJ export also checks for a sibling .mtl file.
Returns: source dataset ID, format, requested destination, produced files and command output.
Important: exported formats are not registered as CityJSON dataset handles. Use the host filesystem/output mount to retrieve them.
Converts CityGML 1.0/2.0/3.0 GML/XML to CityJSON.
Engine: CityGML Tools conversion to CityJSON plus the dataset manager.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
source |
string | yes | none | Readable CityGML file path inside an allowed root. |
json_lines |
boolean | no | false |
Request CityJSONSeq/JSON Lines output. |
How it works: creates a unique workspace output directory, runs the converter and recursively lists generated .json and .jsonl files. A regular .json output is automatically parsed and registered; output that contains only JSON Lines is not.
Returns: input, output directory, produced files, optional derived dataset summary, stdout/stderr.
Use with: when derived exists, use its datasetId with the normal inspection/validation tools.
Converts a managed CityJSON dataset to CityGML.
Engine: CityGML Tools conversion from CityJSON.
| Parameter | Type | Required | Description |
|---|---|---|---|
dataset_id |
string | yes | Source handle. |
crs_name |
string | no | CRS name override supplied to the converter. |
output_directory |
string | no | Writable destination directory; otherwise a unique workspace directory is used. |
How it works: creates and validates the output directory, runs the converter, then recursively lists .gml and .xml outputs. The installed converter version controls the default encoding.
Returns: dataset ID, output directory, produced files and command output.
Imports a managed dataset into PostgreSQL/PostGIS through cjdb.
Engines: internally uses cjio export jsonl to create CityJSONSeq, then cjdb import.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dataset_id |
string | yes | none | Source handle. |
connection.host |
string | yes | none | PostgreSQL host. |
connection.user |
string | yes | none | PostgreSQL user. |
connection.database |
string | yes | none | Database name. |
connection.schema |
identifier string | yes | none | Schema beginning with a letter or underscore, followed by letters, numbers or underscores. |
attribute_indexes |
string[] | no | [] |
Full attribute indexes supplied to cjdb. |
partial_attribute_indexes |
string[] | no | [] |
Partial attribute indexes supplied to cjdb. |
How it works: exports the dataset to a managed .city.jsonl file, then imports that file with the supplied connection options. Passwords come from PGPASSWORD.
Returns: dataset ID, connection details without the password, intermediate CityJSONSeq path and command output.
Side effects: writes to the target database and creates an intermediate workspace file.
Exports all objects or a subset defined by a SELECT query from cjdb.
Engines: cjdb export; with collect: true, internally uses cjio to collect CityJSONSeq into regular CityJSON.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connection.host |
string | yes | none | PostgreSQL host. |
connection.user |
string | yes | none | PostgreSQL user. |
connection.database |
string | yes | none | Database name. |
connection.schema |
identifier string | yes | none | Schema beginning with a letter or underscore, followed by letters, numbers or underscores. |
query |
string | no | all objects | SELECT that does not modify data and returns object_id rows. |
collect |
boolean | no | true |
Collect .jsonl into regular CityJSON and register a handle. |
Query guard: the query must begin with SELECT; semicolons and modifying or administration keywords are rejected. This is defense in depth, not a database security boundary. Use a restricted database role.
Returns: connection details without the password, CityJSONSeq path, optional derived dataset summary and command output.
Use with: when collected, continue with derived.datasetId; with collect: false, consume the .city.jsonl file from the workspace/output environment.
Returns the bundled CityJSON 2.0.2 reference index.
Engine: local bundled resource; no network request.
Parameters: none ({}).
Returns: current reference version, canonical specification/schema URLs, schema names and the bundled outline/chapters.
Use with: discover the right source or schema before calling one of the network reference tools.
Reads the canonical CityJSON 2.0.2 living specification as plain text.
Engine: network fetch plus conversion from HTML to text.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string | no | none | Search term that ignores letter case. |
max_chars |
integer from 1000 to 150000 | no | 60000 |
Maximum returned text window. |
How it works: fetches the canonical specification URL from the bundled index and strips scripts, styles and HTML tags. Without a query it returns the beginning; with a query it returns a centered context window or found: false.
Returns: source URL, version, text, truncation flag and query/found metadata when applicable.
Fetches one canonical CityJSON 2.0.2 JSON Schema.
Engine: bundled index plus network fetch.
| Parameter | Type | Required | Default |
|---|---|---|---|
name |
enum | no | cityjson.schema.json |
Allowed names:
cityjson.schema.jsoncityjson.min.schema.jsoncityjsonfeature.schema.jsoncityjsonfeature.min.schema.jsoncityobjects.schema.jsongeomprimitives.schema.jsongeomtemplates.schema.jsonmetadata.schema.jsonappearance.schema.json
How it works: verifies the name against the bundled allowlist, fetches the canonical URL and requires valid JSON.
Returns: source URL, CityJSON version, schema name and parsed schema object.
Reads the official CityJSON Extensions registry.
Engine: network fetch of the registry repository README.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string | no | none | Extension or search term that ignores letter case. |
max_chars |
integer from 1000 to 100000 | no | 50000 |
Maximum returned text window. |
How it works: without a query it returns the beginning of the registry; with a query it returns a centered context window or found: false.
Returns: source URL, text, truncation flag and query/found metadata.
Use with: identify a registry extension name/version before cityjson_extension_schema.
Fetches one registered CityJSON Extension schema from the canonical registry URL.
Engine: validated URL construction plus network JSON fetch.
| Parameter | Type | Required | Constraints |
|---|---|---|---|
name |
string | yes | Lowercase letters and numbers, with optional parts separated by single hyphens. |
version |
string | yes | Semantic version such as 2.0.0, optionally with prerelease/build suffix. |
How it works: constructs https://cityjson.github.io/extensions/<name>/<version>/<name>.ext.json, fetches it and requires JSON. Strict parameter patterns prevent arbitrary URL/path injection.
Returns: source URL, extension name/version and parsed schema object.
cityjson_import(filename)
→ cityjson_info(dataset_id)
→ cityjson_validate(dataset_id)
cityjson_validate(dataset_id)
→ read geometry.reportSummary.invalidObjectIds
→ cityjson_subset(dataset_id, ids)
→ cityjson_download(new_dataset_id)
cityjson_query(dataset_id, types/bbox/attributes)
→ cityjson_subset(dataset_id, ids)
→ cityjson_filter_lod(new_dataset_id, lod)
→ cityjson_reproject(new_dataset_id, epsg)
→ cityjson_validate(new_dataset_id)
→ cityjson_download(new_dataset_id)
cityjson_import
→ cityjson_db_import (internally CityJSON → CityJSONSeq via cjio)
→ cityjson_db_export (optionally CityJSONSeq → CityJSON via cjio)
→ cityjson_info / cityjson_validate
| Variable | Default | Effect |
|---|---|---|
CITYJSON_MCP_ALLOWED_ROOTS |
current directory | Read/write roots (: separated on macOS/Linux, ; on Windows). |
CITYJSON_MCP_INPUT |
./input |
Inbox used by list/import. |
CITYJSON_MCP_WORKSPACE |
managed directory | Managed originals, derived files, reports and registry. |
CITYJSON_MCP_COMMAND_TIMEOUT_MS |
120000 |
External command timeout. |
CITYJSON_MCP_MAX_UPLOAD_BYTES |
25 MiB |
cityjson_import_text size limit. |
CITYJSON_MCP_MAX_DOWNLOAD_BYTES |
25 MiB | Standalone inline download limit. |
CJIO_BIN |
cjio |
cjio executable override. |
CJVAL_BIN |
cjval |
cjval executable override. |
VAL3DITY_BIN |
val3dity |
val3dity executable override. |
CITYGML_TOOLS_BIN |
CityGML Tools | Converter executable override. |
CJDB_BIN |
cjdb |
cjdb executable override. |
PGPASSWORD |
not set | PostgreSQL password used by cjdb. |
The source of truth is src/tools/register-tools.mjs, with implementation details in src/core/ and src/adapters/. When a tool schema or behavior changes, update this page and the test for tool coverage together.