Skip to main content
Glama

paperwithcode-mcp

MCP server that brings AI paper reading and code repository discovery from Hugging Face Papers into any MCP-compatible client (Claude Desktop, IDE plugins, etc.). Supports both stdio and SSE transports.

Overview

Keeping up with AI research means reading papers, finding code implementations, and tracking daily new releases. This server bridges Hugging Face Papers' rich metadata — AI summaries, GitHub star counts, full paper markdown, and daily trending lists — directly into your AI assistant's toolset. Instead of switching between browser tabs, you query papers conversationally.

What you can do:

  • Paste an arXiv ID and get the corresponding GitHub repo (with star count)

  • Ask for a paper's details: title, authors, abstract, AI summary, keywords

  • Read a paper's full text as markdown in your conversation

  • List today's trending papers on Hugging Face Papers

Related MCP server: Huggingface Daily Papers

Quick Start

pip install git+https://github.com/GtJerry111/paperwithcode-hf-mcp.git
paperwithcode-mcp

The server starts in stdio mode, ready to connect to Claude Desktop or any MCP host. Add it to your claude_desktop_config.json (see Claude Desktop Integration) and you're done.

Tools

Resolve an arXiv ID to its GitHub repository URL.

Parameters:

Parameter

Type

Required

Description

arxiv_id

string

Yes

The arXiv paper ID (e.g. 2508.02739)

Returns: { "github_url": "https://github.com/shiyu-coder/Kronos" }

Returns null if no GitHub repository is found for the given paper.

get_paper_details

Get detailed paper metadata from Hugging Face Papers.

Parameters:

Parameter

Type

Required

Description

arxiv_id

string

Yes

The arXiv paper ID (e.g. 2508.02739)

Returns: JSON object with:

  • id — arXiv ID

  • title — paper title

  • authors — list of author names

  • publishedAt — publication date

  • summary — abstract text

  • upvotes — upvote count on Hugging Face

  • githubRepo — linked GitHub repository URL (if any)

  • githubStars — GitHub star count (if repo exists)

  • ai_summary — AI-generated summary

  • ai_keywords — list of AI-extracted keywords

  • discussionId — Hugging Face discussion thread ID

  • markdownContentUrl — URL to the full paper markdown

Returns null if the paper is not found.

read_paper

Fetch the full text of a paper as markdown.

Parameters:

Parameter

Type

Required

Description

arxiv_id

string

Yes

The arXiv paper ID (e.g. 2508.02739)

Returns: A markdown string containing the complete paper text (abstract, introduction, method, results, etc.). Returns null if the paper cannot be found or has no markdown source.

list_daily_papers

List papers featured on Hugging Face Papers for a given date.

Parameters:

Parameter

Type

Required

Description

date

string

No

Date in YYYY-MM-DD format. Defaults to today if omitted.

Returns: A list of papers, each containing:

  • id — arXiv ID

  • title — paper title

  • authors — list of author names

  • publishedAt — publication date

  • summary — abstract

  • upvotes — upvote count

  • numComments — number of comments on Hugging Face

Deployment

pip

pip install git+https://github.com/GtJerry111/paperwithcode-hf-mcp.git

paperwithcode-mcp                                        # stdio (default)
paperwithcode-mcp --transport sse --host 0.0.0.0 --port 8787  # SSE

uv

uv tool install git+https://github.com/GtJerry111/paperwithcode-hf-mcp.git

paperwithcode-mcp                                        # stdio

# Update later
uv tool upgrade paperwithcode-mcp

Docker

docker build -t paperwithcode-mcp .
docker run -i --rm paperwithcode-mcp                     # stdio
docker run -i --rm -p 8787:8787 paperwithcode-mcp \
  --transport sse --host 0.0.0.0 --port 8787              # SSE

Claude Desktop Integration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "paperwithcode": {
      "command": "paperwithcode-mcp",
      "args": []
    }
  }
}

If paperwithcode-mcp is not in your PATH after pip install, use the full Python module path or the uvx launcher:

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

Development

git clone https://github.com/GtJerry111/paperwithcode-hf-mcp.git
cd paperwithcode-hf-mcp

# pip
pip install -e ".[dev]"

# uv
uv sync --group dev

Architecture

The server has a simple data flow:

MCP tool call -> mcp_server.py (FastMCP) -> resolver.py (business logic)
    -> client.py (curl/network) + parser.py (HTML extraction)
  • mcp_server.py — FastMCP instance with 4 tool definitions and the CLI entry point

  • resolver.py — orchestrates calls between client and parser, returns typed results

  • client.pyPaperPageClient wraps curl subprocess, handles proxy and retries

  • parser.py — extracts structured data from Hugging Face paper pages

Data Sources

  • https://huggingface.co/papers/{arxiv_id} — individual paper page (embedded JSON in data-props)

  • https://huggingface.co/api/daily_papers?date=YYYY-MM-DD — daily papers API (no auth)

  • markdownContentUrl — full paper text as markdown from the arXiv HTML conversion

Environment Variables

Variable

Default

Description

HTTPS_PROXY / HTTP_PROXY / ALL_PROXY

Proxy for outgoing HTTP requests

PWC_TIMEOUT

15.0

Request timeout in seconds

Limitations

This project uses Hugging Face Papers as its data source, NOT the paperswithcode.com API (which is no longer available). As a result:

  • No paper search by keyword or title

  • No conference, proceedings, or author browsing

  • No benchmark results or dataset listings

License

MIT

Available Tools

4 tools
get_paper_details_toolB

Get detailed paper metadata including title, authors, abstract, GitHub repo, GitHub stars, AI summary, keywords, and upvotes.

ParametersJSON Schema
NameRequiredDescriptionDefault
arxiv_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only operation but does not explicitly state side effects, authentication needs, or error behavior. The list of returned fields gives some context but is minimal for disclosure.

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 a single concise sentence that efficiently lists key return fields without extraneous information. It is front-loaded with the action and resource.

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

Completeness3/5

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

Despite having an output schema and one parameter, the description lacks context about error handling, invalid inputs, and differentiation from sibling tools. It is minimally sufficient but not complete for an agent to fully understand behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has only one parameter (arxiv_id) with 0% coverage (no description in schema). The tool description does not elaborate on the parameter's format, constraints, or examples, failing to compensate for the missing schema description.

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 retrieves 'detailed paper metadata' and lists specific fields like title, authors, abstract, GitHub repo, etc., which distinguishes it from siblings like list_daily_papers_tool (list) and read_paper_tool (likely full text).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where other tools would be preferred, leaving the agent to infer usage from the name and description alone.

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

list_daily_papers_toolA

List papers featured on Hugging Face Papers for a given date (YYYY-MM-DD format). Defaults to today.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose all behavioral traits. It only states the basic function (list papers for a date) and default behavior (today), but does not mention pagination, rate limits, or what happens when no papers exist for the given date.

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 a single, concise sentence that conveys the essential information without any unnecessary words or structure.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter) and the presence of an output schema, the description covers the core purpose and parameter. It is complete enough for an agent to decide when to invoke it, though it could optionally hint at the output structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the input schema has 0% description coverage, the description adds meaning by specifying the date format (YYYY-MM-DD) and default value (today). For a single optional parameter, this provides adequate guidance, though additional details like allowed range could help.

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 action 'list' and the resource 'papers featured on Hugging Face Papers' with a specified date format. It distinguishes from siblings like get_paper_details_tool (details) and read_paper_tool (reading), which serve different purposes.

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

Usage Guidelines3/5

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

The description implies usage for listing papers on a specific date but does not explicitly state when to use this tool versus siblings, nor does it provide when-not conditions or alternatives.

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

read_paper_toolB

Fetch the full text of a paper as markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
arxiv_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description only states it fetches as markdown. Does not disclose rate limits, authentication, size limits, or what happens if paper not found. Minimal behavioral context.

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

Conciseness4/5

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

One sentence, no wasted words. However, oversimplification leaves gaps in parameter and behavior details.

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

Completeness3/5

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

With one required param and output schema, description is adequate but missing input details and edge cases. Could be more complete for a fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0%: description does not mention the arxiv_id parameter or its format. Fails to add meaning beyond the schema for the single required parameter.

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?

Clearly states verb 'fetch', resource 'full text of a paper', and output format 'as markdown'. Distinguishes from siblings like get_paper_details_tool (metadata) and list_daily_papers_tool (listing).

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives. Implies usage through purpose but lacks guidance on when not to use or prerequisites.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: getting metadata, listing daily papers, reading full text, and resolving code links. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent pattern: verb_noun_tool with descriptive verbs and nouns, all in snake_case.

Tool Count5/5

Four tools is an appropriate number for a focused server covering paper retrieval and code linking, neither too few nor too many.

Completeness4/5

The tool set covers the main tasks of browsing daily papers, getting details, reading full text, and finding code repositories. A minor gap is the lack of search or filtering beyond date, but core functionality is present.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/GtJerry111/paperwithcode-hf-mcp'

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