ipt-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IPT_URL | No | The base URL of the IPT server. Defaults to https://ipt.gbif.org. | https://ipt.gbif.org |
| IPT_EMAIL | No | The email address used to log in to the IPT. | |
| IPT_PASSWORD | No | The password used to log in to the IPT. | |
| IPT_READONLY | No | Set to '1' to make every write operation refuse to run on all IPTs. | 0 |
| IPT_INSTANCES | No | Path to a JSON file, or inline JSON, containing configuration for multiple IPTs. Replaces IPT_URL, IPT_EMAIL, and IPT_PASSWORD. | |
| IPT_ALLOWED_DIRS | No | Colon-separated list of directories from which local files may be read or uploaded. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ipt_list_instancesA | The IPT servers this MCP can talk to (name, URL, default, whether it has credentials, read-only). Never shows credentials. |
| ipt_healthA | IPT status (disk, registry/network flags). Public. |
| ipt_list_datasetsA | List published datasets of the IPT (id, title, version, records, core, DwC-A/EML URLs). Public: private resources do not appear. |
| ipt_get_metadataA | Fetch a published dataset's EML and return a summary (title, abstract, license, contact count). |
| validate_tsvA | Validate a local Darwin Core text file BEFORE uploading it: column-count consistency (embedded newlines/tabs), UTF-8/mojibake, year/month/day and lat/long ranges, duplicate occurrenceID. Streams; safe for multi-GB files. |
| ipt_list_managed_resourcesA | Resources the configured IPT user can manage (needs IPT_EMAIL/IPT_PASSWORD). |
| ipt_get_statusA | Status of a resource: visibility, sources (rows/columns), mappings, metadata validity and problems, published/next version. |
| ipt_validate_resourceA | Pre-flight check before publishing: invalid metadata (per section), missing/unanalysed sources, missing mappings, unmapped required terms. The IPT itself does NOT block these. |
| ipt_list_extensionsC | Extension row types available for mapping on this resource. |
| ipt_get_mappingB | Show a mapping: source columns, ID column, the term assignments (mapped terms and required unmapped terms unless all=true), the source columns that are not mapped to any term, and the required terms still unmapped. |
| ipt_peek_sourceC | First rows of a source as the IPT parsed them. |
| ipt_get_publication_statusC | State of the latest publication (running/completed/failed) and the tail of the publication log. |
| ipt_get_metadata_formA | Editable fields (names and current values) of a metadata section, to use with ipt_set_metadata_fields. Sections: basic, contacts, acknowledgements, geocoverage, taxcoverage, tempcoverage, additionalDescription, keywords, project, methods, citations, collections, physical, additional. |
| ipt_get_draft_emlC | The draft EML the IPT currently holds for the resource. |
| ipt_get_settingsC | Publication options form (page: auto-publish | publication-settings). |
| ipt_create_resourceB | [writes to the IPT] Create a resource, empty or importing a Darwin Core Archive (.zip) from a local path. |
| ipt_set_basic_metadataA | [writes to the IPT] Set title, description, license (cczero | ccby | ccbync), language, update frequency, type. Omitted fields are left as they are. |
| ipt_set_contactsA | [writes to the IPT] Replace agent lists. The IPT requires at least one contact and one creator; lists not given keep their current rows. Each agent needs a last name, an organisation or a position. |
| ipt_set_coverageA | [writes to the IPT] Replace geographic, taxonomic and/or temporal coverage (only the ones given). |
| ipt_set_keywords_methodsC | [writes to the IPT] Replace keyword sets and/or methods (study extent, sampling, quality control, steps). |
| ipt_set_metadata_fieldsA | [writes to the IPT] Save any metadata section by raw field names (get them with ipt_get_metadata_form). Repeatable items use indexed names such as eml.citation.citation or eml.physicalData[0].name. |
| ipt_replace_emlB | [writes to the IPT] Replace the resource's metadata with an EML file from a local path. |
| ipt_add_sourceA | [writes to the IPT] Add a data source: a local file (.txt/.csv/.tsv/.xlsx/.zip), a URL, or an (unconfigured) SQL source. Text files are validated first and refused when they have problems (embedded newlines/tabs, bad encoding, …) unless skipValidation. |
| ipt_configure_sourceB | [writes to the IPT] Set how a source is parsed (delimiter, quote character, header lines, encoding, date format) and re-analyse it; for SQL sources pass raw |
| ipt_delete_sourceA | [writes to the IPT] Delete a source (its mappings must be removed first). |
| ipt_add_mappingA | [writes to the IPT] Map a source to an extension (Occurrence, Taxon, Event, …). The IPT automaps columns by header name. Refuses a second mapping of the same row type unless allowDuplicate (it multiplies published records). |
| ipt_set_mappingB | [writes to the IPT] Adjust a mapping: columns maps a term (URI, dwc:name or name) to a source column header (null to unmap); defaults gives constant values; idColumn picks the record ID column. |
| ipt_delete_mappingC | [writes to the IPT] Delete a mapping. |
| ipt_set_settingsC | [writes to the IPT] Save publication options (page auto-publish: updateFrequency, updateFrequencyDayOfWeek, updateFrequencyDay, updateFrequencyTime, skipUnchanged, …). |
| ipt_publishA | [writes to the IPT] Validate then publish a new version (DwC-A + EML). Refuses when the pre-flight finds problems. Waits for completion by default. Note: making a resource public also needs a publication to take effect. |
| ipt_set_visibilityC | [writes to the IPT] Request public/private visibility. The IPT applies the change at the next publication (a new version). |
| ipt_delete_resourceA | [writes to the IPT] Delete a resource from the IPT (never touches the GBIF registry). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Tools are broadly distinct: reads vs writes, resources vs mappings vs metadata, and validation stages are clearly separated. The main ambiguity is that several specialized metadata setters (basic, contacts, coverage, keywords/methods) overlap with the generic ipt_set_metadata_fields, so an agent could choose either route.
The dominant pattern is ipt_<verb>_<noun>, with list for collections and get for single items. Minor deviations include `ipt_health` with no verb, `validate_tsv` lacking the ipt_ prefix, and `ipt_publish` being a bare verb.
At 32 tools, the server is above the 25+ threshold and feels heavy for an agent to navigate. Several specialized metadata setters duplicate the generic ipt_set_metadata_fields and could be consolidated without losing functionality.
The surface covers the full publish lifecycle: create resources, add/configure sources, map terms, validate, publish, change visibility, and delete resources. Minor gaps exist, such as refreshing an existing URL source or directly downloading a published archive, but agents can work around them.