Test MCP
# Test MCP
Diagram: https://excalidraw.com/#json=uRRaOjlO8rV6Og36vjPEj,LRARtOLrhz0VdTFIxjH8Rg
## Requirements
- [uv](https://docs.astral.sh/uv) to manage the Python environment
- [nodejs](https://nodejs.org/en/download) for testing
- [MCP](https://modelcontextprotocol.io) clients to actually use it
- [Claude Desktop](https://claude.ai/download)
- [Visual Studio Code](https://vscode.dev)
- [Cline](https://cline.bot)
- [Roo Code](https://roocode.com)
- [Kilo Code](https://github.com/Kilo-Org/kilocode)
- [Jan](https://jan.ai)
**Note**: OpenRouter has many [free models](https://openrouter.ai/models?max_price=0&order=context-high-to-low) available that you can use for testing.
## Development
For testing you can run a development server and manually run tool calls:
```sh
uv run fastmcp dev
```
The fully example is implemented in `test-mcp.py`, a minimal example you can use in your own projects is in `minimal-mcp.py`.
## Installation
To install your MCP server you need to configure an [`MCP.json`](https://gofastmcp.com/integrations/mcp-json-configuration) that looks something like this:
```json
{
"mcpServers": {
"test-mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/admin/Projects/test-mcp",
"run",
"test-mcp.py"
],
"timeout": 600
}
}
}
```
For Claude Desktop there is a [detailed guide](https://modelcontextprotocol.info/docs/quickstart/user/) available.
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose (cat facts, weather, email, jokes, etc.), so there is minimal overlap. However, the wide variety of domains could confuse an agent about when to use which.
Tool names are inconsistent: some use verb_noun (get_weather, list_emails), others use verb_phrase (tell_joke, find_inspiration), and one is noun_noun (cat_fact). No consistent pattern.
The count of 9 tools is reasonable, but the server lacks a coherent domain; it feels like a random collection. For a single-purpose server it might be too many, but the number itself is not excessive.
No clear domain, so completeness is poor. Email tools have list, get, reply but no send or delete; weather is just a single lookup; other domains are single-tool only, leaving many gaps.