Build This Now
Build This Now
キーボードショートカットステータスラインガイド
MCPの基本MCP Tool SearchContext7 MCPClaude Code向けMCPサーバー50選以上Cursor MCPサーバーClaude Code検索Claude Code向けブラウザ自動化MCPClaude Codeでソーシャルメディアを自動化するClaude Code用カスタムMCPサーバーの構築
speedy_devvkoen_salo
Blog/Toolkit/MCP/Build Your Own MCP Server for Claude Code

Claude Code用カスタムMCPサーバーの構築

Node.jsでカスタムClaude Code MCPサーバーを構築する方法。ツール定義、リクエストハンドラー、RESTとPostgresのパターン、Claude Codeが読み込むための設定を解説。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Published Mar 8, 2026Toolkit hubMCP index

問題: 公開されているMCPサーバーは、実際に使っているシステムと連携しません。社内API、社内のPostgres、誰も触れないカスタムワークフロー。Claude Codeがそれらにアクセスするには、サーバー自体を作る必要があります。

すぐに試せること: 5分のNode.jsでClaudeを任意のREST APIに接続できます。

// my-api-server.js - Connect Claude to your API
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "my-api-server", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "fetch_user_data",
      description: "Get user information from our internal API",
      inputSchema: {
        type: "object",
        properties: {
          userId: { type: "string", description: "User ID to fetch" },
        },
        required: ["userId"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "fetch_user_data") {
    const response = await fetch(
      `https://api.yourcompany.com/users/${args.userId}`,
      {
        headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
      },
    );
    return {
      content: [{ type: "text", text: JSON.stringify(await response.json()) }],
    };
  }
});
 
server.connect(process.stdio);

このファイルを my-api-server.js として保存します。テストするには node my-api-server.js を実行してください。これで動作するインテグレーションの完成です。

MCPサーバーとは何か

MCPサーバーとは、Claude Codeに呼び出し可能なツールのリストを渡すNode.jsプロセスです。エディタとは独立して動作し、ClaudeにNode.jsからアクセスできるあらゆるもの、つまりAPI、データベース、社内サービスへの接続を提供します。

すべてのサーバーには4つの要素が含まれます:

  • ツール定義: Claudeが呼び出せる関数
  • ツールハンドラー: Claudeが呼び出したときに実行されるコード
  • エラーハンドリング: 呼び出しが失敗したときの有用なメッセージ
  • 認証: 背後のシステムに安全にアクセスする方法

ほとんどのケースをカバーするパターン

REST APIとの連携

小さなコネクターでClaudeをHTTPエンドポイントに向けることができます。

// Generic API connector pattern
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "api-connector", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "api_get",
      description: "GET request to any endpoint",
      inputSchema: {
        type: "object",
        properties: {
          endpoint: { type: "string", description: "API endpoint path" },
          params: { type: "object", description: "Query parameters" },
        },
        required: ["endpoint"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "api_get") {
    const url = new URL(`${process.env.API_BASE_URL}${args.endpoint}`);
    if (args.params) {
      Object.entries(args.params).forEach(([key, value]) =>
        url.searchParams.append(key, value),
      );
    }
 
    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
    });
 
    return {
      content: [
        { type: "text", text: JSON.stringify(await response.json(), null, 2) },
      ],
    };
  }
});
 
server.connect(process.stdio);

同じ形式でStripe、Shopify、社内ダッシュボード、HTTPに対応しているものならすべて処理できます。

データベースとの連携

fetchの呼び出しをデータベースクライアントに置き換えるだけです。

// Database connector for PostgreSQL, MySQL, SQLite
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
const { Client } = require("pg");
 
const server = new Server({ name: "database-connector", version: "1.0.0" });
const client = new Client({ connectionString: process.env.DATABASE_URL });
 
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "query_database") {
    const result = await client.query(request.params.arguments.query);
    return {
      content: [{ type: "text", text: JSON.stringify(result.rows, null, 2) }],
    };
  }
});

これでClaudeがSQLを実行し、データベース作業を支援できるようになります。

セットアップとテスト

プロジェクトを開始します。

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

次に、MCPの設定ファイルからClaude Codeにサーバーを指定します。ファイルの場所はClaudeの実行方法によって異なります。

  • Claude Code CLI: ~/.claude.json(ユーザーレベル)または .mcp.json(プロジェクトレベル)
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)
{
  "mcpServers": {
    "my-custom-server": {
      "command": "node",
      "args": ["/path/to/your/server.js"],
      "env": { "API_TOKEN": "your-token" }
    }
  }
}

保存したらClaude Codeを再起動してください。新しいサーバーは起動時に読み込まれます。

問題が起きたとき

サーバーが見つからない: 設定のパスまたはJSONに問題があります。ファイルの場所を確認してください。command には絶対パスを使用してください。

ツールのタイムアウト: 時間がかかる処理はツールをハングさせます。独自のタイムアウトで包み、クリーンに失敗するようにしましょう。

認証失敗: 設定の環境変数がサーバーに届いていません。スペルが正しく、値が存在するか確認してください。

最初にやっておくべきこと

  • 外部呼び出しはすべてtry-catchで囲み、クラッシュではなくテキストとしてエラーが表示されるようにする
  • トークンはソースコードではなく環境変数に格納する
  • レート制限のあるAPIにはClaudeがクォータを使い切らないよう独自のスロットルを設ける
  • console.log の出力はClaudeのログに表示されるため、デバッグに自由に活用する

次のステップ

1つ接続するものを選んで、そこから積み上げていきましょう。

  1. 1つのAPIから始める: 毎日触れるもの
  2. RESTパターンをコピーする: 上記のコネクターがテンプレート
  3. 読み込みを確認する: Claudeに「利用可能なMCPツールは何ですか?」と質問すれば、新しいツールが表示されるはず
  4. 良いツールの説明を書く: MCPツール検索はこれを使ってサーバーをいつ読み込むか判断する
  5. さらに読む: MCPの基本ガイドとよく使われるMCPサーバーのリストが次の構築内容をカバーしている

カスタムMCPサーバーはClaude Codeを自社スタックのクライアントに変えます。週に1サーバーを作れば、Claudeがアクセスできるもののリストは静かに長くなっていきます。

Continue in MCP

  • Claude Code向けMCPサーバー50選以上
    Claude Code向けのMCPサーバー50選以上: エディタ統合、使用量モニター、オーケストレーター、データベースコネクター、ブラウザドライバー、今すぐ導入する価値のあるスターターキット。
  • Claude Code向けブラウザ自動化MCP
    MCPを経由してPlaywrightやPuppeteerをClaude Codeに接続し、自然言語のプロンプトで実際のブラウザを操作。スクレイピング、QA、回帰テストのクリック操作をセレクター不要で実現。
  • Context7 MCP
    Context7 MCPをClaude Codeに追加することで、プロンプト実行時に最新のライブラリドキュメントを取得。古いトレーニングデータの推測、存在しないAPIの生成、関数名の変更問題を解消。
  • Cursor MCPサーバー
    Cursor IDEでMCPサーバーを設定する方法。.cursor/mcp.jsonの場所、CursorのJSONフォーマット、検索・git・ブラウザ用に最初に追加すべきサーバーを解説。
  • MCPの基本
    Model Context Protocolの基本:サーバープロセスがツール、API、サービスをClaude Codeに共有ワイヤーフォーマットで公開する仕組み。設定、トランスポート、最初のサーバー構築。
  • MCP Tool Search
    MCP Tool SearchはClaude Codeのツール定義をコンテキストウィンドウの10%を超えた時点で遅延読み込みし、アイドル状態のMCPサーバーから数万トークンを取り戻します。

More from Toolkit

  • キーボードショートカット
    Claude Codeのkeybindings.jsonを設定する: 17のコンテキスト、キーストローク構文、コードシーケンス、修飾キーの組み合わせ、デフォルトショートカットを即座に無効化する方法。
  • ステータスラインガイド
    Claude Code のステータスラインにモデル名、gitブランチ、セッションコスト、コンテキスト使用量を表示する方法。settings.json の設定、JSON入力、bash、Python、Node.js スクリプトを解説。
  • AIによるSEOとGEO最適化
    Generative Engine Optimizationの解説: Googleで上位表示されるだけでなく、ChatGPT、Claude、Perplexityの回答内でコンテンツが引用されるようにする方法。
  • 2026年版 Claude Code と Cursor の比較
    2026年の Claude Code と Cursor を並べて比較します。エージェントモデル、コンテキストウィンドウ、料金プラン、そして各ツールが異なる開発ワークフローにどう適合するかを解説します。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Claude Codeでソーシャルメディアを自動化する

Claude CodeからTwitter/XとLinkedInへの投稿を自動化する:プラットフォーム別の下書き生成、直接API呼び出し、ブラウザMCPとの連携、スケジュール出力。

Claude Code VS Code拡張機能

AnthropicのVS Code拡張機能は、Claude CodeをエディタサイドバーのSparkアイコンパネルとして組み込みます。インラインdiff、プランモード、サブエージェント、MCPサポートが利用できます。

On this page

MCPサーバーとは何か
ほとんどのケースをカバーするパターン
REST APIとの連携
データベースとの連携
セットアップとテスト
問題が起きたとき
最初にやっておくべきこと
次のステップ

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。