A Slack bot integration with multiple MCP servers exposing math tools via FastMCP. Includes Simple Math and Advanced Math servers that can be called by a LangGraph-based bot agent.
This MCP server exposes 11 well-structured mathematical tools with consistent naming, clear descriptions, and proper input schemas. All tools follow verb-based naming conventions (power, sqrt, factorial, average, stddev, dot, solve_quadratic, add, subtract, multiply, divide). Descriptions are present and informative for all tools. Input schemas are explicitly defined with typed parameters and descriptions. However, output schemas are not documented (only return types are inferred from function signatures), and error handling guidance is minimal, error messages are raised but don't guide LLMs toward recovery. The server is split into two files (advanced_math_mcp_server.py and simple_math_mcp_server.py) but both appear to be example personas rather than production-ready tool definitions. Tool parameters are well-described with constraints documented inline (e.g., 'n must be an int in [0, 10000]' for factorial). No security issues detected, all tools are read-only mathematical operations. Composition is sound: each tool does one thing, though some could be combined into a single math toolkit for deployment.
Return the sum of two numbers.
Return the arithmetic mean of a non-empty list of numbers.
Return a divided by b. Raises ValueError on division by zero.
Return dot product of two equal-length numeric lists.
Return n! for non-negative integer n. Limits: n must be an int in [0, 10000] (protects against runaway).
Return the product of two numbers.
Return base ** exponent.
Output schemas are not documented. While return types are inferred from function signatures (float, int, List[float]), the response schema for each tool is not explicitly declared in tool metadata. LLMs cannot plan downstream operations without knowing the exact output structure.
Error handling does not guide LLM recovery. Functions raise ValueError with messages (e.g., 'sqrt domain error: x must be >= 0.'), but responses do not suggest alternative tools or next steps. Per pattern:recovery-guide, error responses should tell the LLM what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Solve ax^2 + bx + c = 0 for REAL roots only. Returns a list with one or two real roots. Raises ValueError if 'a' is zero or there are no real roots.
Return sqrt(x). x must be >= 0.
Return the standard deviation of a list of numbers. If sample=False (default): population stddev (divide by N). If sample=True: sample stddev (divide by N-1), requires N >= 2.
Return a minus b.
Descriptions for simple math tools (add, subtract, multiply, divide) are very brief (e.g., 'Return the sum of two numbers'). While not violating the 10-character minimum, they lack context on when to use each tool instead of similar ones, and they do not explain return types or prerequisites.
Tool definitions appear to be example personas in the repository, not production-ready MCP server registrations. The files are labeled 'personas/mcps/' and appear to be illustrative rather than deployed endpoints. It is unclear if these tools are actually registered with an MCP server that can be invoked.