Skip to main content
Glama

get_citations

Find articles that cite a specific PubMed publication to track forward citations and discover related research.

Instructions

Get articles that cite a given PubMed article (PMID). Useful for forward citation tracking.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pmidYesPubMed ID to find citing articles for

Implementation Reference

  • The getCitations function that executes the tool logic. It queries NCBI's elink API to find articles that cite a given PMID, fetches article details for up to 20 citing articles, and returns a JSON response with the citing count and article summaries.
    export async function getCitations(args: z.infer<typeof getCitationsSchema>): Promise<string> {
      const result = await client.elink([args.pmid], "pubmed_pubmed_citedin") as {
        linksets?: Array<{ linksetdbs?: Array<{ links?: string[] }> }>;
      };
    
      const links = result.linksets?.[0]?.linksetdbs?.[0]?.links || [];
    
      if (links.length === 0) {
        return JSON.stringify({ pmid: args.pmid, citing_count: 0, citing_articles: [] }, null, 2);
      }
    
      // Fetch summaries for citing articles (max 20)
      const fetchIds = links.slice(0, 20);
      const xml = await client.efetch(fetchIds);
      const articles = parseArticles(xml);
    
      return JSON.stringify({
        pmid: args.pmid,
        citing_count: links.length,
        showing: articles.length,
        citing_articles: articles.map(formatArticleSummary),
      }, null, 2);
    }
  • The getCitationsSchema defines input validation for the tool, accepting a single 'pmid' string parameter (PubMed ID to find citing articles for).
    export const getCitationsSchema = z.object({
      pmid: z.string().describe("PubMed ID to find citing articles for"),
    });
  • src/index.ts:43-50 (registration)
    The get_citations tool is registered with the MCP server, mapping the schema shape to the getCitations handler function with a description explaining its forward citation tracking purpose.
    server.tool(
      "get_citations",
      "Get articles that cite a given PubMed article (PMID). Useful for forward citation tracking.",
      getCitationsSchema.shape,
      async (args) => ({
        content: [{ type: "text", text: await getCitations(getCitationsSchema.parse(args)) }],
      })
    );
  • The formatArticleSummary helper function used by getCitations to format article metadata (PMID, title, authors, journal, publication date, DOI, and abstract) into a concise summary object.
    function formatArticleSummary(a: ArticleMetadata) {
      return {
        pmid: a.pmid,
        title: a.title,
        authors: a.authors.slice(0, 5).join(", ") + (a.authors.length > 5 ? " et al." : ""),
        journal: a.journal,
        pub_date: a.pubDate,
        doi: a.doi || undefined,
        abstract: a.abstract.length > 500 ? a.abstract.slice(0, 500) + "..." : a.abstract,
      };
    }

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/PetrefiedThunder/mcp-pubmed'

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