Skip to main content
Glama

CodeChef VIT Papers MCP Server

A standalone Model Context Protocol (MCP) server that exposes the CodeChef VIT papers portal's data to MCP-compatible AI clients (Claude Desktop, Cursor, VS Code Copilot, etc.). It connects directly to the portal's MongoDB database in read-only mode, allowing AI assistants to query university question papers, retrieve full metadata, and fetch feeds of recently added papers.

IMPORTANT

This server operates purely inread-only mode. It does not contain any write or upload capabilities, authentication flows, or external HTTP server interfaces. It communicates strictly via standard input/output (stdio) transport.

Features

  • Tool: search_papers: Search for university question papers using filters like subject (matches both subject name or course code, e.g., "BCSE202P" or "Data Structures"), year, exam type, branch, and campus. Results are capped at 20 documents, displaying a total count notice if more matches exist.

  • Tool: get_paper_metadata: Fetch the complete metadata details for a specific question paper using its database ID.

  • Resource: recent-papers: Access a read-only JSON feed of the last 10 papers added to the database.


Related MCP server: arXiv MCP Server

Input Validation & Rate Limiting

Input Validation (Zod)

All tool inputs are validated strictly using Zod before any database queries are executed:

  • search_papers:

    • subject: Optional string.

    • year: Optional 4-digit integer between 1000 and 9999 (e.g. 2023).

    • exam: Optional enum matching known exam types: CAT-1, CAT-2, FAT, Model CAT-1, Model CAT-2, Model FAT.

    • branch: Optional enum matching known branch types: CSE, ECE.

    • campus: Optional enum matching known campuses: Vellore, Chennai, Andhra Pradesh, Bhopal, Bangalore, Mauritius.

  • get_paper_metadata:

    • paperId: Required 24-character hexadecimal MongoDB ObjectId string.

If validation fails, the server responds with a clear MCP error before calling MongoDB.

Rate Limiting

To prevent abuse, the server implements an in-memory Token Bucket rate limiter scoped per session (the stdio connection process):

  • Limit: Max 30 tool calls per minute.

  • Behavior: Exceeding the rate limit returns a clean MCP error response (no crash) and logs the event to console.error.


Setup Instructions

Prerequisites

  • Node.js (v18 or higher recommended)

  • npm (v9 or higher)

  • A read-only MongoDB URI for the portal's database (never use production write credentials)

Installation

  1. Clone or navigate to the repository directory:

    cd d:/VIT/Club/papserMCP_server
  2. Install the dependencies:

    npm install
  3. Create your environment configuration file: Copy .env.example to .env and fill in your read-only database URI:

    cp .env.example .env

    Edit .env:

    MONGODB_URI_READONLY="mongodb+srv://<username>:<password>@cluster.mongodb.net/Papers-staging?retryWrites=true&w=majority"

Build and Run

To compile the TypeScript source into production-ready JavaScript code:

# Build the project
npm run build

# Run the server locally (it will wait for stdio inputs)
npm run start

For development mode (automatically re-compile files as they change):

npm run dev

Wiring into Claude Desktop

To expose this MCP server to Claude Desktop, add the server to your Claude Desktop configuration file.

Configuration Path

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

JSON Configuration Snippet

Add the following snippet under mcpServers. Make sure to replace the env.MONGODB_URI_READONLY with your actual read-only database credentials:

{
  "mcpServers": {
    "codechefvit-papers-mcp": {
      "command": "node",
      "args": [
        "d:/VIT/Club/papserMCP_server/dist/index.js"
      ],
      "env": {
        "MONGODB_URI_READONLY": "mongodb+srv://<readonly-user>:<password>@cluster.mongodb.net/Papers-staging?retryWrites=true&w=majority"
      }
    }
  }
}
TIP

On Windows, you can use forward slashes/ in the file path as shown above, or escape backslashes like "D:\\VIT\\Club\\papserMCP_server\\dist\\index.js".


Try Asking Claude

Once successfully connected, you can ask Claude Desktop questions like:

  • "Can you check if there are any CAT-1 papers for Data Structures [BCSE202P] from the Vellore campus?"

  • "Find me Vellore campus papers from the year 2023."

  • "Can you show me the full metadata for the paper with ID 60d5ecb867c2e022f4b2f123?"

  • "List the last 10 question papers added to the portal."


License

This repository is maintained privately for the CodeChef VIT chapter.

Available Tools

2 tools
get_paper_metadataA

Retrieve complete metadata for a specific question paper by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
paperIdYesThe 24-character hexadecimal ID of the paper (e.g. '60d5ecb867c2e022f4b2f123')

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only says 'retrieve complete metadata' without detailing what fields are included, whether it returns null/404 for nonexistent IDs, or any access/rate limit considerations. The vague phrase 'complete metadata' leaves the agent uncertain about the exact response shape and failure behavior.

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, front-loaded sentence that immediately states the action and target. There is no fluff or redundant content, making it highly efficient and easy to parse.

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?

The tool is simple (one parameter, no output schema), but the description does not clarify what 'complete metadata' entails or what the response structure looks like. Without an output schema, the agent must guess what fields will be returned. However, given the low complexity, some lack of detail is acceptable, but a short description of return content would improve completeness.

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?

The input schema fully documents the single parameter paperId, including a type and an example. The description adds no meaningful semantic detail beyond what the schema already provides (the description redundantly mentions 'by its ID'). Since schema coverage is 100%, the baseline score of 3 is appropriate.

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 (retrieve) and the specific resource (complete metadata for a question paper by its ID). This distinguishes it from the sibling tool search_papers, which is for discovering papers rather than fetching a known paper's metadata.

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 phrase 'by its ID' communicates the primary use case: when you already have a specific paper ID and need its metadata. It implies that search_papers is for finding IDs, though it does not explicitly name the alternative or provide exclusion criteria. The context is clear enough for an agent to choose this tool over search_papers.

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

search_papersC

Search for question papers from CodeChef VIT Papers Portal using filters. Caps results at 20.

ParametersJSON Schema
NameRequiredDescriptionDefault
examNoThe exam type (e.g. 'CAT-1', 'CAT-2', 'FAT', 'Model CAT-1', 'Model CAT-2', 'Model FAT')
yearNoThe academic year of the question paper (e.g. 2023)
branchNoThe academic branch/stream (e.g. 'CSE', 'ECE')
campusNoThe campus name (e.g. 'Vellore', 'Chennai', 'Andhra Pradesh', 'Bhopal', 'Bangalore', 'Mauritius')
subjectNoThe subject name or course code (e.g. 'BCSE202P', 'Data Structures')

TDQS

C2.9/5.0
Behavior2/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 for behavioral disclosure. It only mentions 'Caps results at 20' but does not explain the return format, how filters combine, or that it is a read-only operation. The single behavioral trait is insufficient.

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 two concise sentences, front-loaded with the main purpose and followed by the result cap. There is no waste, and every word earns its place.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain what the search returns (e.g., list of papers, metadata fields, how to use metadata tool). It fails to provide this, only mentioning a result cap. The tool is under-described for its complexity.

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?

All 5 parameters are fully described in the input schema, so the baseline is 3. The description's phrase 'using filters' adds no new meaning beyond what the schema already provides; it does not compensate with additional semantic detail.

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

Purpose4/5

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

The description clearly states the tool searches for question papers from a specific portal using filters. It identifies the verb (search), resource (question papers), and scope (CodeChef VIT Papers Portal), but does not explicitly differentiate from sibling get_paper_metadata beyond the name.

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?

The description gives no guidance on when to use this tool versus the sibling tool or any exclusions. It simply says 'search', leaving the usage context implicit with no alternatives mentioned.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedget_paper_metadata
    • First observedsearch_papers

TDQS

B3.4/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: one searches for papers using filters, the other retrieves metadata for a specific paper by ID. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: 'search_papers' and 'get_paper_metadata'. The naming is clean and predictable.

Tool Count3/5

With only 2 tools, the server is on the thinner side, but they cover the core search-and-retrieve flow. It feels slightly under-scoped for a question paper portal, but not unreasonable.

Completeness3/5

The server covers searching and fetching metadata, but it lacks an operation to download or access the actual paper content. Depending on the metadata, this may be workable, but it is a notable gap for a paper-focused server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • A
    license
    C
    quality
    F
    maintenance
    Enables real-time search and retrieval of academic paper information from multiple sources, providing access to paper metadata, abstracts, and full-text content when available, with structured data responses for integration with AI models that support tool/function calling.
    3
    118
    AGPL 3.0
  • A
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants to search and retrieve academic papers from arXiv through MCP tools, supporting search by various criteria, detailed paper information, category browsing, and PDF content extraction.
    4
    129
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and retrieving academic papers from arXiv and DBLP databases with advanced filtering options. Supports downloading PDFs and provides detailed paper information including titles, authors, abstracts, and publication dates.
    78
    3
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables searching and retrieving CAIE past-paper questions with filters for subjects, years, and specific topics. It provides LLM-friendly responses including concise text previews and structured JSON data for single or multi-topic queries.
    7
    1
    -

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/YOGESH-08/papserMCP_server'

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