Python MCP Server
# Python MCP Server
This is a simple demonstration of a `fastmcp` server and client.
## Setup and Installation (with uv)
This project uses `uv` for environment and dependency management.
1. **Create the virtual environment:**
```bash
uv venv
```
2. **Activate the virtual environment:**
```bash
source .venv/bin/activate
```
3. **Install the dependencies:**
```bash
uv pip sync pyproject.toml
```
## Usage (with uv)
Make sure your virtual environment is activated before running these commands.
1. **Run the MCP server:**
```bash
uv run python server.py
```
The server will start on `localhost:8000`.
## Usage for gemini
1. **Configue Gemini CLI**
Add the following configuration on **~/.gemini/settings.json**
```json
{
"security": {
"auth": {
"selectedType": "oauth-personal"
}
},
"mcpServers": {
"serverName": {
"command": "/home/<USER>/.local/bin/uv",
"args": [
"--directory",
"/home/<USER>/code/python-mcp-server",
"run",
"server.py"
]
}
}
}
```
And yes, the home directory can't be summarized to just _"~"_
2. Th server does not need to be running simply run Gemini CLI:
```bash
gemini
```
From there, you will be able to know if the MCP has been adopted by running the command **/mcp list**.
You should see the tools listed there, similar to this:
```
ℹConfigured MCP servers:
🟢 serverName - Ready (2 tools)
Tools:
- addNumbers
- greet
💡 Tips:
• Use /mcp desc to show server and tool descriptions
• Use /mcp schema to show tool parameter schemas
• Use /mcp nodesc to hide descriptions
• Use /mcp auth <server-name> to authenticate with OAuth-enabled servers
• Press Ctrl+T to toggle tool descriptions on/off
```
In this example you will be able to ask Gemini to greet you or add numbers, as long as you provide enough context to fill in the arguments. If you do not provide arguments, Gemini will ask for more information.
Once all the arguments are provided, Gemini will ask for confirmation before the MCP is hit, and only then will it execute the logic.
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: addNumbers performs a mathematical operation, while greet handles a social interaction. There is no overlap or ambiguity between them, making misselection unlikely.
The naming is inconsistent: addNumbers uses camelCase, while greet uses lowercase. There is no predictable pattern across the set, though both names are readable individually.
With only 2 tools, the server feels thin and under-scoped for a general-purpose Python MCP server. This minimal set suggests limited functionality that may not cover typical Python-related tasks.
The tool surface is severely incomplete for a Python server domain. It lacks basic operations like code execution, file handling, or library management, leaving obvious gaps that will cause agent failures in practical scenarios.