Build This Now
Build This Now
キーボードショートカットステータスラインガイド
Claude for Creative Work コネクタ徹底解説MCPの基本MCP Tool SearchContext7 MCPClaude Code向けMCPサーバー50選以上Cursor MCPサーバーClaude Code検索Claude Code向けブラウザ自動化MCPClaude Codeでソーシャルメディアを自動化するClaude Code用カスタムMCPサーバーの構築Build an MCP ServerMCP Servers Explained
Skills, Subagents, HooksSubagent Sweet SpotCLAUDE.md Best PracticesFix Context Limit
speedy_devvkoen_salo
Blog/Toolkit/MCP/Custom MCP Integrations

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

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

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

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

企業向けに構築している実績を見る →
speedy_devvWritten by speedy_devvPublished 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、回帰テストのクリック操作をセレクター不要で実現。
  • How to Build an MCP Server for Claude Code
    A step-by-step tutorial: build a minimal MCP server in Node and TypeScript, expose one tool over stdio, and register it with Claude Code via claude mcp add and a project .mcp.json.
  • Claude for Creative Work コネクタ徹底解説
    Anthropic公式の9つのコネクタが、ClaudeをBlender、Adobe Creative Cloud、Autodesk Fusion、Ableton、Splice、Affinity、SketchUp、Resolumeに直結します。
  • Context7 MCP
    Context7 MCPをClaude Codeに追加することで、プロンプト実行時に最新のライブラリドキュメントを取得。古いトレーニングデータの推測、存在しないAPIの生成、関数名の変更問題を解消。
  • Cursor MCPサーバー
    Cursor IDEでMCPサーバーを設定する方法。.cursor/mcp.jsonの場所、CursorのJSONフォーマット、検索・git・ブラウザ用に最初に追加すべきサーバーを解説。

More from Toolkit

  • CLAUDE.md, Skills, Subagents, Hooks: When to Use Which
    Claude Code skills vs subagents vs hooks vs CLAUDE.md: a plain mental model for picking the right primitive, with token costs and examples.
  • Claude Code Subagents: The 3 to 5 Agent Sweet Spot
    Claude code subagents work best at 3-5 concurrent agents. Here is why that ceiling exists, how to set them up, and what to use past it.
  • CLAUDE.md Best Practices: The File That Makes Claude Code Reliable
    CLAUDE.md best practices: keep it under 200 lines, write it by hand, and use hooks when you need real enforcement, not advice.
  • How to Fix Claude Code Running Out of Context
    Claude Code running out of context is a session design problem. Fix it with /compact, lean CLAUDE.md, skills, and subagents, not a bigger window.

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

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

企業向けに構築している実績を見る →

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

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

Build an MCP Server

A step-by-step tutorial: build a minimal MCP server in Node and TypeScript, expose one tool over stdio, and register it with Claude Code via claude mcp add and a project .mcp.json.

On this page

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

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

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

企業向けに構築している実績を見る →