実装 level: 上級

自作MCPサーバー入門 — AIに自分だけのツールを持たせる

MCPサーバーは自分で作れます。TypeScriptで30分で動くものを作り、Claude Codeから呼び出すまでの実装手順です。

なぜ自作するのか

既製のMCPサーバーで足りない「自分のサービスのAPI」「社内データ」「独自の計算処理」をAIに使わせたいとき、MCPサーバーの自作が答えになります。仕組みを一度理解すると、AIツール開発の幅が一気に広がります。

最小のMCPサーバーを作る

mkdir my-mcp && cd my-mcp
npm init -y
npm install @modelcontextprotocol/sdk zod

server.ts を作成:

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: 'my-tools', version: '1.0.0' });

// ツールを定義: 名前・説明・入力スキーマ・処理
server.tool(
  'calc_price_with_tax',
  '税込価格を計算する',
  { price: z.number().describe('税抜価格(円)') },
  async ({ price }) => ({
    content: [{ type: 'text', text: `税込: ${Math.floor(price * 1.1)}円` }],
  })
);

const transport = new StdioServerTransport();
await server.connect(transport);

ポイントは3つだけ: ツール名(AIが選ぶ手がかり)、説明(いつ使うべきかをAIに伝える最重要要素)、入力スキーマ(zodで型を定義)。

Claude Codeに接続する

claude mcp add my-tools -- npx tsx server.ts

Claude Codeで「1980円の税込価格は?」と聞くと、AIが自作ツールを呼び出して答えます。

実用レベルへの発展

  • 外部API連携: fetch で自社API・SaaSを呼べば「AIから操作できる自分のサービス」が完成
  • DBアクセス: Supabaseクライアントを組み込めば、自然言語でのデータ操作が可能に
  • 配布: npmに公開すれば、世界中の開発者があなたのMCPを npx 一発で使えます。当サイトのMCPカテゴリに載るような人気サーバーも、多くは個人開発から始まっています

設計の詳細は公式リファレンス実装(MCP Reference Servers)のコードを読むのが最短です。Context7 MCPを入れておくと、最新のSDK仕様をAIが参照しながら実装してくれます。