Skip to main content

MCP (Model Context Protocol) server support for SwanLab

Project description

SwanLab MCP Server

       

A Model Context Protocol (MCP) server implementation for SwanLab, combining SwanLab-OpenAPI & FastMCP.

✨ Features

Core Features

  • Workspace Queries - List accessible workspaces and enumerate workspace projects
  • Project Queries - List projects and inspect a specific project with run summaries
  • Run Queries - Inspect runs with normalized fields (id, state, profile, user)
  • Metric Queries - Fetch metric tables with consistent columns, rows, and total
  • API Integration - Provide read-only access through SwanLab OpenAPI (swanlab.Api)

Tech Stack

  • Language: Python 3.12+
  • Core Framework: FastMCP (v2.14.4+)
  • API Client: SwanLab SDK
  • Config Management: Pydantic Settings

🚀 Quick Start

❗️Configuration

Add the following configuration to your relative mcp config list

{
  "mcpServers": 
    ...
    {
    "swanlab-mcp": {
      "command": "uvx",
      "args": ["--from", "swanlab-mcp", "swanlab_mcp", "--transport", "stdio"],
      "env": {
        "SWANLAB_API_KEY": "your_api_key_here"
      }
    }
  }
}

For Claude Code Users, you can config like this:

claude mcp add --env SWANLAB_API_KEY=<your_api_key> -- swanlab_mcp uvx --from swanlab-mcp swanlab_mcp --transport stdio

Prerequisites

  • Python >= 3.12
  • SwanLab API Key (get it from SwanLab)

Installation

# Using uv (recommended)
uv sync

# Or using pip
pip install -e .

Configuration

Environment Variables

Create a .env file and configure your API key:

cp .env.template .env

Edit the .env file:

SWANLAB_API_KEY=your_api_key_here

Running

# Using stdio transport (default)
python -m swanlab_mcp

# Or using CLI
python -m swanlab_mcp --transport stdio

# Check version
python -m swanlab_mcp --version

Usage

After configuration, restart Claude Desktop to interact with SwanLab via the MCP protocol.

Available Tools:

  • swanlab_list_workspaces - List workspaces
  • swanlab_get_workspace - Get workspace details
  • swanlab_list_projects_in_workspace - List projects in one workspace
  • swanlab_list_projects - List projects
  • swanlab_get_project - Get project details
  • swanlab_list_runs_in_project - List runs in one project
  • swanlab_list_runs - List runs with optional filters (state, config.*)
  • swanlab_get_run - Get run details
  • swanlab_get_run_config - Get run config
  • swanlab_get_run_metadata - Get run metadata
  • swanlab_get_run_requirements - Get run requirements
  • swanlab_list_run_metric_keys - List available metric keys for a run
  • swanlab_get_run_metrics - Get run metric table

Resource Definitions:

  • workspace: collection of projects (PERSON or TEAM) identified by username.
  • project: collection of runs identified by path = username/project_name.
  • run: single experiment identified by path = username/project_name/experiment_id.
  • metric: tabular run history returned as {path, keys, x_axis, sample, columns, rows, total}.

🛠️ Development

Code Formatting

# Using Makefile
make format

# Or manually
uvx isort . --skip-gitignore
uvx ruff format . --quiet

Lint Check

uvx ruff check .

Pre-commit Hooks

bash scripts/install-hooks.sh

📚 References & Acknowledgements

📄 License

MIT License

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

swanlab_mcp-0.0.3.tar.gz (30.2 kB view details)

Uploaded Source

Built Distribution

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

swanlab_mcp-0.0.3-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file swanlab_mcp-0.0.3.tar.gz.

File metadata

  • Download URL: swanlab_mcp-0.0.3.tar.gz
  • Upload date:
  • Size: 30.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swanlab_mcp-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a790c84be80cc3bbcad6629c36144561d7d4af902c7cc5a5daf3eca7ec7d4d9e
MD5 c6f2e14bff35cb946bd734222be1b66f
BLAKE2b-256 e35b052f795f50adec8c837e07b6178eb28fccbe9b6fdfbd7e9086bc76bc3480

See more details on using hashes here.

File details

Details for the file swanlab_mcp-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: swanlab_mcp-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swanlab_mcp-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 75257f26ee164adf17386c92fc36b28437ca820558e634476de43023d56fb4a8
MD5 0c68b69ba3a2c0622e72213240b60eb8
BLAKE2b-256 57fce043166539fd3e3db06fc9174037702786769ec0a500a10c127b233afed7

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