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
## š ļø 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
```bash
git clone <your-repo-url>
cd mcp_project
```
### 2. Install Dependencies
```bash
# 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:
```env
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)
```json
{
"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

*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
TDQS
Scored across 2 tools
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.
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.
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.
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.