simple_mcp
# Simple MCP Server (Python)
This project provides a minimal Model Context Protocol (MCP) server using Python. It exposes a single tool `random_float` that returns a random float in [0,1). The server supports multiple transport modes: STDIO (default), HTTP, and SSE.
## Run locally
### Default (STDIO transport)
```bash
uv run main.py
```
## Server Environment Variables
| Variable | Purpose | Default |
|----------|---------|---------|
| APP_TRANSPORT | Transport type (STDIO, HTTP, SSE) | STDIO |
| APP_HOST | Server host | 0.0.0.0 |
| APP_PORT | Server port | 8000 |
## Docker
Build the image and run:
```bash
docker build -t simple-mcp .
```
### Docker with different transports
```bash
# HTTP transport
docker run --rm -p 8000:8000 -e APP_TRANSPORT=HTTP simple-mcp
# SSE transport
docker run --rm -p 8000:8000 -e APP_TRANSPORT=SSE simple-mcp
# Custom port
docker run --rm -p 9000:9000 -e APP_TRANSPORT=HTTP -e APP_PORT=9000 simple-mcp
```
## Test as a standalone app
### Test using Postman
```
uv --directory <path_to_project_directory> run main.py
```
### Test using Claude Desktop
```json
{
"mcpServers": {
"simple_mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"<path_to_project_directory>",
"main.py"
]
}
}
}
```
## Test as a docker image
### Test using Postman
```
docker run --rm -i simple-mcp
```
### Test using Claude Desktop
```json
{
"mcpServers": {
"simple_mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"simple-mcp"
]
}
}
}
```TDQS
Scored across 2 tools
The two tools, random_float and wait, have completely distinct purposes—one generates a random number and the other introduces a delay. There is no ambiguity whatsoever.
Both names are in lowercase snake_case, but random_float is a noun phrase while wait is a verb, creating a minor inconsistency in style. However, with only two tools, the names are clear and identifiable, so the deviation is negligible.
The server exposes only two tools, which feels thin for a general-purpose utility server. However, the scope itself is extremely narrow (random number and delay), so the count is borderline—not excessive, but minimal for broader use cases.
The domain appears to be basic utility operations, but with only two tools, there are obvious gaps such as random integer generation or more granular timing controls. The surface is too minimal to consider it complete for any meaningful utility purpose.