Koskamo

Zovo Citation Generator MCP

An MCP server that retrieves metadata for DOIs and ISBNs to generate formatted citations in APA 7, MLA 9, and Chicago styles. It supports manual entry for sources without identifiers and allows downloads in BibTeX, RIS, and text formats.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Citation Generator MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://citation-generator.zovo.one/mcp
Vendor documentation

What you can do with it

  • Convert a DOI into an APA 7 citation
  • Cite an ISBN in MLA 9 format
  • Generate a BibTeX file for multiple DOIs

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
citation-generator 1.0.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo Citation Generator turns a DOI or an ISBN into APA 7, MLA 9 and Chicago citations from live Crossref and Open Library metadata, and writes BibTeX, RIS and text reference-list files. Call generate_citations for DOIs/ISBNs; call format_manual_citation for a source that has no DOI or ISBN. Metadata is never invented.

Tools

2 advertised

generate_citations — Generate citations from DOI or ISBN
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants to cite this for me, build a works cited list or a reference generator: give a DOI, an ISBN or a list of them and get APA 7, MLA 9 or Chicago citations plus BibTeX and RIS files. Use it for a doi to citation or isbn to citation, an mla citation generator or a chicago citation generator, or to make bibtex from doi. The metadata is looked up live on Crossref and Open Library. A record those services do not have returns status not_found for that item and the other items still work. Do not use for a source that has no DOI or ISBN, or to cite legal cases, patents or datasets; use format_manual_citation for a manual source.

generate_citations input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "identifiers"
  ],
  "properties": {
    "style": {
      "enum": [
        "apa7",
        "mla9",
        "chicago_ad",
        "chicago_nb"
      ],
      "type": "string",
      "description": "Citation style: apa7 (default), mla9, chicago_ad or chicago_nb."
    },
    "identifiers": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 25,
      "minItems": 1,
      "description": "1 to 25 DOIs or ISBNs, e.g. [\"10.1038/nphys1170\"] or [\"9780140328721\"]; a https://doi.org/ link and hyphens are accepted."
    },
    "keep_capitals": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100,
        "minLength": 1,
        "description": "A word to preserve as supplied, e.g. Studies."
      },
      "maxItems": 100,
      "description": "Words to keep as written, matched case-insensitively, e.g. [\"Studies\", \"London\"]."
    }
  }
}
generate_citations output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "style",
    "count",
    "resolved",
    "not_found",
    "items",
    "reference_order",
    "sources",
    "downloads",
    "note"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "count": {
      "type": "number"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "identifier",
          "status",
          "source",
          "type",
          "warnings"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "citation": {
            "type": "string"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "identifier": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "style": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "url",
          "retrieved_utc"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "retrieved_utc": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "resolved": {
      "type": "number"
    },
    "downloads": {
      "type": "object",
      "required": [
        "bib",
        "ris",
        "txt"
      ],
      "properties": {
        "bib": {
          "type": "string"
        },
        "ris": {
          "type": "string"
        },
        "txt": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "not_found": {
      "type": "number"
    },
    "reference_order": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
generate_citations annotations
{
  "title": "Generate citations from DOI or ISBN",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
format_manual_citation — Format a manual citation
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a citation generator, a reference generator apa or a works cited generator for a source they type in that has no DOI or ISBN: a book, a journal article, a chapter or a web page. Give the record fields and the style, and get the formatted citation plus BibTeX, RIS and text reference-list files. Use it for a cite this for me request about an old book or a class reading. Do not use it when the user has a DOI or an ISBN, or for legal cases, patents or datasets.

format_manual_citation input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "record"
  ],
  "properties": {
    "style": {
      "enum": [
        "apa7",
        "mla9",
        "chicago_ad",
        "chicago_nb"
      ],
      "type": "string",
      "description": "Citation style: apa7 (default), mla9, chicago_ad or chicago_nb."
    },
    "record": {
      "type": "object",
      "required": [
        "type",
        "title"
      ],
      "properties": {
        "doi": {
          "type": "string",
          "maxLength": 300,
          "description": "DOI without the https://doi.org/ part, e.g. 10.1038/nphys1170."
        },
        "url": {
          "type": "string",
          "maxLength": 500,
          "description": "Web address, e.g. https://example.com/paper."
        },
        "isbn": {
          "type": "string",
          "maxLength": 40,
          "description": "ISBN-10 or ISBN-13, e.g. 9780140328721."
        },
        "type": {
          "enum": [
            "book",
            "journal_article",
            "web_page",
            "chapter"
          ],
          "type": "string",
          "description": "What kind of source it is, e.g. journal_article."
        },
        "year": {
          "type": "integer",
          "maximum": 9999,
          "minimum": 0,
          "description": "Year of publication as a whole number, e.g. 2009."
        },
        "issue": {
          "type": "string",
          "maxLength": 40,
          "description": "Issue or number, e.g. 1."
        },
        "pages": {
          "type": "string",
          "maxLength": 60,
          "description": "Page range, e.g. 11-12."
        },
        "title": {
          "type": "string",
          "maxLength": 500,
          "description": "Title of the work, e.g. Measured measurement."
        },
        "volume": {
          "type": "string",
          "maxLength": 40,
          "description": "Volume, e.g. 5."
        },
        "authors": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "family"
            ],
            "properties": {
              "given": {
                "type": "string",
                "maxLength": 100,
                "description": "Given name or initials, e.g. Markus or M."
              },
              "family": {
                "type": "string",
                "maxLength": 100,
                "description": "Family name (surname), e.g. Aspelmeyer."
              }
            }
          },
          "maxItems": 1000,
          "description": "Authors in the order they appear on the source, e.g. [{family:'Aspelmeyer',given:'Markus'}]."
        },
        "accessed": {
          "type": "string",
          "maxLength": 20,
          "description": "Date you accessed a web page, as YYYY-MM-DD, e.g. 2026-10-17."
        },
        "container": {
          "type": "string",
          "maxLength": 300,
          "description": "Journal name or book title that holds the work, e.g. Journal of Field Studies."
        },
        "publisher": {
          "type": "string",
          "maxLength": 200,
          "description": "Publisher or site name, e.g. Example Press."
        },
        "keep_capitals": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "description": "A word to preserve as supplied, e.g. Studies."
          },
          "maxItems": 100,
          "description": "Words to keep as written, matched case-insensitively, e.g. [\"Studies\", \"London\"]."
        }
      },
      "description": "The source you type by hand when it has no DOI or ISBN."
    },
    "keep_capitals": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100,
        "minLength": 1,
        "description": "A word to preserve as supplied, e.g. Studies."
      },
      "maxItems": 100,
      "description": "Words to keep as written, matched case-insensitively, e.g. [\"Studies\", \"London\"]."
    }
  }
}
format_manual_citation output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "style",
    "count",
    "resolved",
    "not_found",
    "items",
    "reference_order",
    "sources",
    "downloads",
    "note"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "count": {
      "type": "number"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "identifier",
          "status",
          "source",
          "type",
          "warnings"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "citation": {
            "type": "string"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "identifier": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "style": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "url",
          "retrieved_utc"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "retrieved_utc": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "resolved": {
      "type": "number"
    },
    "downloads": {
      "type": "object",
      "required": [
        "bib",
        "ris",
        "txt"
      ],
      "properties": {
        "bib": {
          "type": "string"
        },
        "ris": {
          "type": "string"
        },
        "txt": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "not_found": {
      "type": "number"
    },
    "reference_order": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
format_manual_citation annotations
{
  "title": "Format a manual citation",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

citation-generator-widget — Zovo Citation Generator view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Citation Generator.

citation-generator-widget URI
ui://widget/citation-generator-v12-1.0.0-3e44c880b70e48f84efcda8b35e296185c641e23070926123826bf64094bd43f.html

MIME type: text/html;profile=mcp-app

citation-generator-widget-legacy — Zovo Citation Generator view (previous versions)

Advertised by the server during the last successful anonymous check.

citation-generator-widget-legacy URI template
ui://widget/citation-generator-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
667 ms
95th percentile latency
667 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 667 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-citation-generator-mcp https://citation-generator.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-citation-generator-mcp --url https://citation-generator.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-citation-generator-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-citation-generator-mcp": {
      "url": "https://citation-generator.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-citation-generator-mcp": {
      "type": "streamableHttp",
      "url": "https://citation-generator.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-citation-generator-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-citation-generator-mcp": {
      "type": "http",
      "url": "https://citation-generator.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-citation-generator-mcp https://citation-generator.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-citation-generator-mcp": {
      "url": "https://citation-generator.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-citation-generator-mcp": {
      "serverUrl": "https://citation-generator.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Citation Generator MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.