mcpField
C
calculator-mcp-server

calculator-mcp-server

リモート
github.com/cyanheads科学・教育2今日更新
リポジトリ

calculator-mcp-server について

calculator-mcp-serverは、数値計算や記号計算を必要とするクライアントやエージェント向けのMCPサーバーです。評価、簡約、微分に対応し、型付きエラーと実行制限を備えています。

主な機能

  1. 01算術、統計、行列、単位などの計算
  2. 02代数式と三角関数式の簡約
  3. 03記号微分の計算
  4. 04number、BigNumber、Fractionの選択
  5. 05リソースで構文や関数を確認

活用シーン

  1. 01指定精度で数値結果を確認
  2. 02後続処理の前に式を簡約
  3. 03変数名を指定して式を微分

MCP 対応

評価、簡約、微分を行う `calculate` ツールと、`calculator://help` リソースを提供します。STDIOとStreamable HTTPに対応しています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://calculator.caseyjhand.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npm@cyanheads/calculator-mcp-server0.5.3

ツール

1
パラメーター型必須説明
scopeobjectいいえevaluate で使用する変数の割り当てです。simplify と derivative では無視されます。例:{ "x": 5, "y": 3 } を指定すると、"x + y" の評価結果は 8 になります。
variableanyいいえ微分する変数です。operation が "derivative" の場合は必須です。空文字列は省略として扱われます。例:"x"。
operationenumいいえ実行する操作です。"evaluate" は数値結果を計算します(デフォルト)。"simplify" は代数式を記号的に簡約します(例:"2x + 3x" -> "5 * x")。代数恒等式と三角恒等式に対応します。簡約器で式をこれ以上簡約できない場合(多項式の因数分解が必要な有理式など)、式を変更せずに返し、出力の unchanged: true が設定されます。"derivative" は記号微分を計算します(variable パラメーターが必要です)。evaluate | simplify | derivative
precisionanyいいえ数値結果の有効桁数(1~16)です。完全精度の場合は省略してください。空文字列は省略として扱われます。分数の結果は常に正確に表示され、記号操作(simplify、derivative)では無視されます。
expressionstringはい1 回の呼び出しにつき数学式を 1 つ指定してください。`;` や改行で文を区切ることはできません。行列内では `;` で行を区切ります(例:`[1, 2; 3, 4]`)。算術(+、-、*、/、^、%)、算術・三角関数(sin、cos、sqrt、log、abs、round)、統計(mean、median、std、variance。std と variance はデフォルトで標本形式(n − 1)を返します。母集団形式には "uncorrected" を渡します。例:`std([2, 4, 6], "uncorrected")`)、組み合わせ論(factorial、permutations、combinations)、行列演算(det、inv、transpose)、定数(pi、e、phi、i)、単位(5 kg to lbs)、変数(scope が指定されている場合)に対応します。math.js の名称 `log` と `asin`/`atan` に加え、標準記法の `ln` と `arc*`(例:`arcsin`、`arctan`)も使用できます。`stdev`、`permute`、`nCr`、`length`/`len` などの一般的な同義語は、math.js の名称(`std`、`permutations`、`combinations`、`count`)に解決されます。
numericTypeenumいいえevaluate に使用する数値型です。"number"(デフォルト):64 ビット IEEE 754 浮動小数点数。最速で、有効桁数は約 16 桁です。約 1.8e308(171!、2^1024、exp(1000))を超える値はオーバーフローし、undefined_result で失敗します。"BigNumber":有効桁数 64 桁で、指数範囲が大幅に広い十進数です。"number" より遅いため、オーバーフロー時に切り替えて再試行してください。結果は 64 桁の近似値です(10000!/9999! は 9999.99…96 を返し、precision: 16 では 10000 に丸められます)。ゼロ除算、0/0、log(0) はすべての数値型で未定義のため、数値型を変更しても解決しません。"Fraction":正確な有理数演算です(0.1 + 0.2 は 3/10 を返します)。結果が正確な有理数にならない場合(sqrt(2)、sin(1)、log(3)、Fraction モードで計算できない関数を式が呼び出す場合(sqrt(4)、5!、combinations(5, 2))、または Fraction モードが丸めた浮動小数点数としてのみ保持する値(pi、e、2^(1/2)、非整数部分を含む複素数、number(x)、random())を使用する場合は、fraction_unsupported で失敗します。これらには "number" または "BigNumber" を使用してください。無理数の変換係数を持つ単位変換(30 deg to rad)は、厳密値ではなく近似的な有理数を返します。記号操作(simplify、derivative)では無視されます。number | BigNumber | Fraction

詳細

@cyanheads/calculator-mcp-server

MCP を介して数式の評価、簡約、微分を行います。STDIO または Streamable HTTP に対応しています。

ツール 1 個 • リソース 1 個

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

公開ホストサーバー: https://calculator.caseyjhand.com/mcp


概要

math.js を利用した電卓です。1 つのツールで数値の結果を検証し、代数式を簡約し、記号微分を計算できます。

ツール
ツール説明
calculate数式を評価し、代数式を簡約するか、記号微分を計算します。
リソース
リソース説明
calculator://help利用可能な関数、演算子、定数、および構文のリファレンスです。

機能リファレンス

calculate tool
  • 1 回の呼び出しにつき expression は 1 つです。operation では evaluate(デフォルト)、simplify、または derivative を選択します。導関数を求める場合は variable(例:"x")が必要です。
  • 算術、三角関数、対数、統計、行列、複素数、単位、組み合わせ論の計算に対応します。数値変数は scope で割り当てます(例:{ "x": 5 })。
  • numericType では number、BigNumber(有効桁数 64 桁。64 ビット浮動小数点数でオーバーフローする値に使用)、または Fraction(正確な有理数)を選択します。結果が正確な有理数にならない場合(sqrt(2))、Fraction モードでは計算できない関数を式が呼び出す場合(sqrt(4)、5!)、または Fraction モードが丸めた浮動小数点数としてのみ保持する値を使用する場合(pi、2^(1/2))、Fraction モードは fraction_unsupported を返し、数値型を変更するよう案内します。
  • precision では数値結果の有効桁数を 1~16 桁に設定します。空欄の省略可能な variable と precision は省略されたものとして扱います。scope と precision は記号演算に影響しません。
  • 簡略化には代数および三角関数の恒等式が含まれます(2x + 3x → 5 * x)。unchanged: true は、多項式の因数分解や有理式の約分など、簡略化できない式を示します。
  • 結果の文字列、結果の型、元の式、演算を返します。検証エラーには、型付きの理由と復旧のヒントが含まれます。

calculator://help resource
  • 関数、演算子、定数、単位、式の構文についての Markdown リファレンスです。パラメーターはありません。
  • 使用例では、scope、行列、複素数、精度、3 種類すべての演算を扱います。
  • 公開 scope の cacheHint を使用して 24 時間キャッシュできます。実行時に変更されない静的コンテンツです。

機能

@cyanheads/mcp-ts-core を基盤としており、stdio および Streamable HTTP トランスポート、切り替え可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレーシングに対応した構造化ログを提供します。

計算機固有の機能:

  • 強化された math.js v15 インスタンス。危険な関数は無効化され、評価は vm タイムアウト内で実行されます
  • 認証は不要です。すべての操作は読み取り専用で、ステートレスです
  • 入力検証:式の長さ制限と複数ステートメントの拒否。行列の行区切り文字と文字列の内容は引き続き有効です
  • 結果検証:結果の型(関数、パーサー、結果セット)をブロックし、結果サイズの最大値を設定できます
  • サイズ制限:サイズ、積、ブロードキャスト、インデックス、精度の引数から行列または文字列を構築する関数には、呼び出しごとの上限を設定します。また、各評価には要素数の合計上限があり、上限を超えるリクエストは result_too_large で速やかに失敗します
  • scope のサニタイズ:数値のみを許可し、プロトタイプ汚染を防止します(__proto__、constructor などをブロック)

エージェント向けの出力:

  • 実際の呼び出し内容をエコー:すべての応答で式と演算をエコーし、適用した scope 変数と精度も示すため、エージェントは実際に計算された内容を確認できます
  • 判別可能な出力コントラクト:simplify の unchanged: true は、同じ式を黙って返すのではなく、結果が変化しなかったことを示します
  • 型付きのエラー理由:検証および評価の失敗には、生の例外ではなく、型付きの reason(例:fraction_unsupported、evaluation_timeout、disallowed_result_type)と、実行可能な復旧のヒントが含まれます

はじめに

公開ホストインスタンス

公開インスタンスは https://calculator.caseyjhand.com/mcp で利用できます。インストールは不要です。Streamable HTTP を提供しており、クライアントごとに設定形式が異なります。

Claude Code の場合:

claude mcp add --transport http calculator-mcp-server https://calculator.caseyjhand.com/mcp

Cline の場合(cline_mcp_settings.json):

{
  "mcpServers": {
    "calculator-mcp-server": {
      "type": "streamableHttp",
      "url": "https://calculator.caseyjhand.com/mcp"
    }
  }
}

Cursor の場合(mcp.json):

{
  "mcpServers": {
    "calculator-mcp-server": {
      "url": "https://calculator.caseyjhand.com/mcp"
    }
  }
}

Claude Desktop では、Settings → Connectors からリモートサーバーを追加します。

セルフホスト/ローカル

次のいずれかを MCP クライアントの設定ファイルに追加します。

{
  "mcpServers": {
    "calculator-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/calculator-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または、npx を使用します(Bun は不要です)。

{
  "mcpServers": {
    "calculator-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/calculator-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

または、Docker を使用します。

{
  "mcpServers": {
    "calculator-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "ghcr.io/cyanheads/calculator-mcp-server:latest"
      ]
    }
  }
}

Streamable HTTP を使用する場合は、トランスポートを設定してビルド済みサーバーを起動します。

MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
インストール
  1. リポジトリをクローンします。
git clone https://github.com/cyanheads/calculator-mcp-server.git
  1. ディレクトリに移動します。
cd calculator-mcp-server
  1. 依存関係をインストールします。
bun install

設定

変数説明デフォルト
CALC_MAX_EXPRESSION_LENGTH許可される式文字列の最大長(10~10,000)。1000
CALC_EVALUATION_TIMEOUT_MS評価の最大時間(ミリ秒、100~30,000)。5000
CALC_MAX_RESULT_LENGTH結果文字列の最大長(文字数、1,000~1,000,000)。100000
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_HOSTHTTP サーバーのホスト名。127.0.0.1
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_HTTP_ENDPOINT_PATHHTTP MCP エンドポイントのパス。/mcp
MCP_HTTP_MAX_BODY_BYTESHTTP リクエストの最大受信サイズ。0 にすると制限が無効になります。1048576
MCP_AUTH_MODE認証モード:none、jwt、または oauth。none
MCP_SESSION_MODEauto、stateful、または stateless。サーバーはコード内で stateless を宣言しているため、どの起動方法でも同じ設定が適用されます。この値を設定すると、その宣言が上書きされます。stateless
MCP_LOG_LEVELログレベル(RFC 5424)。info

セッション、再開可能性、ログ記録、テレメトリの任意の設定については、.env.example を参照してください。

サーバーの実行

ローカル開発
  • 本番バージョンをビルドして実行します。

    bun run build
    bun run start:http   # or start:stdio
    
  • チェックとテストを実行します。

    bun run devcheck     # Lints, formats, type-checks
    bun run test         # Runs test suite
    
Docker
docker build -t calculator-mcp-server .
docker run -p 3010:3010 calculator-mcp-server

イメージのデフォルト設定は、ポート 3010 での Streamable HTTP、ステートレスセッション、/var/log/calculator-mcp-server へのログ出力です。OpenTelemetry の依存関係はデフォルトでインストールされます。省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。

プロジェクト構成

ディレクトリ用途
src/mcp-server/tools/ツールの定義(*.tool.ts)。
src/mcp-server/resources/リソースの定義(*.resource.ts)。
src/services/ドメインサービスとの連携(MathService)。
src/config/Zod による環境変数の解析と検証。
docs/生成されたディレクトリツリー。
tests/計算、設定、レスポンス契約のテスト。

開発ガイド

開発ガイドラインとアーキテクチャ上のルールについては、AGENTS.md または CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジック内で try/catch を使用しないでください。
  • ログ記録には ctx.log を使用してください。
  • 新しいツールとリソースは src/index.ts に登録してください。

コントリビューション

Issue を歓迎します。提出前にチェックを実行してください。

bun run devcheck
bun run test

ライセンス

Apache-2.0 — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。