Skip to main content
Glama
heewon-chung

eprint-mcp-server

by heewon-chung
README.md
# IACR ePrint Archive MCP Server

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js](https://img.shields.io/badge/Node.js-18%2B-green.svg)](https://nodejs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)

A Model Context Protocol (MCP) server that provides access to the [IACR Cryptology ePrint Archive](https://eprint.iacr.org/), enabling AI assistants to search and retrieve cryptographic research papers.

## ✨ Features

- šŸ” **Smart Search**: Search papers by title, abstract, author, or keywords (RSS-based filtering)
- šŸ“„ **Paper Details**: Get comprehensive information about specific papers
- šŸ“° **Recent Papers**: Retrieve the latest published papers from RSS feed
- šŸ”— **Direct Links**: Get web page and PDF URLs for papers
- šŸ“‹ **Download Info**: Get download information for paper PDFs
- šŸ”’ **Privacy Focused**: No cookies, no tracking, respects ePrint Archive guidelines

## šŸš€ Quick Start

### Installation

#### Option 1: Direct Installation

```bash
# Clone the repository
git clone https://github.com/YOUR_USERNAME/eprint-mcp-server.git
cd eprint-mcp-server

# Install dependencies and build
npm install
npm run build
```

#### Option 2: Using npx (Coming Soon)

```bash
npx eprint-mcp-server
```

### Claude Desktop Setup

1. **Find your Claude Desktop config file:**
   - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

2. **Add the server configuration:**
   ```json
   {
     "mcpServers": {
       "eprint": {
         "command": "node",
         "args": ["/path/to/eprint-mcp-server/dist/index.js"]
       }
     }
   }
   ```

3. **Restart Claude Desktop** completely (⌘+Q then reopen)

## šŸ“– Usage Examples

### Search Papers
```
Find papers about "zero knowledge proofs"
```

### Get Recent Papers
```
Show me the 10 most recent cryptography papers
```

### Get Paper Details
```
Tell me about paper 2025/123
```

### Find by Author
```
Find papers by Goldreich from 2024
```

## šŸ› ļø Development

### Prerequisites
- Node.js 18.0.0 or higher
- npm or yarn

### Setup
```bash
git clone https://github.com/YOUR_USERNAME/eprint-mcp-server.git
cd eprint-mcp-server
npm install
```

### Development Commands
```bash
# Development with hot reload
npm run dev

# Build for production
npm run build

# Run tests
npm test

# Type checking
npm run type-check
```

### Project Structure
```
eprint-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts          # Main MCP server
│   ā”œā”€ā”€ eprintClient.ts   # ePrint Archive API client
│   └── types.ts          # TypeScript type definitions
ā”œā”€ā”€ dist/                 # Compiled JavaScript output
ā”œā”€ā”€ tests/               # Test files
ā”œā”€ā”€ package.json
└── README.md
```

## šŸ”§ Configuration

### Environment Variables
- `DEBUG`: Set to `1` to enable debug logging
- `MAX_RESULTS`: Maximum number of search results (default: 100)

### MCP Server Options
```json
{
  "mcpServers": {
    "eprint": {
      "command": "node",
      "args": ["./dist/index.js"],
      "env": {
        "DEBUG": "0",
        "MAX_RESULTS": "50"
      }
    }
  }
}
```

## šŸ“š Available Tools

| Tool | Description | Parameters |
|------|-------------|------------|
| `search_papers` | Search for papers | `query`, `maxResults`, `author`, `dateFrom`, `dateTo` |
| `get_paper` | Get paper details | `paperId` |
| `get_recent_papers` | Get recent papers | `limit` |
| `download_paper` | Get download info | `paperId`, `outputPath` |
| `get_paper_url` | Get paper URLs | `paperId` |

## šŸ” Search Limitations

Currently, the ePrint Archive's search API endpoint is not publicly available, so this server uses RSS feed filtering for search functionality. This means:

- āœ… Search works within recent papers (last ~100 papers from RSS)
- āš ļø Historical search is limited
- šŸ”„ We're working on implementing full search capabilities

## šŸ¤ Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## šŸ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## šŸ™ Acknowledgments

- [IACR Cryptology ePrint Archive](https://eprint.iacr.org/) for providing open access to cryptographic research
- [Model Context Protocol](https://github.com/modelcontextprotocol) for the MCP framework
- The cryptographic research community

## šŸ“ž Support

- šŸ› **Issues**: [GitHub Issues](https://github.com/YOUR_USERNAME/eprint-mcp-server/issues)
- šŸ’¬ **Discussions**: [GitHub Discussions](https://github.com/YOUR_USERNAME/eprint-mcp-server/discussions)
- šŸ“§ **Email**: your.email@example.com

## šŸ”„ Changelog

### v1.0.0 (2025-06-25)
- ✨ Initial release
- šŸ” RSS-based search functionality
- šŸ“„ Paper details retrieval
- šŸ“° Recent papers listing
- šŸ”— Direct URL generation

---

**Made with ā¤ļø for the cryptography research community**

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: searching, getting details, getting URLs, downloading, and listing recent papers. No overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., download_paper, search_papers). The naming is uniform and predictable.

Tool Count5/5

With 5 tools, the server is well-scoped for its domain. It provides essential operations without being too few or overly numerous.

Completeness4/5

The tool set covers search, metadata retrieval, URL access, and download. Minor gap: lack of explicit filtering by author or category, but search likely supports parameters.

Maintenance

ActivityInactive
ResponsivenessNo issues