自作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が参照しながら実装してくれます。