Skip to main content
Glama
ImmPort MCP Server

ImmPort MCP Server

Official
by ImmPortDB

Lookup Controlled Vocabulary

lookup_controlled_vocabulary

Retrieve valid controlled vocabulary values for any ImmPort lookup table to validate and standardize immunology study metadata, subject demographics, assays, and sample annotations.

Instructions

Get valid controlled vocabulary values for any ImmPort lookup table. Results are served from an in-memory cache (pre-fetched at startup, refreshed every 24 hours) — no API call is made at query time.

Available tables: lkRace: Race values used in subject demographic data lkEthnicity: Ethnicity values used in subject demographic data lkSpecies: Species values (e.g. Homo sapiens, Mus musculus) lkSubjectLocation: Subject location values used in studies lkAncestralPopulation: Ancestral population values used in subject data lkSex: Sex values (e.g. Female, Male, Not Specified) lkAgeEvent: Age event values (e.g. Age at enrollment) lkDisease: Disease/condition names with disease ontology IDs lkDiseaseStage: Disease stage values lkResearchFocus: Research focus areas (e.g. Vaccine Response, Allergy) lkSampleType: Biosample types (e.g. PBMC, Whole Blood, Serum) lkSourceType: Source types (e.g. File, Public Repository) lkExpMeasurementTech: Measurement techniques (e.g. Flow Cytometry, ELISA, RNA sequencing) lkExpsampleResultSchema: Experiment sample result schema values (e.g. PUBLIC REPOSITORY) lkReagentType: Reagent types used in experiment metadata lkPlateType: Plate types used in experiment/assay metadata lkAnalyte: Analyte reference: gene symbols, gene IDs, UniProt entries, protein ontology IDs, immunology symbols lkProteinName: Protein names with UniProt IDs lkHmdb: HMDB metabolite entries used in metabolomics data lkLocusName: HLA locus names (e.g. HLA-A, HLA-B, HLA-DRB1) lkCellPopulation: Cell populations that appear in flow cytometry (FCS) response data lkCellPopulationMarker: Cell population marker values used in flow cytometry panel metadata lkStudyPanel: Study panel values used in study categorization lkStudyFileType: Study file types (e.g. study_file, protocol, result) lkPublicRepository: Public repository names (e.g. GEO, SRA, ArrayExpress) lkDataCompleteness: Data completeness level descriptions lkVisibilityCategory: Visibility category values lkPersonnelRole: Personnel roles (e.g. Principal Investigator, Co-Investigator) lkUserRoleType: User role types used in system access control lkOrganization: Organization names used in study personnel data lkTimeUnit: Time units (e.g. Days, Hours, Weeks) lkT0Event: T0 event values (study time zero reference events) lkUnitOfMeasure: Units of measure used across all result types lkAdverseEventSeverity: Adverse event severity values (e.g. Grade 1 Mild, Grade 2 Moderate) lkCompoundRole: Compound/intervention roles (e.g. Vaccine, Adjuvant) lkCriterionCategory: Criterion categories used in study eligibility criteria lkExposureProcess: Exposure process values used in immunization/exposure data lkExposureMaterial: Exposure materials (e.g. vaccine names, pathogens) lkVirusStrain: Virus strains with taxonomy IDs used in HAI/neutralization assays lkTranscriptType: Transcript types (e.g. mRNA, microRNA) lkLabTestPanelName: Lab test panel names (e.g. CBC, BMP) — response field only, not filterable lkLabTestName: Lab test names with CDISC codes — response field only, not filterable lkMassSpectrometryType: Mass spectrometry types used in proteomics/metabolomics metadata lkFileDetail: File detail types used in study file metadata lkProtocolType: Protocol types (e.g. Informed Consent, Lab Test)

Input Schema

NameRequiredDescriptionDefault
tableYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.0

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and delivers a genuinely non-obvious behavioral trait: results come from an in-memory cache pre-fetched at startup and refreshed every 24 hours, with no API call at query time. That tells the agent about latency and the maximum staleness bound. It stops short of describing the return shape or whether the values are plain strings versus records with IDs.

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?

The opening two sentences front-load purpose and caching behavior, then a clean one-line-per-table list follows. Length is justified by 45 distinct enum values that each need disambiguation. Minor redundancy in repeating every enum name, but the accompanying glosses mean each line earns its place.

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

Completeness3/5

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

For a single-parameter lookup with no output schema and no annotations, the main remaining question is what comes back — a flat list of strings, or objects carrying ontology/UniProt/CDISC IDs (hinted at for lkDisease, lkProteinName, lkLabTestName but never stated). That gap matters because the agent cannot know whether it can pass returned values directly into filters or must extract a field.

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

Parameters5/5

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

Schema description coverage is 0% — the enum lists bare identifiers like lkHmdb and lkVirusStrain with no explanation. The description fully compensates by giving a one-line semantic gloss for every single enum value, including example members and the domain each table serves, which is exactly the information needed to choose the right table.

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?

States a specific verb and resource ('Get valid controlled vocabulary values for any ImmPort lookup table') and enumerates all 45 tables with what each contains, so the scope is unmistakable. It does not explicitly contrast itself with siblings like get_data_model or search_studies, so an agent must infer the boundary from the resource name alone.

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 agent can deduce this is the tool for validating or discovering filter values before calling search_studies or get_assay_results. There is no explicit 'use this when...' statement, no when-not guidance, and no stated prerequisite that vocabulary values are required inputs elsewhere. The inline notes ('response field only, not filterable' on lkLabTestPanelName/lkLabTestName) are the closest thing to usage guidance.

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