Skip to main content
Glama
leesdream

Calculator MCP Server

by leesdream

Calculator MCP Server

4つのツール(add、subtract、multiply、divide)を公開する最小限のMCPサーバーで、2つのバージョンがあります:

  • calculator_server.py — Python mcp SDK(FastMCP)で構築。 @mcp.tool() が型ヒントとdocstringからJSONスキーマを自動生成し、 JSON-RPCプロトコルも処理してくれます。

  • calculator_server_raw.py — 同じサーバーを標準ライブラリのみ(json + sys)で ゼロから実装したもの。mcp への依存はありません。JSON-RPC 2.0のメッセージ処理を 手動で実装し、FastMCPが内部で何をしているかを示しています。具体的には、 stdinから改行区切りのJSONリクエストを読み取り、method(initialize、 tools/list、tools/call、ping)に応じて分岐し、stdoutにJSON-RPCレスポンスを 書き込みます。フレーミングの詳細(LSPスタイルのヘッダーなし、1行に1つのJSONオブジェクト)に ついては、ファイル冒頭のdocstringを参照してください。

セットアップ

python -m venv .venv
.venv\Scripts\pip install -r requirements.txt

Related MCP server: Math MCP Server

直接実行する(stdio)

MCPサーバーは通常のCLIではなく、stdio(またはHTTP)を介して通信します。「実行して 出力を見る」のではなく、クライアントが接続する方式です。試す方法は2つあります:

1. MCP Inspector(ビジュアル、対話式) — Node.js/npxが必要:

.venv\Scripts\mcp dev calculator_server.py

ブラウザのUIが開き、add、multiply などを手動で呼び出せます。

ページが読み込まれても「Connect to an MCP server to start inspecting」と表示され、 Toolsタブがない場合は、サイドバーがコマンドを自動的に認識できていません (古いセッション設定がキャッシュされている場合に発生することがあります)。サイドバーに 手動で入力して Connect をクリックしてください:

  • Transport Type: STDIO

  • Command: C:\Users\simon\mcpserversample\.venv\Scripts\python.exe

  • Arguments: C:\Users\simon\mcpserversample\calculator_server.py

接続すると、上部ナビゲーションに Tools タブが表示され、 "List Tools" をクリックして各ツールを実行できます。

2. test_client.py — このリポジトリに含まれるスクリプト型クライアントで、 接続、ツール一覧の取得、各ツールの呼び出しを行います。デフォルトでは calculator_server.py を使用しますが、パスを指定すればもう一方のバージョンも テストできます:

.venv\Scripts\python test_client.py
.venv\Scripts\python test_client.py calculator_server_raw.py

Claude Desktopへの組み込み

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "calculator": {
      "command": "C:\\Users\\simon\\mcpserversample\\.venv\\Scripts\\python.exe",
      "args": ["C:\\Users\\simon\\mcpserversample\\calculator_server.py"]
    }
  }
}

仕組み

  • calculator_server.py は FastMCP サーバーを作成し、各Python関数を @mcp.tool() デコレータでツールとして登録します。関数の型ヒントとdocstringが ツールのJSONスキーマと説明になり、呼び出し側のクライアント(Claude、Inspector、 または test_client.py)がそれを参照します。

  • mcp.run() はMCPのstdioトランスポートを使用してサーバーを起動し、 stdin/stdoutで待ち受けます。これは、クライアントがローカルのMCPサーバーを サブプロセスとして起動して通信する標準的な方法です。

  • クライアントは接続後、list_tools() を呼び出して利用可能なツールを確認し、 その後 call_tool(name, args) でツールを呼び出して結果を受け取ります。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A demonstration MCP server that provides calculator functionality through both stdio and FastAPI implementations. Enables users to perform mathematical calculations via MCP tools using the FastMCP framework.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Provides four fundamental arithmetic operations (add, subtract, multiply, divide) as MCP tools with zero-division protection.
    4
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables arithmetic operations such as addition and calculating averages, exposing tools via MCP with stdio and Streamable HTTP transports.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform arithmetic operations — addition, subtraction, multiplication, and division with divide-by-zero validation — through MCP tool calls. It can be run locally over stdio or as an HTTP microservice via streamable-http transport.
    4
    -