ClaudeCode.Tokyo

The Definitive Source for Claude Code — AI時代のコード新聞

MONDAY, MARCH 16, 2026|Tokyo Edition
MCPサーバー構築の実践ガイド:Claude Codeを拡張する
Tips·更新: 2026-03-16

MCPサーバー構築の実践ガイド:Claude Codeを拡張する

Model Context Protocol(MCP)サーバーの構築方法を実践的に解説。Claude Codeに独自ツールを追加し、外部サービスと連携する手順を網羅。

ClaudeCode.Tokyo編集部

2026-03-01 公開

ポスト

この記事のポイント

  • MCPサーバーを自作すればClaude Codeにデータベース操作・外部API呼び出しなど任意の機能を追加できる
  • TypeScript/Pythonの公式SDKを使えば最小限のコードでMCPサーバーを実装可能
  • セキュリティを考慮したツール設計とテスト方法を含む実践的な構築フローを解説

MCPとは何か

**Model Context Protocol(MCP)**は、Anthropicが2024年11月に発表したオープンプロトコルです。AIモデルが外部のツールやデータソースにアクセスするための標準化された通信規格を定義しています。

MCPの登場以前は、各AIツールが独自の方法で外部連携を実装していました。MCPにより、一度作ったサーバーはClaude Code、Claude Desktop、その他MCP対応クライアントで共通利用できるようになっています。

MCPサーバーの基本構造

MCPサーバーは以下の3つの要素で構成されます。

  1. ツール(Tools) — Claude Codeが呼び出せる関数。データベースクエリ、API呼び出しなど
  2. リソース(Resources) — 読み取り専用のデータソース。設定ファイル、ドキュメントなど
  3. プロンプト(Prompts) — 再利用可能なプロンプトテンプレート

TypeScriptでのMCPサーバー構築

セットアップ

mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node

最小限のMCPサーバー

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(
  "search_database",
  "データベースからレコードを検索します",
  {
    query: z.string().describe("検索クエリ"),
    limit: z.number().default(10).describe("最大件数"),
  },
  async ({ query, limit }) => {
    // ここに実際のDB検索ロジック
    const results = await searchDB(query, limit);
    return {
      content: [
        {
          type: "text",
          text: JSON.stringify(results, null, 2),
        },
      ],
    };
  }
);

// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);

Claude Codeへの登録

構築したMCPサーバーをClaude Codeに登録するには、以下のコマンドを実行します。

claude mcp add my-tools node /path/to/my-mcp-server/dist/index.js

またはプロジェクトの.claude/mcp.jsonに直接記述します。

{
  "mcpServers": {
    "my-tools": {
      "command": "node",
      "args": ["/path/to/my-mcp-server/dist/index.js"],
      "env": {
        "DATABASE_URL": "postgresql://localhost:5432/mydb"
      }
    }
  }
}

実践的なMCPサーバー例

例1:社内ナレッジベース検索

社内のConfluenceやNotionからドキュメントを検索するMCPサーバーです。

server.tool(
  "search_knowledge_base",
  "社内ナレッジベースを検索します",
  {
    query: z.string().describe("検索キーワード"),
    space: z.string().optional().describe("検索対象のスペース名"),
  },
  async ({ query, space }) => {
    const response = await fetch(
      `${CONFLUENCE_URL}/rest/api/content/search?cql=text~"${query}"`,
      { headers: { Authorization: `Bearer ${CONFLUENCE_TOKEN}` } }
    );
    const data = await response.json();
    return {
      content: [{ type: "text", text: formatResults(data) }],
    };
  }
);

例2:Slack通知送信

Claude Codeの作業完了時にSlackに通知を送るツールです。

server.tool(
  "notify_slack",
  "Slackチャンネルにメッセージを送信します",
  {
    channel: z.string().describe("チャンネル名(#付き)"),
    message: z.string().describe("送信するメッセージ"),
  },
  async ({ channel, message }) => {
    await slackClient.chat.postMessage({
      channel,
      text: message,
    });
    return {
      content: [{ type: "text", text: `${channel}に送信しました` }],
    };
  }
);

セキュリティのベストプラクティス

MCPサーバーを構築する際は、以下のセキュリティ原則を守ることが重要です。

  • 最小権限の原則 — ツールに与える権限は必要最小限にする
  • 入力バリデーション — zodスキーマで入力を厳密に検証する
  • シークレット管理 — APIキーやトークンはenvフィールドで環境変数として渡す
  • ログ記録 — ツールの実行ログを記録し、監査可能にする
  • レート制限 — 外部APIへの呼び出し頻度を制限する

テストとデバッグ

MCPサーバーのテストには、Anthropicが提供するMCP Inspectorが便利です。

npx @modelcontextprotocol/inspector node dist/index.js

ブラウザでインスペクターが開き、各ツールを手動で実行して動作を確認できます。

まとめ

MCPサーバーの構築はClaude Codeの活用範囲を大幅に広げる手段です。公式SDKを使えば最小限のコードで独自ツールを実装でき、データベース操作・外部API連携・社内システムとの統合など多様なユースケースに対応できます。まずは小さなツールから始めて、段階的に機能を拡張していくアプローチがおすすめです。

よくある質問

Q. MCPサーバーとは何ですか?

Model Context Protocol(MCP)はAnthropicが策定したオープンプロトコルで、AIモデルが外部ツールやデータソースにアクセスするための標準規格です。MCPサーバーはこのプロトコルに準拠したサーバーで、Claude Codeに新しい機能(ツール)を提供します。

Q. MCPサーバーの構築にはどの程度の技術力が必要ですか?

Node.jsまたはPythonの基礎知識があれば構築可能です。公式SDKがプロトコルの詳細を抽象化しているため、ツールの入出力を定義するだけで動作します。基本的なMCPサーバーなら50行程度のコードで実装できます。

Q. MCPサーバーをチームで共有するにはどうすればよいですか?

MCPサーバーの設定はプロジェクトルートの.claude/mcp.jsonに記述します。このファイルをgitリポジトリに含めれば、チームメンバー全員が同じMCPサーバーを利用できます。npmパッケージとして公開する方法もあります。

#MCP#サーバー構築#開発#拡張機能

Written by

ClaudeCode.Tokyo編集部

Claude Code専門メディア「ClaudeCode.Tokyo」の編集部です。AI×開発の最新情報を、初心者にもわかりやすくお届けします。

ポスト

関連記事