Skip to main content
Glama
khushiiagrawal

MCP Research Server

MCP Research Assistant 🧠

A comprehensive Model Context Protocol (MCP) setup that provides powerful tools for research, file management, and web content fetching. This project integrates multiple MCP servers to enhance your AI assistant capabilities.

✨ Features

  • 📚 Research Tool: Search and manage academic papers from arXiv

  • 📁 Filesystem Tool: Browse, read, and manage project files

  • 🌐 Fetch Tool: Retrieve content from websites and APIs

  • 🤖 Multi-LLM Support: Works with Claude, Gemini, and other AI models

  • 💾 Local Storage: Automatically saves research data organized by topics

Related MCP server: arXiv MCP Server

🛠️ Prerequisites

  • Python 3.13 or higher

  • uv package manager (recommended) or pip

  • API keys for your chosen LLM providers

  • Claude Desktop (for MCP integration)

💻 Quick Start

1. Clone and Setup

git clone <your-repo-url>
cd mcp_project

2. Install Dependencies

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment and install dependencies
uv sync

3. Configure Environment Variables

Create a .env file in your project root:

ANTHROPIC_API_KEY=your_anthropic_api_key_here

4. Configure Claude Desktop

Create or update your Claude Desktop configuration file:

Location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "."
      ],
      "cwd": "/path/to/your/mcp_project"
    },
    "research": {
      "command": "/path/to/your/mcp_project/.venv/bin/python",
      "args": [
        "/path/to/your/mcp_project/research_server.py"
      ],
      "cwd": "/path/to/your/mcp_project"
    },
    "fetch": {
      "command": "/path/to/your/.local/bin/uvx",
      "args": ["mcp-server-fetch"],
      "cwd": "/path/to/your/mcp_project"
    }
  }
}

Important: Replace /path/to/your/mcp_project with your actual project path.

5. Restart Claude Desktop

Restart Claude Desktop completely to load the new configuration.

🎯 How to Use

Research Tool 🔬

Search for Papers:

Search for 5 papers about machine learning

Get Paper Details:

Show me information about paper ID 1234.5678

Browse Saved Papers:

What papers do I have saved on physics?

Filesystem Tool 📁

Browse Files:

List all files in my project directory

Read Files:

Show me the contents of research_server.py

Create Files:

Create a new Python script for data analysis

Fetch Tool 🌐

Get Web Content:

Fetch the latest Python documentation

API Calls:

Get current weather data from an API

📋 Available Tools

Research Server Tools

Tool

Description

Parameters

search_papers

Search arXiv for papers

topic, max_results

extract_info

Get paper details

paper_id

get_available_folders

List saved topics

None

Filesystem Server Tools

Tool

Description

read_file

Read file contents

write_file

Write to files

list_dir

List directory contents

delete_file

Delete files

Fetch Server Tools

Tool

Description

fetch

Fetch content from URLs

📁 Project Structure

mcp_project/
├── research_server.py          # Main research MCP server
├── mcp_chatbot_L7.py          # Chatbot with LLM integration
├── pyproject.toml             # Project configuration
├── requirements.txt           # Python dependencies
├── uv.lock                   # Dependency lock file
├── papers/                   # Research data storage
│   └── [topic_name]/         # Organized by topic
│       └── papers_info.json  # Paper metadata
├── .env                      # Environment variables
└── README.md                 # This file

🔧 Configuration Details

Research Server Configuration

The research server automatically:

  • Creates topic-based directories in papers/

  • Saves paper metadata as JSON files

  • Provides search and retrieval functions

  • Integrates with arXiv API

Filesystem Server Configuration

The filesystem server:

  • Operates within your project directory

  • Provides full file management capabilities

  • Uses relative paths for portability

Fetch Server Configuration

The fetch server:

  • Handles web requests and API calls

  • Supports custom user agents

  • Can ignore robots.txt restrictions

MCP Research Assistant Working

Screenshot showing the MCP Research Assistant successfully running with all tools working

📝 Development

Adding New Tools

  1. Edit research_server.py to add new functions

  2. Use the @mcp.tool() decorator

  3. Test with MCP Inspector

  4. Update documentation

Customizing LLM Behavior

  1. Edit mcp_chatbot_L7.py

  2. Modify tool descriptions and parameters

  3. Add custom prompts and resources

Available Tools

2 tools
extract_infoA

Search for information about a specific paper across all topic directories.

Args: paper_id: The ID of the paper to look for

Returns: JSON string with paper information if found, error message if not found

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It successfully discloses return behavior ('JSON string with paper information if found, error message if not found') and scope ('across all topic directories'). However, it lacks explicit safety classification (read-only vs destructive) or side-effect disclosure despite the implicit 'search' verb.

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 uses a clean, structured format with clear 'Args' and 'Returns' sections. It is appropriately concise with no redundant or wasted sentences; every clause provides specific functional information.

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?

For a single-parameter lookup tool with an output schema present, the description provides adequate completeness. It documents the sole parameter (compensating for schema gaps) and summarizes return behavior, which is sufficient given the tool's low complexity.

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

Parameters4/5

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

Given 0% schema description coverage, the Args section effectively compensates by defining 'paper_id' as 'The ID of the paper to look for.' This adds necessary semantic meaning that the raw schema lacks, clearly indicating the parameter represents a paper identifier.

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 'Search[es] for information about a specific paper across all topic directories,' providing specific verb (search), resource (paper information), and scope (all topic directories). It implicitly distinguishes from sibling 'search_papers' by emphasizing 'specific paper' lookup by ID rather than general searching.

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 provides no explicit guidance on when to use this tool versus the sibling 'search_papers'. While it implies usage by stating it looks for a 'specific paper' (suggesting use when paper_id is known), it fails to explicitly contrast with alternatives or state prerequisites.

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

search_papersA

Search for papers on arXiv based on a topic and store their information.

Args: topic: The topic to search for max_results: Maximum number of results to retrieve (default: 5)

Returns: List of paper IDs found in the search

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It appropriately notes the side effect of storing information and specifies the return value (List of paper IDs), but omits other critical details such as idempotency, what 'store' entails (persistent cache, session memory, etc.), error handling behavior, or rate limiting.

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?

The description uses a docstring format with distinct Args and Returns sections. While slightly more structured than typical prose descriptions, it efficiently organizes information with no wasted sentences. The format is machine-parseable and front-loads the core purpose before detailing parameters.

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 this is a simple 2-parameter search tool with a straightforward output (list of IDs), the description is adequately complete. It covers the search domain (arXiv), the side effect (storage), and the return type. While additional context on storage scope would be helpful, the description suffices for tool selection and basic invocation.

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

Parameters4/5

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

The input schema has 0% description coverage (only titles). The description compensates via the Args section, documenting both 'topic' (the search query) and 'max_results' (with default value). While it documents the parameters, it lacks rich semantic detail such as expected format for topics, examples, or constraints on max_results.

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 searches for papers on arXiv based on a topic and stores their information. It uses specific verbs ('Search', 'store') and identifies the specific resource (arXiv papers), implicitly distinguishing it from the sibling 'extract_info' tool which likely operates on existing papers rather than searching for them.

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 provides no guidance on when to use this tool versus the sibling 'extract_info' tool, nor does it specify prerequisites (e.g., whether a topic should be broad or specific) or when not to use it. Agents must infer usage solely from the tool name.

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 updatesv0.1.0
    • First observedextract_info
    • First observedsearch_papers

TDQS

A3.6/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: extract_info retrieves information about a specific paper by ID, while search_papers finds papers on arXiv by topic and stores them. There is no overlap or ambiguity between these operations.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (extract_info and search_papers), using snake_case and descriptive action-object naming. The naming is predictable and readable throughout.

Tool Count2/5

With only 2 tools for a research server, the set feels thin and incomplete for the apparent scope. A research domain typically requires more operations like managing papers, updating information, or handling citations, making this count inadequate.

Completeness2/5

There are significant gaps in the tool surface for a research server. While search and retrieval are covered, missing operations include creating, updating, or deleting paper records, organizing topics, or accessing stored data beyond extraction, which will limit agent workflows.

Maintenance

ActivityInactive
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
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI agents to search, retrieve, and analyze academic papers from arXiv, supporting features like keyword search, paper details retrieval, content extraction, and paper analysis.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Python implementation of the Model Context Protocol (MCP) server that enables searching and extracting information from arXiv papers, designed to be extensible with additional MCP tools.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search, download, and access arXiv papers with local storage and date filtering via the Model Context Protocol.
    3
    1
    Apache 2.0

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/khushiiagrawal/MCP_Research_Assistant'

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