A Model Context Protocol (MCP) server that integrates Wikipedia as a knowledge source with Obsidian for personal knowledge management. Run locally with Claude Desktop for seamless research and note-taking workflows.
- π Wikipedia Integration: Search and fetch full articles from Wikipedia
- π Obsidian Notes: Create and search notes with wikilinks and backlinks
- π― Research Modes: Configure research rigor (strict/balanced/exploratory)
- π Smart Linking: Automatic wikilink generation and backlink tracking
- πΎ Local-First: Everything runs locally, no external dependencies beyond Wikipedia API
- Python 3.10 or higher
- An Obsidian vault
- Claude Desktop
-
Clone or navigate to the project directory:
cd research-mcp-server -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install the package:
pip install -e . -
Set up environment variables:
cp .env.example .env # Edit .env and set your Obsidian vault path
Create a .env file or set these in your Claude Desktop configuration:
OBSIDIAN_VAULT_PATH=/path/to/your/ObsidianVault
CACHE_ENABLED=true
DEFAULT_RESEARCH_MODE=balancedAdd to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"research-assistant": {
"command": "python",
"args": ["-m", "research_mcp_server"],
"env": {
"OBSIDIAN_VAULT_PATH": "/Users/yourusername/Documents/ObsidianVault"
}
}
}
}After editing:
- Save the file
- Restart Claude Desktop
- The server will auto-start when Claude launches
Search Wikipedia for articles matching a query.
Parameters:
query(string, required): Search querylimit(integer, optional): Maximum results (default: 5)
Example:
Search Wikipedia for "consistent hashing"
Fetch full Wikipedia article content.
Parameters:
title(string, required): Article title
Example:
Fetch the Wikipedia article on "Distributed Hash Table"
Save a note to your Obsidian vault with wikilinks and backlinks.
Parameters:
title(string, required): Note titlecontent(string, required): Note content in markdowntags(array, optional): Tags for the notelinks(array, optional): Related notes to link
Example:
Create a note titled "Consistent Hashing" with content about the algorithm
Search notes in your Obsidian vault.
Parameters:
query(string, required): Search query
Example:
Search my notes for "distributed systems"
Configure research rigor and citation style.
Parameters:
mode(string, required): Research mode -strict,balanced, orexploratorycitation_style(string, optional): Citation style -inline,footnoted, orminimal
Research Modes:
- Strict: Only use information from fetched sources, cite everything
- Balanced: Prioritize sources but add context from general knowledge
- Exploratory: Use sources as starting points, make broader connections
Example:
Set research mode to strict with inline citations
-
Search for a topic:
Search Wikipedia for "CAP theorem" -
Fetch detailed article:
Fetch the Wikipedia article on "CAP theorem" -
Create a note:
Create a note about CAP theorem with tags "distributed-systems" and "theory" -
Link related concepts:
Create a note linking to "Consistency Models" and "Distributed Consensus" -
Search your notes:
Search my notes for "consistency"
research-mcp-server/
βββ pyproject.toml # Project configuration
βββ README.md # This file
βββ .env.example # Environment template
βββ src/
β βββ research_mcp_server/
β βββ __init__.py
β βββ __main__.py # Entry point
β βββ server.py # MCP server implementation
β βββ config.py # Configuration loader
β βββ models.py # Data models
β βββ research_mode.py # Research mode manager
β βββ adapters/
β β βββ __init__.py
β β βββ base.py # Abstract adapter
β β βββ wikipedia.py # Wikipedia implementation
β βββ obsidian/
β βββ __init__.py
β βββ vault.py # Obsidian operations
βββ tests/
βββ test_wikipedia.py
βββ test_obsidian.py
βββ test_server.py
pip install -e ".[dev]"
pytestblack src/
ruff check src/- Platform Support: Tested on macOS and Linux only (not Windows)
- Concurrency: Handles requests serially (MCP SDK manages this)
- Cache: In-memory only, not persisted between sessions
- Language: English Wikipedia only
- Authentication: None (local-only operation)
- Check that
OBSIDIAN_VAULT_PATHis set correctly - Verify the vault path exists
- Check Claude Desktop logs for errors
- Check your internet connection
- Wikipedia API may be rate-limiting (server retries automatically)
- Ensure the vault path is correct
- Check file permissions
- Refresh Obsidian vault
This project follows these principles:
- Simplicity First: Use abstractions only where they enable future extensibility
- Working Software: Prioritize functional, reliable code over architectural perfection
- Pragmatic Modularity: Clean boundaries between components, no premature generalization
- Fail Loudly: Clear error messages, obvious failure modes
- Local-First: Everything runs locally, no external dependencies beyond Wikipedia API
Potential additions (not in MVP):
- Additional knowledge sources (arXiv, PubMed, etc.)
- Persistent caching
- Advanced search with filters
- Note templates
- Automatic backlink updates
MIT License - feel free to use and modify as needed.
This is a personal project, but suggestions and improvements are welcome!