paperwithcode-mcp
Provides tools to retrieve paper metadata, full text, and code repository links using arXiv IDs.
Enables resolution of arXiv papers to their corresponding GitHub repositories and fetching of star counts.
Integrates with Hugging Face Papers to list daily trending papers, access AI summaries, and retrieve detailed paper information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paperwithcode-mcplist today's trending papers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpThe 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_code_link
Resolve an arXiv ID to its GitHub repository URL.
Parameters:
Parameter | Type | Required | Description |
|
| Yes | The arXiv paper ID (e.g. |
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 |
|
| Yes | The arXiv paper ID (e.g. |
Returns: JSON object with:
id— arXiv IDtitle— paper titleauthors— list of author namespublishedAt— publication datesummary— abstract textupvotes— upvote count on Hugging FacegithubRepo— linked GitHub repository URL (if any)githubStars— GitHub star count (if repo exists)ai_summary— AI-generated summaryai_keywords— list of AI-extracted keywordsdiscussionId— Hugging Face discussion thread IDmarkdownContentUrl— 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 |
|
| Yes | The arXiv paper ID (e.g. |
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 |
|
| No | Date in |
Returns: A list of papers, each containing:
id— arXiv IDtitle— paper titleauthors— list of author namespublishedAt— publication datesummary— abstractupvotes— upvote countnumComments— 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 # SSEuv
uv tool install git+https://github.com/GtJerry111/paperwithcode-hf-mcp.git
paperwithcode-mcp # stdio
# Update later
uv tool upgrade paperwithcode-mcpDocker
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 # SSEClaude 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 devArchitecture
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.py —
PaperPageClientwraps curl subprocess, handles proxy and retriesparser.py — extracts structured data from Hugging Face paper pages
Data Sources
https://huggingface.co/papers/{arxiv_id}— individual paper page (embedded JSON indata-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 |
| — | Proxy for outgoing HTTP requests |
|
| 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 toolsget_paper_details_toolB
Get detailed paper metadata including title, authors, abstract, GitHub repo, GitHub stars, AI summary, keywords, and upvotes.
| Name | Required | Description | Default |
|---|---|---|---|
| arxiv_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| arxiv_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
resolve_code_link_toolA
Resolve an arXiv ID to a GitHub repository URL from the corresponding HF Papers page.
| Name | Required | Description | Default |
|---|---|---|---|
| arxiv_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the purpose but fails to disclose behavioral traits such as whether the operation is read-only, potential failure modes, or any side effects. For a simple lookup, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action with no extraneous words. It is efficient and immediately informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no annotations) and the presence of an output schema, the description sufficiently covers the core functionality. It could be improved by noting potential errors, but for a basic resolver it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the parameter, so the description must compensate. It adds that the single parameter is an 'arXiv ID', which is essential, but does not specify the expected format (e.g., including version or prefix). This provides minimal added meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'resolve', the resource 'arXiv ID to GitHub repository URL', and the context 'from the corresponding HF Papers page'. This distinguishes it from sibling tools that deal with paper details, daily lists, or reading papers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an arXiv ID and need the GitHub repo, but does not explicitly state when not to use it or mention alternatives. However, the context is clear enough for an agent to infer appropriate usage given the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: getting metadata, listing daily papers, reading full text, and resolving code links. No overlap in functionality.
All tool names follow a consistent pattern: verb_noun_tool with descriptive verbs and nouns, all in snake_case.
Four tools is an appropriate number for a focused server covering paper retrieval and code linking, neither too few nor too many.
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
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
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server for AI dialogue using various LLM models via AceDataCloud
Academic research MCP server for paper search, citation checks, graphs, and deep research.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn unofficial MCP server that provides semantic search capabilities for Hugging Face models and datasets, enabling Claude and other MCP-compatible clients to search, discover, and explore the Hugging Face ecosystem using natural language queries.20MIT
- AlicenseBqualityDmaintenanceA MCP (Model Context Protocol) server for fetching HuggingFace daily papers.37MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for academic paper search that integrates with AI assistants (e.g., Claude Code, Cursor), enabling them to search and retrieve academic paper metadata.248MIT
- AlicenseAqualityAmaintenanceMCP server that turns DOI, URL, or paper titles into structured Markdown full-text with metadata and assets, enabling AI agents to read beyond abstracts.10239MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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