Skip to main content
Glama
shukwong

gnomAD MCP Server

by shukwong

get_coverage

Retrieve genomic coverage data for genes from gnomAD to analyze sequencing depth and variant detection reliability in population genetics studies.

Instructions

Get coverage information for a gene

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gene_idNoEnsembl gene ID
gene_symbolNoGene symbol
datasetNoDataset IDgnomad_r4
reference_genomeNoReference genomeGRCh38

Implementation Reference

  • Handler logic for the 'get_coverage' tool within the CallToolRequestSchema handler's switch statement. It validates input, makes a GraphQL request to fetch coverage data, and formats the result.
    case "get_coverage":
      if (!args.gene_id && !args.gene_symbol) {
        throw new Error("Either gene_id or gene_symbol must be provided");
      }
      result = await makeGraphQLRequest(QUERIES.getCoverage, {
        geneId: (args.gene_id as string) || null,
        geneSymbol: (args.gene_symbol as string) || null,
        datasetId: parseDatasetId((args.dataset as string) || "gnomad_r4"),
        referenceGenome: parseReferenceGenome((args.reference_genome as string) || "GRCh38"),
      });
      formattedResult = result.data?.gene?.coverage || null;
      break;
  • src/index.ts:558-584 (registration)
    Registration of the 'get_coverage' tool in the ListToolsRequestSchema handler, including name, description, and input schema.
    {
      name: "get_coverage",
      description: "Get coverage information for a gene",
      inputSchema: {
        type: "object",
        properties: {
          gene_id: {
            type: "string",
            description: "Ensembl gene ID",
          },
          gene_symbol: {
            type: "string",
            description: "Gene symbol",
          },
          dataset: {
            type: "string",
            description: "Dataset ID",
            default: "gnomad_r4",
          },
          reference_genome: {
            type: "string",
            description: "Reference genome",
            default: "GRCh38",
          },
        },
      },
    },
  • GraphQL query schema for fetching gene coverage data, defined in the QUERIES object and used by the handler.
    getCoverage: `
      query GetCoverage($geneId: String, $geneSymbol: String, $datasetId: DatasetId!, $referenceGenome: ReferenceGenomeId!) {
        gene(gene_id: $geneId, gene_symbol: $geneSymbol, reference_genome: $referenceGenome) {
          coverage(dataset: $datasetId) {
            exome {
              pos
              mean
              median
              over_1
              over_5
              over_10
              over_15
              over_20
              over_25
              over_30
              over_50
              over_100
            }
            genome {
              pos
              mean
              median
              over_1
              over_5
              over_10
              over_15
              over_20
              over_25
              over_30
              over_50
              over_100
            }
          }
        }
      }
    `,
  • Helper function used by the get_coverage handler to execute GraphQL requests to the gnomAD API.
    async function makeGraphQLRequest(query: string, variables: Record<string, any> = {}): Promise<GnomadResponse> {
      const response: Response = await fetch(GNOMAD_API_URL, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          query,
          variables,
        }),
      });
    
      if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
      }
    
      return await response.json() as GnomadResponse;
    }

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/shukwong/gnomad-mcp-server'

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