Model Cache Server - MCP server for downloading and caching ML models and datasets
Project description
MDS-MCP: Model Cache Server
A Model Control Protocol (MCP) server for efficiently downloading and caching machine learning models and datasets from various sources like Hugging Face.
Features
- 🚀 Fast Model & Dataset Downloads: Efficient downloading and caching of ML models and datasets
- 🔄 Smart Caching: Automatically manages local cache to avoid re-downloading
- 🔐 Authentication Support: Handles gated models and private repositories
- 🌐 Multiple Providers: Currently supports Hugging Face with extensible architecture
- 📊 Monitoring: Built-in Sentry integration for error tracking
- 🛠 MCP Compatible: Works seamlessly with MCP clients
Installation
From PyPI (Recommended)
pip install mds-mcp
From Source
git clone https://github.com/yourusername/mds-mcp.git
cd mds-mcp
pip install -e .
Quick Start
1. Environment Setup
Create a .env file in your project directory:
# Optional: Hugging Face token for gated/private models
HF_TOKEN=your_huggingface_token_here
# Optional: Sentry configuration
SENTRY_DSN=your_sentry_dsn_here
SENTRY_ENVIRONMENT=production
SENTRY_SAMPLE_RATE=0.1
# Server configuration
MCP_HOST=0.0.0.0
MCP_PORT=9004
LOG_LEVEL=INFO
2. Start the Server
mds-mcp
Or run with Python:
python -m mds_mcp.main
3. Using the MCP Tools
The server provides two main tools:
Download Model
{
"tool": "download_model",
"arguments": {
"provider": "huggingface",
"identifier": "microsoft/DialoGPT-medium",
"token": "optional_hf_token"
}
}
Download Dataset
{
"tool": "download_dataset",
"arguments": {
"provider": "huggingface",
"identifier": "imdb",
"name": "optional_config_name",
"token": "optional_hf_token"
}
}
Supported Providers
Hugging Face
- Models: All public and gated models from Hugging Face Hub
- Datasets: Complete dataset downloads with all splits
- Authentication: Supports access tokens for gated/private content
API Reference
Tools
download_model(provider, identifier, token=None)
Downloads a pretrained model to local cache.
Parameters:
provider(str): Model source (e.g., 'huggingface')identifier(str): Model repository IDtoken(str, optional): Access token for private/gated models
Returns:
- Success:
{'status': 'downloaded', 'path': '<cache_dir>'} - Cached:
{'status': 'cached', 'path': '<cache_dir>'} - Auth Required:
{'status': 'auth_required', 'access_url': '...', 'instructions': [...]} - Error:
{'status': 'error', 'message': '...'}
download_dataset(provider, identifier, name=None, token=None)
Downloads a dataset with all splits to local cache.
Parameters:
provider(str): Dataset source (e.g., 'huggingface')identifier(str): Dataset repository namename(str, optional): Dataset config or task nametoken(str, optional): Access token for private/gated datasets
Returns:
Same format as download_model.
Development
Setup Development Environment
git clone https://github.com/yourusername/mds-mcp.git
cd mds-mcp
pip install -e ".[dev]"
Running Tests
pytest
Code Formatting
black mds_mcp/
isort mds_mcp/
Type Checking
mypy mds_mcp/
Architecture
The server is built with a modular architecture:
- Core Server: FastMCP-based server handling MCP protocol
- Providers: Pluggable backends for different model sources
- Services: Business logic for caching, authentication, and downloads
- Logging: Structured logging with optional Sentry integration
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
Changelog
See CHANGELOG.md for details about version changes.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mds_mcp-0.1.3.tar.gz.
File metadata
- Download URL: mds_mcp-0.1.3.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cf6970f735a3b8e8faf3d17b8b0187c4b0c179bc5b90e0c612a832654355190
|
|
| MD5 |
a9019d7a4f69f1a4501b2929045786cc
|
|
| BLAKE2b-256 |
526027e83ea5eaeaaabb40a757f2d947125663448bea97bd9c7ba6c69f9548e8
|
File details
Details for the file mds_mcp-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mds_mcp-0.1.3-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0c9b2e435115db803ec7f5c3d6f76e086385834f0a2dcaf4332471f8c944cc9
|
|
| MD5 |
cc8529f35dfc316f87f609d0f87e7eb5
|
|
| BLAKE2b-256 |
619660aea0451f82862c0cc2dcbfc61bf9010a2e1a4c3dad2e39e2ceebb1739b
|