Skip to main content

Model Cache Server - MCP server for downloading and caching ML models and datasets

Project description

MDS-MCP: Model Cache Server

PyPI version Python 3.11+ License: MIT

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 ID
  • token (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 name
  • name (str, optional): Dataset config or task name
  • token (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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

mds_mcp-0.1.3.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mds_mcp-0.1.3-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

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

Hashes for mds_mcp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2cf6970f735a3b8e8faf3d17b8b0187c4b0c179bc5b90e0c612a832654355190
MD5 a9019d7a4f69f1a4501b2929045786cc
BLAKE2b-256 526027e83ea5eaeaaabb40a757f2d947125663448bea97bd9c7ba6c69f9548e8

See more details on using hashes here.

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

Hashes for mds_mcp-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d0c9b2e435115db803ec7f5c3d6f76e086385834f0a2dcaf4332471f8c944cc9
MD5 cc8529f35dfc316f87f609d0f87e7eb5
BLAKE2b-256 619660aea0451f82862c0cc2dcbfc61bf9010a2e1a4c3dad2e39e2ceebb1739b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page