Skip to main content
Glama
cityjson-mcp

cityjson-mcp

by Yarroudh

Convert CityJSON to CityGML

cityjson_to_citygml

Convert an opened CityJSON dataset to CityGML using citygml-tools to support CityGML-based 3D city model workflows.

Instructions

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

Input Schema

NameRequiredDescriptionDefault
crs_nameNo
dataset_idYesFilename returned by cityjson_open, cityjson_import, or a transformation. Internal dataset handles also work for compatibility.
output_directoryNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.3.0
    • changedInput schema / properties / dataset_id / description
      Previous value: -"Dataset handle returned by cityjson_import, cityjson_open, cityjson_import_text, or another transformation tool."New value: +"Filename returned by cityjson_open, cityjson_import, or a transformation. Internal dataset handles also work for compatibility."
  2. First observedv0.1.0

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It does disclose genuinely non-obvious behavior — that citygml-tools performs the conversion and that the installed version determines the default target encoding — but it says nothing about what artifact is produced, where it lands (output_directory), whether the source dataset is consumed or preserved, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, with no filler. It is efficient, though its brevity is part of why other dimensions are under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and two of three parameters undocumented, the definition is thin for a conversion tool. An agent cannot tell what the call returns (a file path, a dataset handle, or an inline GML payload) or what crs_name/output_directory do, which is required information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: dataset_id is documented, but crs_name and output_directory are undocumented in both schema and description. The description never mentions reprojection/crs handling or output location, so it fails to compensate for the coverage gap; only the encoding remark loosely touches target-format behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource pair ('Convert an opened CityJSON dataset to CityGML') plus the underlying engine (citygml-tools). The direction of conversion distinguishes it implicitly from the reverse-direction sibling citygml_to_cityjson, though it never names that sibling or cityjson_export explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the word 'opened' hints that a dataset must first be opened via cityjson_open/cityjson_import, and the conversion direction makes the general use case obvious. There is no explicit guidance on when to choose this over cityjson_export or how it differs from the reverse converter, and no stated preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.