Labsco
MCP SERVER

MCP Playground

by RonFelsenfeld

Two small stdio services — news and weather — set up as a worked example of running MCP servers from a Python project.

Summary
Two servers from one project.

The interesting part is the shape rather than the features: one repository, two independent stdio entry points, each registered separately with its own environment. That is the pattern to copy if you are grouping several small servers in a single codebase. The news half needs a newsdata.io key before it will answer anything.

What it is

A playground project holding two separate MCP microservices, a News service and a Weather service, both over stdio. Each runs as its own module and is registered as its own entry in the client config.

What you get
  • A weather service and a news service as two independent stdio servers, started with `python -m src.weather_mcp.main` and `python -m src.news_mcp.main`
  • A Claude Desktop config block showing both registered side by side, so one project contributes two servers
  • A Makefile that handles the environment: `make setup`, `make sync`, `make freeze-dependencies`, `make clean`
  • A small, readable stack — `mcp[cli]` for the protocol, `httpx` for requests, `python-dotenv` for configuration
Requirements

Python 3.12 with the `uv` package manager and a virtual environment; `make setup` then `make sync` prepares it. The client entry points at the `uv` executable by absolute path with `--directory` set to the project. The news service needs a free API key from newsdata.io, passed as `NEWS_API_KEY` in that server's env block; the weather service takes no key.

Setup effort

One command plus a key — uvx mcp-server, then supply credentials