A collection of MCP server implementations demonstrating various tool types and transport mechanisms, including math operations, weather data, web search, and audio processing capabilities.
This server has severe structural and definition quality issues. It registers 12 tools but 6 are duplicates (add, multiply, web_search appear 2-3 times). Tools lack comprehensive descriptions, parameters are minimally documented, and no output schemas are visible. The codebase spans multiple files (langchain_mcp_server.py, mcp_server.py, math_server.py, server-sse.py, server.py) with inconsistent registration patterns. Most tool definitions are visible in source, but parameter descriptions are absent or trivial, and return types are undocumented. This is a teaching/practice project (repo name 'MCP_Server_Practice'), which explains the quality gaps, but it falls well below production standards.
Add two numbers
Add two numbers
Generate audio response from a text query using GPT-4o audio
Get weather alerts for a US state.
Get weather forecast for a location.
Get a message for the given name.
Fetch current weather data for a given city using the Weather API
Multiply two numbers
Duplicate tool registration: 'add', 'multiply', and 'web_search' are registered 2 - 3 times across different files. This creates ambiguity for LLMs and breaks tool discovery.
Most parameters lack descriptions. The 'city', 'query', 'state', 'latitude', 'longitude', 'name', and 'key_term' parameters have no guidance on expected format, valid values, or constraints. LLMs cannot infer parameter meaning from names alone.
No output schemas documented. Return types are not explicitly declared. For example, 'get_weather' returns a dict with 'city', 'temperature_celsius', etc., but this is not documented in the tool definition. LLMs cannot plan downstream calls without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Multiply two numbers
Multiply two numbers
Perform a web search using the Responses API and return the result.
Perform a web search using the Responses API and return the result.
Inconsistent parameter naming conventions. 'web_search' uses 'query' in langchain_mcp_server.py but 'key_term' in mcp_server.py. 'get_alerts' documents 'state' with a helpful description, but other similar tools lack descriptions entirely.
Trivial descriptions for basic math tools. 'Add two numbers' and 'Multiply two numbers' are too short (18 and 21 chars) to guide LLM selection when multiple similar tools are available. No context on when to prefer one over another.
No error handling guidance. Tools like 'get_weather' and 'web_search' call external APIs but do not document recovery paths. If an API key is missing or the request fails, LLMs are given a raw dict like {'error': 'API key not found'} with no guidance on next steps.
API credentials exposed in code. Environment variables like 'OPENAI_API_KEY' and 'WEATHER_API_KEY' are read in the tool implementations. While not exposed as parameters (correct), the reliance on environment variables without documented secret injection patterns is brittle.
No input validation or constraints. Numeric parameters like 'latitude' and 'longitude' (in get_forecast) lack min/max bounds. String parameters like 'state' and 'city' have no length limits or format hints. LLMs can pass invalid values without correction guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are correctly marked as READ_ONLY or WRITE in the rubric summary, but the source code does not declare these hints, so LLMs cannot infer safety boundaries.