MCP compliance, safety and math fixes; English tool docs; symbolic dsolve
Fork of https://github.com/thinkitpossible/CalcMCP with: - tools/list now publishes inputSchema (upstream used non-standard 'params' key, leaving clients with no parameter information) - tool descriptions and parameter docs rewritten in English with examples - JSON-RPC notifications are no longer answered; tool failures set isError - raw eval() of tool arguments removed (json.loads/ast.literal_eval for matrices, sympy.lambdify for the numeric ODE right-hand side) - complex eigenvalues serialize as 'a+bi' strings instead of crashing - solve accepts '=' equations; ttest accepts {"popmean": ...} params - new symbolic_tool operation 'dsolve' for symbolic ODE solutions Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
19
README.md
19
README.md
@@ -1,9 +1,26 @@
|
||||
# Scientific Calculator MCP Server
|
||||
|
||||
> A production-ready Model Context Protocol (MCP) server providing advanced mathematical calculation capabilities for AI models. Supports symbolic math (SymPy), numerical computing (NumPy/SciPy), data analysis (pandas), and image processing.
|
||||
> A Model Context Protocol (MCP) server providing advanced mathematical calculation capabilities for AI models. Supports symbolic math (SymPy), numerical computing (NumPy/SciPy), data analysis (pandas), and image processing.
|
||||
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
|
||||
> **Fork notice** — this is a patched fork of
|
||||
> [thinkitpossible/CalcMCP](https://github.com/thinkitpossible/CalcMCP).
|
||||
> Changes relative to upstream:
|
||||
>
|
||||
> - **MCP compliance**: tools are published with a proper `inputSchema` (upstream used a
|
||||
> non-standard `params` key, so clients saw no parameters at all); JSON-RPC notifications
|
||||
> (`notifications/initialized`) are no longer answered with an error; tool failures set
|
||||
> `isError: true` on the result.
|
||||
> - **Tool descriptions rewritten in English**, with per-parameter docs and inline examples.
|
||||
> - **Security**: removed all raw `eval()` of tool arguments (matrix inputs now parse via
|
||||
> `json.loads`/`ast.literal_eval`, the numeric-ODE right-hand side via `sympy.lambdify`).
|
||||
> - **Bug fixes**: eigenvalue/eigenvector results with complex values no longer crash JSON
|
||||
> serialization (rendered as `a+bi` strings); `solve` accepts equations written with `=`;
|
||||
> one-sample t-test accepts `params` as `{"popmean": ...}` or a bare number.
|
||||
> - **New**: `symbolic_tool` operation `dsolve` — symbolic ODE solving
|
||||
> (e.g. `Derivative(y(x), x, 2) + y(x) = 0` → `y(x) = C1*sin(x) + C2*cos(x)`).
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Install Dependencies
|
||||
|
||||
Reference in New Issue
Block a user