Skip to main content
Glama
ChenchaoZhao

paper-search

by ChenchaoZhao

citekick

CI PyPI version Python License

Agentic tools for academic paper search — a CLI and MCP server that query multiple literature sources in one shot.


Why citekick?

Finding papers usually means juggling separate APIs, rate limits, and response formats for every source. citekick unifies them behind a single interface:

  • Multi-source search — Query 8 sources in parallel: Semantic Scholar, arXiv, PubMed, Crossref, Europe PMC, OpenReview, DBLP, and OpenAlex.

  • CLI + MCP — Use it directly from your terminal (citekick) or expose it to AI agents as an MCP server (citekick-mcp).

  • Agent-friendly output — JSON or Markdown results, ready to be consumed by humans or LLMs.

  • Response caching — Built-in HTTP cache to stay polite with APIs and speed up repeated queries.

  • Configurable defaults — API keys, preferred sources, year ranges, and output format persisted in one TOML file.


Related MCP server: mcp-openalex

Installation

Install the citekick CLI and MCP server globally using uv:

# Install with uv (recommended)
uv tool install citekick

# Or with pip
pip install citekick

CLI Usage

1. citekick search

Search academic literature across multiple sources.

citekick search "attention is all you need"                    # Search all default sources
citekick search "diffusion models" --sources arxiv,openalex    # Restrict to specific sources
citekick search "protein folding" --year-from 2023 --format markdown
citekick search "llm agents" --max-results 20 --no-cache

Tip: the search subcommand is optional — citekick "query" works too.

2. citekick config

Configure API keys and default search settings in ~/.config/citekick/config.toml.

citekick config                                    # Create an empty config file
citekick config --mailto you@example.com           # Set contact email (polite-pool access)
citekick config --openalex-api-key KEY --sources arxiv,pubmed

Credentials and optional contact email are read from ~/.config/citekick/config.toml. The [api] values are all optional; missing or empty values leave the corresponding source keyless.


Agent Integration

To use citekick as an MCP server, add this to your agent's MCP config:

{
  "mcpServers": {
    "citekick": {
      "command": "citekick-mcp"
    }
  }
}

Or using uvx (without prior installation):

{
  "mcpServers": {
    "citekick": {
      "command": "uvx",
      "args": ["--from", "citekick", "citekick-mcp"]
    }
  }
}

Development

# Install hatch
uv tool install hatch

# Run full release check (linting, static typing with mypy, and test suite with coverage)
hatch run release

License

MIT

Available Tools

1 tool
search_papersA

Search academic literature across multiple sources, returning deduplicated and ranked results as JSON.

Args: query: Free-text search query, e.g. "Hamiltonian Monte Carlo protein design". sources: Comma-separated source names: semantic-scholar, arxiv, pubmed, crossref, europepmc, openreview, dblp, openalex. Defaults to all keyless free sources. max_results_per_source: Maximum number of results fetched per source. year_from: Only include papers published in or after this year. year_to: Only include papers published in or before this year.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
sourcesNo
year_toNo
year_fromNo
max_results_per_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It mentions 'deduplicated and ranked results', 'JSON' output, and the concept of keyless sources, which hints at API key requirements. It does not explicitly mention error handling or latency, but for a search tool, this is adequate. The behavior is sufficiently described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: an opening one-sentence overview followed by a clean Args section. Each parameter is given a clear explanation. There is no extraneous information, and it is front-loaded with the key purpose.

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

Completeness5/5

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

With 5 parametersaren and an output schema present, the description fully explains what the tool does, what each parameter means (including defaults and examples), and the output format (JSON, deduplicated, ranked). It covers behavioral aspects like source selection and default behavior. Given the output schema exists, no further details on return structure are needed.

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?

The schema provides only names and types (0% coverage). The description compensates fully by explaining each parameter: query (with example), sources (with list of allowed values), max_results_per_source, year_from, and year_to. It adds meaning beyond the schema, including defaults and examples, making it highly instructive for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search academic literature across multiple sources, returning deduplicated and ranked results as JSON.' It specifies the action (search), the resource (academic literature), and the output format (JSON). Since there are no sibling tools, it doesn't need to differentiate, but it is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by explaining defaults (e.g., 'Defaults to all keyless free sources') and listing sources, which helps the agent decide when to call this tool. However, it lacks explicit when-not-to-use guidance or exclusion criteria, which would elevate it to 5. Still, it clearly implies the intended use case.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedsearch_papers

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusion or overlap with other tools. The tool's purpose is clearly defined as searching academic literature.

Naming Consistency4/5

With a single tool, naming consistency is trivially maintained. The name 'search_papers' follows a clear verb_noun pattern, which is a good convention.

Tool Count2/5

A single tool for a paper search server is extremely thin. While the tool is comprehensive in its search capabilities, the server lacks any other functionality such as fetching paper details, managing libraries, or retrieving citations, making the count feel insufficient for a full-featured server.

Completeness2/5

The server only provides search functionality, which is a core feature but leaves obvious gaps. For a paper search server, one would expect at least a tool to fetch details of a specific paper, and possibly tools for saving or managing papers. The current surface is incomplete for a comprehensive academic literature tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for the OpenAlex scholarly database, providing AI agents with tools to search and retrieve academic works, authors, and institutions via natural language queries.
    8
    MIT