2025 年 9 月時点 tsx でより手軽に TypeScript な MCP サーバーを動かすメモ

2025 年 9 月時点 tsx でより手軽に TypeScript な MCP サーバーを動かすメモ

2025 年 9 月時点 tsx でより手軽に TypeScript な MCP サーバーを動かすメモです。

背景

あくまで 2025 年 9 月時点の仕様で試してみたお話です。ここから仕様が変わったり、より良いアプローチが見つかるかもしれません。

こういった記事で ts-node/esm を使って TypeScript を実行しているのですが、これはこれで手堅いものの、tsconfig.json をする必要があったり環境設定に手間があるので、より手軽に TypeScript が動かせる tsx も試してみます。

準備

プロジェクトフォルダで準備をして Visual Studio Code で開きます。

npm init -y

で npm の準備をして、

npm install @modelcontextprotocol/sdk zod

npm install -D tsx

をインストールして基礎の設定をします。

package.json の編集

code package.json

package.json を開いて、

"type": "module",

を加えて module 対応にします。

"sample-add-server": "tsx --no-warnings sample-add-server.ts"

scripts に MCP サーバー実行用の設定を加えます。これで npm run sample-add-server で起動できます。

sample-add-server.ts

シンプルな足し算をするコードです。

code sample-add-server.ts

で sample-add-server.ts を作ります。

modelcontextprotocol/typescript-sdk: The official TypeScript SDK for Model Context Protocol servers and clients にある QuickStart の 2025 年 9 月時点のコードを参考にします。

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

// Create an MCP server
const server = new McpServer({
  name: "addition-server",
  version: "1.0.0"
});

// Add an addition tool
server.registerTool("add",
  {
    title: "Addition Tool",
    description: "Add two numbers",
    inputSchema: { a: z.number(), b: z.number() }
  },
  async ({ a, b }) => ({
    content: [{ type: "text", text: String(a + b) }]
  })
);

// Start receiving messages on stdin and sending messages on stdout
const transport = new StdioServerTransport();
await server.connect(transport);

これを sample-add-server.ts で保存します。

動かしてみる

たとえば Claude Desktop で動かしてみます。

"mcpServers":{
    "addition-server": {
      "command": "npm",
      "args": [
        "--prefix",
        "C:\\workspace\\tsx-mcp-server",
        "run",
        "sample-add-server",
        "--silent"
      ]
    }
  }

設定ファイルにこのように加えてツールを加えます。

このように追加されました。

足し算して 4 + 12 というと、実際にこのツールがうまく動きました!

tsx だと tsconfig なしで動くので、環境設定ですべきことが減ってやりやすくなりますね!