.codex-plugin — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited .codex-plugin (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center"> <h1>@cyanheads/calculator-mcp-server</h1> <p><b>Evaluate, simplify, and differentiate mathematical expressions via MCP. STDIO or Streamable HTTP.</b> <div>1 Tool • 1 Resource</div> </p> </div>
<div align="center">
</div>
<div align="center">
</div>
<div align="center">
Public Hosted Server: https://calculator.caseyjhand.com/mcp
</div>
Calculator powered by math.js. Verify numeric results, simplify algebraic expressions, and compute symbolic derivatives through one tool.
| Tool | Description |
|---|---|
calculate | Evaluate math expressions, simplify algebraic expressions, or compute symbolic derivatives. |
| Resource | Description |
|---|---|
calculator://help | Available functions, operators, constants, and syntax reference. |
calculate <sub>tool</sub>expression per call. operation selects evaluate (default), simplify, or derivative; derivatives require variable (e.g. "x").scope, e.g. { "x": 5 }.numericType selects number, BigNumber (64 significant digits, for values that overflow a 64-bit float), or Fraction (exact rationals). Fraction mode returns fraction_unsupported, with guidance to change numeric type, when a result has no exact rational value (sqrt(2)), the expression calls a function Fraction mode cannot compute (sqrt(4), 5!), or it uses a value Fraction mode holds only as a rounded float (pi, 2^(1/2)).precision sets 1–16 significant digits for numeric results. Blank optional variable and precision values are treated as omitted; scope and precision do not affect symbolic operations.2x + 3x → 5 * x); unchanged: true identifies expressions the simplifier cannot reduce, including polynomial factoring and rational cancellation cases.calculator://help <sub>resource</sub>cacheHint) — static content that never changes at runtime.Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
Calculator-specific:
vm timeoutresult_too_large__proto__, constructor, etc.)Agent-friendly output:
unchanged: true on simplify flags a no-op result instead of silently returning the same expressionreason (e.g. fraction_unsupported, evaluation_timeout, disallowed_result_type) plus an actionable recovery hint, rather than a raw exceptionConnect to the hosted instance, no install:
claude mcp add --transport http calculator-mcp-server https://calculator.caseyjhand.com/mcpOr run it locally:
claude mcp add calculator-mcp-server -- npx -y @cyanheads/calculator-mcp-serverFor other clients, add this to the MCP config file:
{
"mcpServers": {
"calculator-mcp-server": {
"command": "npx",
"args": ["-y", "@cyanheads/calculator-mcp-server"]
}
}
}For Docker or a source build, see Running the server.
| Variable | Description | Default |
|---|---|---|
CALC_MAX_EXPRESSION_LENGTH | Maximum allowed expression string length (10–10,000). | 1000 |
CALC_EVALUATION_TIMEOUT_MS | Maximum evaluation time in milliseconds (100–30,000). | 5000 |
CALC_MAX_RESULT_LENGTH | Maximum result string length in characters (1,000–1,000,000). | 100000 |
MCP_TRANSPORT_TYPE | Transport: stdio or http. | stdio |
MCP_HTTP_HOST | Hostname for the HTTP server. | 127.0.0.1 |
MCP_HTTP_PORT | Port for HTTP server. | 3010 |
MCP_HTTP_ENDPOINT_PATH | Path for the HTTP MCP endpoint. | /mcp |
MCP_HTTP_MAX_BODY_BYTES | Maximum inbound HTTP request size; 0 disables the limit. | 1048576 |
MCP_AUTH_MODE | Auth mode: none, jwt, or oauth. | none |
MCP_SESSION_MODE | auto, stateful, or stateless. The server declares stateless in code, so every launch path resolves the same way; setting this overrides that declaration. | stateless |
MCP_LOG_LEVEL | Log level (RFC 5424). | info |
See .env.example for optional session, resumability, logging, and telemetry settings.
Requires Bun v1.4.0 or higher. The built server also runs on Node.js v24+.
git clone https://github.com/cyanheads/calculator-mcp-server.git
cd calculator-mcp-server && bun install
cp .env.example .env bun run build
bun run start:http # or start:stdio bun run devcheck # Lints, formats, type-checks
bun run test # Runs test suitedocker run --rm -p 3010:3010 ghcr.io/cyanheads/calculator-mcp-server:latestThe image defaults to Streamable HTTP on port 3010, stateless sessions, and logs at /var/log/calculator-mcp-server. For stdio, use docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/calculator-mcp-server:latest. To build locally, run docker build -t calculator-mcp-server .; OpenTelemetry dependencies are installed by default, and --build-arg OTEL_ENABLED=false omits them.
| Directory | Purpose |
|---|---|
src/mcp-server/tools/ | Tool definitions (*.tool.ts). |
src/mcp-server/resources/ | Resource definitions (*.resource.ts). |
src/services/ | Domain service integrations (MathService). |
src/config/ | Environment variable parsing and validation with Zod. |
docs/ | Generated directory tree. |
tests/ | Calculation, configuration, and response-contract tests. |
See AGENTS.md or CLAUDE.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for loggingsrc/index.tsIssues are welcome. Run checks before submitting:
bun run devcheck
bun run testApache-2.0 — see LICENSE for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.