mcp-server

mcp-server

0

The mcp-server provides a robust implementation of the Model Coupling Protocol, enabling operations on HDF5 files and management of Slurm jobs. It also offers hardware information retrieval and data compression capabilities.

mcp-server

By: Zack Chaffee A20478873

A server implementing Model Coupling Protocol (MCP) capabilities for HDF5 file operations and Slurm job management.

Features

HDF5 file operations:

  • Read datasets
  • List file contents

Slurm job management:

  • Submit jobs
  • Check job status

Node Hardware Operations

  • Get CPU information
  • Get memory information
  • Get disk information
  • Get comprehensive system information

Compression Operations

  • Compress string data with gzip or zlib
  • Compress files with gzip or zlib
  • Decompress data

Initialization

Once you clone this reponsitory cd into it

After this hwe will create a virtual enviornment and install all dependincies:

uv venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e .
uv pip install -e ".[test]"

Running

To startup the server run:

python -m src.server

This will autoclocate the server at http://localhost:8000.

Endpoints

  • POST /mcp: Main endpoint for MCP requests
  • GET /health: Health check endpoint

Examples:

import httpx

async with httpx.AsyncClient() as client:
    # Read a dataset
    response = await client.post("http://localhost:8000/mcp", json={
        "capability": "hdf5",
        "action": "read_dataset",
        "parameters": {
            "file_path": "/path/to/data.h5",
            "dataset_path": "/path/to/dataset"
        }
    })
    
    # List contents
    response = await client.post("http://localhost:8000/mcp", json={
        "capability": "hdf5",
        "action": "list_contents",
        "parameters": {
            "file_path": "/path/to/data.h5",
            "group_path": "/"
        }
    })
curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "mcp/listTools", 
    "params": {}, 
    "id": "1"
  }'

Testing

For testing rung:

pytest

For tests with coverage:

pytest --cov=src