An MCP (Model Context Protocol) server for interacting with the Open Science Framework (OSF). Search projects, registrations, preprints, manage files, and more.
-
Search OSF Content
- Projects (public and private with authentication)
- Registrations (pre-registered studies)
- Preprints (from OSF Preprints and partner services)
-
File Management
- List project files
- Download files with PDF-to-Markdown conversion
- Read cached file content
-
Project Management (requires authentication)
- Create new projects
- Update project metadata
- Access wiki content
-
DOI Resolution
- Resolve OSF DOIs to resources
# Clone the repository
cd tools/osf-mcp-server
# Create virtual environment
uv venv
source .venv/bin/activate
# Install with dependencies
uv pip install -e ".[test]"| Variable | Description | Default |
|---|---|---|
OSF_TOKEN |
Personal Access Token for authenticated access | None (public only) |
OSF_STORAGE_PATH |
Path for downloaded files | ~/.osf-mcp-server/files |
OSF_MAX_RESULTS |
Maximum search results | 50 |
OSF_REQUEST_TIMEOUT |
API timeout in seconds | 60 |
- Log in to osf.io
- Go to Settings → Personal Access Tokens
- Create a new token with required scopes
- Set
OSF_TOKENenvironment variable
export OSF_TOKEN="your_token_here"# Run directly
python -m osf_mcp_server
# Or via entry point
osf-mcp-server
# With custom storage path
osf-mcp-server --storage-path /path/to/storageAdd to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"osf": {
"command": "python",
"args": ["-m", "osf_mcp_server"],
"env": {
"OSF_TOKEN": "your_token_here"
}
}
}
}Or with uv:
{
"mcpServers": {
"osf": {
"command": "uv",
"args": [
"--directory", "/path/to/osf-mcp-server",
"run", "osf-mcp-server"
],
"env": {
"OSF_TOKEN": "your_token_here"
}
}
}
}| Tool | Description |
|---|---|
search_projects |
Search for OSF projects by title, tags, category |
search_registrations |
Search for pre-registered studies |
search_preprints |
Search for preprints from OSF and partner services |
| Tool | Description |
|---|---|
get_project |
Get detailed project information |
create_project |
Create a new project (auth required) |
update_project |
Update project metadata (auth required) |
| Tool | Description |
|---|---|
list_files |
List files and folders in a project |
download_file |
Download and cache a file locally |
read_file |
Read content of a downloaded file |
| Tool | Description |
|---|---|
get_wiki |
List or get wiki page content |
resolve_doi |
Resolve an OSF DOI to a resource |
Search for projects related to "cognitive bias":
- query: "cognitive bias"
- tags: ["psychology"]
- max_results: 20
1. Search for preprints: query="machine learning"
2. List project files: project_id="abc12"
3. Download PDF: file_id="xyz789"
4. Read content: file_id="xyz789"
Create project:
- title: "My Research Project"
- description: "A study on..."
- public: false
- tags: ["experiment", "2024"]
# Run all tests
python -m pytest
# Run with coverage
python -m pytest --cov=osf_mcp_server
# Run specific test file
python -m pytest tests/test_search.py -v# Format with black
black src/
# Lint with ruff
ruff check src/osf-mcp-server/
├── src/osf_mcp_server/
│ ├── __init__.py # Entry point
│ ├── server.py # MCP server implementation
│ ├── config.py # Configuration settings
│ ├── osf_client.py # OSF API client
│ ├── tools/ # MCP tools
│ │ ├── search_*.py # Search tools
│ │ ├── *_file.py # File tools
│ │ └── ...
│ ├── resources/ # Resource management
│ │ └── osf_manager.py
│ └── prompts/ # Research prompts
│ └── research_prompts.py
└── tests/
This server uses the OSF API v2. Key endpoints:
/nodes/- Projects and components/registrations/- Pre-registered studies/preprints/- Preprints/files/- File operations/wikis/- Wiki pages
MIT License
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request