MCPInstall
mcp-minimal logo

mcp-minimal

by janspoerer janspoerer/mcp-minimal

A minimal MCP server to validate that MCP client configurations are working.

READMEmaster

mcp-minimal

A minimal MCP server to validate that MCP client configurations are working.

Version pinning: action needed

Please address this soon. This repository does not fully pin its versions.

What is missing here:

  • No exact Python version pinned (only the range requires-python = ">=3.10"). There is no .python-version.
  • Unpinned dependencies in requirements.txt (1): fastmcp.

Why this is a problem: without exact pins, every fresh install resolves the newest versions available that day. The same commit can then behave differently on a laptop, in the Docker build and on the server, and a rebuild can break without any code change. Example: on 2026-10-21 a fresh install pulled mcp 2.x and broke several MCP servers because mcp was not pinned anywhere. Developer machines also differ from the servers (a developer PC runs Omarchy/Arch with Python 3.14 and Node 26; dev-playground, hd24devsrv, gptgateway and montage run Ubuntu 24.04 with Python 3.12; mdm, cma-dev and 10.24.241.50 run Ubuntu 26.04 with Python 3.14).

To do:

  • Pin Python: uv python pin <the target server's version>, and commit .python-version.
  • Lock dependencies: uv lock and commit uv.lock, or pin every requirement with == (e.g. uv pip compile requirements.in -o requirements.txt).

Good practice for every HD24 repository:

  • Commit lockfiles (uv.lock, package-lock.json) and treat pin changes like code changes: no silent upgrades.
  • Keep the pinned versions identical to the Docker base image (FROM python:3.12-slim, FROM node:22-slim) and the target server.
  • Tag every Docker base image with a version, never latest.
  • Test locally the way the server runs it: same Dockerfile/Compose and a local .env, not a native python app.py.
  • Test host scripts (apt, systemd, cron) in an ubuntu:24.04 / ubuntu:26.04 container that matches the target server.
  • A local test is a prerequisite, not proof: the final check happens on the target server via the approved deploy path (pull_build_start_container.sh).

Remove this section once everything above is done.

pip install -r requirements.txt

Detailed setup instructions for using Claude Desktop on Windows 10 with WSL (2): https://janspoerer.github.io/posts/.