Skip to main content
Glama

get_variants

Retrieve genetic variants within a specified genomic region from GTEx datasets to support genomic research and analysis.

Instructions

Get genetic variants in a genomic region

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chrYesChromosome (e.g., chr1, chr2, chrX)
datasetIdNoGTEx dataset ID (default: gtex_v8)gtex_v8
endYesEnd position (1-based)
startYesStart position (1-based)

Implementation Reference

  • Core handler function implementing the get_variants tool. Validates input, calls API client, formats variant data into a readable markdown summary including genomic positions, alleles, dbSNP IDs, and population genetics info.
    async getVariants(args: any) { if (!args.snpId && !args.variantId && !args.chromosome) { throw new Error('At least one of snpId, variantId, or chromosome must be provided'); } const result = await this.apiClient.getVariants({ snpId: args.snpId, variantId: args.variantId, datasetId: args.datasetId || 'gtex_v8', chromosome: args.chromosome, pos: args.positions ? (Array.isArray(args.positions) ? args.positions : [args.positions]) : undefined, page: args.page || 0, itemsPerPage: args.itemsPerPage || 250 }); if (result.error) { return { content: [{ type: "text", text: `Error retrieving variant information: ${result.error}` }], isError: true }; } const variants = result.data || []; if (variants.length === 0) { return { content: [{ type: "text", text: "No variants found matching the specified criteria." }] }; } let output = `**Variant Information (${variants.length} variants)**\n`; output += `Dataset: ${variants[0]?.datasetId}\n\n`; variants.forEach((variant, index) => { output += `### ${index + 1}. ${variant.variantId}\n`; output += `**Genomic Information:**\n`; output += ` • Position: ${variant.chromosome}:${variant.pos.toLocaleString()}\n`; output += ` • Alleles: ${variant.ref} → ${variant.alt}\n`; if (variant.snpId && variant.snpId !== 'nan') { output += ` • dbSNP ID: ${variant.snpId}\n`; } if (variant.b37VariantId) { output += ` • GRCh37 ID: ${variant.b37VariantId}\n`; } output += `\n**Population Genetics:**\n`; output += ` • MAF ≥1%: ${variant.maf01 ? 'Yes' : 'No'}\n`; if (variant.shorthand) { output += ` • Shorthand: ${variant.shorthand}\n`; } output += '\n'; }); if (result.paging_info && result.paging_info.totalNumberOfItems > variants.length) { output += `**Note:** Showing ${variants.length} of ${result.paging_info.totalNumberOfItems} total results.\n`; } return { content: [{ type: "text", text: output.trim() }] }; }
  • src/index.ts:727-732 (registration)
    Tool dispatch/registration in the main MCP server CallToolRequest handler. Maps input parameters (chr, start, end, datasetId) to the referenceHandlers.getVariants method.
    if (name === "get_variants") { return await referenceHandlers.getVariants({ chromosome: args?.chr, positions: args?.start && args?.end ? [args.start, args.end] : undefined, datasetId: args?.datasetId });
  • MCP tool registration including name, description, and input schema definition for get_variants in the ListTools response.
    name: "get_variants", description: "Get genetic variants in a genomic region", inputSchema: { type: "object", properties: { chr: { type: "string", description: "Chromosome (e.g., chr1, chr2, chrX)" }, start: { type: "integer", description: "Start position (1-based)" }, end: { type: "integer", description: "End position (1-based)" }, datasetId: { type: "string", description: "GTEx dataset ID (default: gtex_v8)", default: "gtex_v8" } }, required: ["chr", "start", "end"] } },
  • TypeScript interface defining parameters for the getVariants API call, used by the handler and API client.
    export interface GetVariantsParams { snpId?: string; variantId?: string; datasetId?: string; chromosome?: string; pos?: number[]; page?: number; itemsPerPage?: number; }
  • API client method that makes the HTTP request to GTEx Portal API /dataset/variant endpoint to fetch variant data.
    async getVariants(params: GetVariantsParams): Promise<GTExApiResponse<Variant[]>> { try { const queryParams = this.buildQueryParams({ snpId: params.snpId, variantId: params.variantId, datasetId: params.datasetId || 'gtex_v8', chromosome: params.chromosome, pos: params.pos, page: params.page || 0, itemsPerPage: params.itemsPerPage || 250 }); const response = await this.axiosInstance.get(`/dataset/variant?${queryParams}`); return { data: response.data.data, paging_info: response.data.paging_info }; } catch (error) {

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Augmented-Nature/GTEx-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server