本文へ移動

FORWARD DEPLOYED ENGINEER

FDE 基礎読本

Claude と Databricks の最新動向と、FDE の基礎知識

CLAUDE動作確認済み中級・約 30 分

自作の MCP サーバーを作って Claude Code につなぐ

文字数を正確に数えるツールを MCP サーバーとして作り、Claude Code から呼び出す。

※ 2026年10月7日に、MCP の TypeScript SDK 1.32.1・Node.js 24・Claude Code 2.1.292 で手順どおりに動くことを確かめました。

この手順でできること

  • MCP サーバーの最小の作り(ツールの定義と、標準入出力での接続)が分かる
  • Claude Code に MCP サーバーを登録して、ツールを呼び出してもらう

用意するもの

  • Node.js 20 以上
  • Claude Code が使えること(ログイン済み)

手順

  1. 一、プロジェクトを作り、SDK を入れる

    MCP の公式の TypeScript SDK と、入力の形を定義する zod を入れます。

    mkdir moji-counter && cd moji-counter
    npm init -y
    npm pkg set type=module
    npm install @modelcontextprotocol/sdk zod
  2. 二、ツールを1つ持つ MCP サーバーを書く

    生成 AI は文字数を数えるのが苦手なので、プログラムで正確に数えるツールにします。ツールには名前・説明・入力の形を付けます。Claude は説明を読んで、いつ使うかを判断します。

    Claude Code とは標準入出力(stdio)でつなぎます。

    server.js
    import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
    import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
    import { z } from 'zod';
    
    const server = new McpServer({ name: 'moji-counter', version: '1.0.0' });
    
    server.registerTool(
      'count_characters',
      {
        title: '文字数を数える',
        description: '日本語を含む文章の文字数を正確に数える。改行と空白を除いた文字数も返す。文字数の指定がある文章を書いたときの確認に使う。',
        inputSchema: { text: z.string().describe('数えたい文章') },
      },
      async ({ text }) => {
        const all = [...text].length;
        const withoutSpaces = [...text.replace(/\s/g, '')].length;
        return { content: [{ type: 'text', text: `文字数: ${all}(改行・空白を除くと ${withoutSpaces})` }] };
      },
    );
    
    await server.connect(new StdioServerTransport());
  3. 三、Claude Code に登録する

    claude mcp add で登録します。-- の後ろが、サーバーを起動するコマンドです。既定では、このプロジェクトであなただけが使える設定(local)になります。チームで共有したいときは --scope project を付けると、.mcp.json に保存されます。

    claude mcp add moji-counter -- node "$(pwd)/server.js"
  4. 四、Claude Code から使ってもらう

    Claude Code を起動し、文字数を数えるよう頼みます。初めてツールを使うときは、実行してよいかの確認が出るので許可します。

    claude
    > 「生成AIで業務を変える」という文の文字数を、moji-counter のツールで数えて

うまくいったかの確かめ方

  • Claude Code の中で /mcp を実行すると、moji-counter が connected と表示される
  • mcp__moji-counter__count_characters のツールが呼ばれ、「文字数: 11(改行・空白を除くと 11)」が返る(試したときの実際の結果です)

つまずきどころ

  • サーバーのパスは絶対パスで登録します。相対パスだと、Claude Code を別の場所で起動したときに見つかりません。
  • stdio のサーバーでは、標準出力にログを書かないでください。通信が壊れます。ログは標準エラー出力(console.error)に書きます。
  • ツールの説明(description)は、Claude がツールを選ぶ手がかりです。いつ使うのかを具体的に書きます。

後片付け

  • claude mcp remove moji-counter で登録を外し、フォルダを削除します。

公式の情報

← やってみたの一覧に戻る