---
title: "MCPサーバーの作り方入門 — AIツールを自分好みにカスタマイズ【2026年最新】"
description: "MCP（Model Context Protocol）サーバーの作り方をTypeScriptで徹底解説。基本概念から実装手順、実践ユースケースまで、個人開発者向けに初心者にもわかりやすく紹介します。"
url: "https://shiftb.dev/articles/mcp-server-guide"
publishedAt: "2026-04-03"
updatedAt: "2026-04-03"
author: "立川修平（ぶべ）"
category: "ai-development"
tags: ["MCP", "Model Context Protocol", "Claude Code", "AI駆動開発", "個人開発"]
---

# MCPサーバーの作り方入門 — AIツールを自分好みにカスタマイズ【2026年最新】

「Claude Codeの機能をもっと拡張したい」「自分のデータベースやAPIにAIから直接アクセスできたらいいのに」——ShiftBの受講生からも、こうした声が増えています。その答えが**MCP（Model Context Protocol）サーバー**です。

MCPは、Anthropicが2024年11月にオープンソースで公開したプロトコルで、AIモデルと外部ツール・データソースを**標準化された方法で接続する仕組み**です。2026年4月現在、GitHub上のMCP関連リポジトリは**累計15,000個**を超え、npm上のMCPパッケージは**月間200万ダウンロード**を記録しています。Claude Code、Cursor、VS Codeなど主要なAI開発ツールがすべてMCPに対応し、事実上の業界標準になりつつあります。

僕はShiftBの校長として**受講生142名**のAI駆動開発をサポートする中で、自社プロダクトにも**10個以上のMCPサーバー**を構築・運用してきました。Slack連携、データベース操作、Google API統合、さらにはfreee会計APIとの接続まで——MCPサーバーを作れるようになると、**AIツールの可能性が文字通り無限に広がります**。

この記事では、MCPの基本概念から、**TypeScriptでの実装手順、実践ユースケース、個人開発での活用方法**まで、初心者にもわかるように徹底解説します。記事を読み終えたら、自分だけのMCPサーバーを作れるようになるはずです。

## MCPとは？Model Context Protocolの基本を理解する

### MCPの定義 — AIとツールをつなぐ「共通言語」

MCP（Model Context Protocol）は、**AIモデルが外部のツールやデータソースにアクセスするための標準プロトコル**です。Anthropicが2024年11月にオープンソースとして公開しました。

わかりやすく例えると、MCPは「**AIツールのUSB規格**」のようなものです。USBがあれば、どのメーカーのパソコンでもマウスやキーボードが使えるように、MCPがあれば、どのAIクライアント（Claude Code、Cursor、VS Code等）からでも、同じMCPサーバーに接続できます。

MCPが登場する前は、AIツールごとに独自のプラグインやAPI連携の仕組みが必要でした。たとえば、SlackとAIを連携させたい場合、Claude Code用、Cursor用、VS Code用とそれぞれ別の実装が必要だったのです。MCPはこの問題を解決し、**一度作ったMCPサーバーをどのAIクライアントからでも使える**ようにしました。

### なぜMCPが急速に普及しているのか

MCPの普及速度は驚異的です。以下のデータがそれを物語っています。

| 指標 | 2024年12月（公開直後） | 2026年4月（現在） |
| --- | --- | --- |
| GitHub上のMCPリポジトリ数 | 約200個 | 15,000個以上 |
| npmのMCPパッケージDL数/月 | 約5万 | 200万以上 |
| 対応AIクライアント数 | 3（Claude Desktop, Zed, Replit） | 20以上（Claude Code, Cursor, VS Code, JetBrains等） |
| 公式MCPサーバー数 | 5個 | 50個以上 |

この急成長の背景には、**3つの要因**があります。

- **AIコーディングツールの爆発的普及**：JetBrainsの調査で開発者の90%がAIを業務使用
- **Anthropic・OpenAI・Googleの相次ぐMCP対応**：2025年後半にOpenAI、2026年初頭にGoogleもMCP対応を発表
- **開発者コミュニティの活性化**：「MCPサーバーを作って公開する」文化がOSSコミュニティで定着

### MCPで何ができるのか — 3つのプリミティブ

MCPサーバーは、AIクライアントに対して以下の**3つの機能（プリミティブ）**を提供できます。

| プリミティブ | 説明 | 具体例 |
| --- | --- | --- |
| **Tools（ツール）** | AIが実行できるアクション | Slackにメッセージ送信、DBにクエリ実行、API呼び出し |
| **Resources（リソース）** | AIが読み取れるデータソース | ファイルの内容、DBのレコード、APIのレスポンス |
| **Prompts（プロンプト）** | AIに提供する定型のプロンプトテンプレート | コードレビュープロンプト、データ分析テンプレート |

この中で最も使われているのが**Tools（ツール）**です。ShiftBの受講生でMCPサーバーを作った**23名**のうち、全員がToolsを実装し、Resourcesを実装したのは8名、Promptsは3名でした。まずはToolsから始めるのが実践的です。

![MCPの全体像 — AIクライアント・MCPサーバー・外部サービスの関係図](https://shiftb.dev/images/articles/mcp-server-guide-overview.png)

## MCPサーバーの仕組み — クライアント・サーバー・ツールの関係

### MCPアーキテクチャの全体像

MCPは**クライアント-サーバーモデル**で動作します。登場人物は3つです。

- **MCPホスト**：Claude Code、Cursorなどのアプリケーション。ユーザーが直接操作する
- **MCPクライアント**：ホストの内部で動作し、MCPサーバーとの通信を管理する
- **MCPサーバー**：外部ツールやデータソースへのアクセスを提供するプログラム

Claude Codeを例にすると、あなたが「Slackの#generalチャンネルに投稿して」と指示した場合、以下のように処理されます。

1. Claude Code（ホスト）がユーザーの指示をAIモデルに送信
2. AIモデルが「Slack MCPサーバーのsend_messageツールを使う」と判断
3. MCPクライアントがSlack MCPサーバーにリクエストを送信
4. MCPサーバーがSlack APIを呼び出してメッセージを投稿
5. 結果がMCPクライアント → AIモデル → ユーザーに返される

### 通信方式 — stdioとSSE

MCPクライアントとサーバー間の通信には、**2つの方式**があります。

| 通信方式 | 仕組み | ユースケース | メリット |
| --- | --- | --- | --- |
| **stdio** | 標準入出力を使ったプロセス間通信 | ローカルのMCPサーバー | セットアップが簡単、高速 |
| **Streamable HTTP** | HTTP + Server-Sent Eventsによる通信 | リモートのMCPサーバー | ネットワーク越しに使える、複数クライアント対応 |

個人開発で最初に作るなら**stdio方式**がおすすめです。ローカルで動かすだけなら設定ファイルにコマンドを書くだけで接続できます。チームで共有したり、クラウドにデプロイしたい場合はStreamable HTTPを使います。

### JSON-RPCメッセージの仕組み

MCPの内部通信には**JSON-RPC 2.0**というプロトコルが使われています。これはWebの世界で広く使われている標準的なRPC（Remote Procedure Call）規格で、すべてのメッセージがJSONフォーマットです。

たとえば、AIがMCPサーバーの「データベース検索」ツールを呼び出すとき、実際にやり取りされるメッセージはこのようになります。

```
// クライアント → サーバー（リクエスト）
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_users",
    "arguments": { "query": "田中" }
  }
}

// サーバー → クライアント（レスポンス）
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "3件のユーザーが見つかりました: ..."
    }]
  }
}
```

この仕組みを知っておくとデバッグの際に役立ちますが、実際にはMCP SDKがすべて抽象化してくれるので、開発者がJSON-RPCを直接書くことはありません。

## MCPサーバーの開発環境を準備する

### 必要なツール・バージョン（所要時間：約10分）

MCPサーバーの開発に必要なものは以下の通りです。

| ツール | 推奨バージョン | 用途 |
| --- | --- | --- |
| Node.js | v20以上 | ランタイム |
| TypeScript | 5.0以上 | 型安全な開発 |
| Claude Code または Cursor | 最新版 | MCPクライアント（動作確認用） |
| MCP Inspector（任意） | 最新版 | MCPサーバーのデバッグツール |

### プロジェクトのセットアップ手順

ターミナルを開いて、以下のコマンドを順番に実行してください。

```
# 1. プロジェクトディレクトリを作成
mkdir my-first-mcp-server
cd my-first-mcp-server

# 2. npm初期化
npm init -y

# 3. 必要なパッケージをインストール
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node

# 4. TypeScript設定ファイルを作成
npx tsc --init
```

### tsconfig.jsonの推奨設定

`tsconfig.json`を以下の内容に書き換えます。MCPサーバーでは**ESModules**を使うのが推奨されています。

```
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}
```

また、`package.json`に以下を追加してESModulesを有効化します。

```
{
  "type": "module",
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  }
}
```

### MCP Inspectorの導入（任意だが強く推奨）

MCP Inspectorは、MCPサーバーの動作確認・デバッグ用のWebインターフェースです。ブラウザ上でツールの実行やレスポンスの確認ができるため、開発効率が大幅に上がります。

```
# MCP Inspectorを起動（グローバルインストール不要）
npx @modelcontextprotocol/inspector node dist/index.js
```

実行すると`http://localhost:5173`にブラウザでアクセスでき、MCPサーバーのツール一覧の確認、ツールの手動実行、レスポンスの検証が可能です。ShiftBの受講生にも**必ずInspectorを使うこと**を推奨しています。

## 実践：TypeScriptでMCPサーバーを作ってみよう

### Step 1：最小構成のMCPサーバーを作る（所要時間：5分）

まずは「Hello, MCP!」と返すだけの最小構成のMCPサーバーを作ります。`src/index.ts`を作成してください。

```
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

// MCPサーバーのインスタンスを作成
const server = new McpServer({
  name: "my-first-mcp-server",
  version: "1.0.0",
});

// ツールを定義
server.tool(
  "hello",            // ツール名
  "挨拶を返すツール",   // 説明（AIがツールを選ぶ判断材料になる）
  {
    name: z.string().describe("挨拶する相手の名前"),
  },
  async ({ name }) => ({
    content: [{ type: "text", text: `こんにちは、${name}さん！MCPサーバーからの挨拶です。` }],
  })
);

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

たったこれだけです。**30行未満のコード**でMCPサーバーが完成しました。ポイントは以下の3つです。

- `McpServer`：MCPサーバーのコアクラス。名前とバージョンを指定
- `server.tool()`：ツールを定義。名前・説明・パラメータスキーマ・ハンドラーを渡す
- `StdioServerTransport`：stdio方式で通信するトランスポート

### Step 2：ビルドして動作確認する（所要時間：3分）

```
# ビルド
npm run build

# MCP Inspectorで動作確認
npx @modelcontextprotocol/inspector node dist/index.js
```

ブラウザで`http://localhost:5173`を開き、左側のツール一覧に「hello」が表示されていれば成功です。`name`パラメータに名前を入力して実行すると、挨拶メッセージが返ってきます。

### Step 3：Claude Codeに接続する（所要時間：5分）

動作確認ができたら、Claude Codeに接続してみましょう。Claude Codeの設定ファイルにMCPサーバーの情報を追加します。

```
# Claude Codeの設定を開く
claude mcp add my-first-mcp -- node /absolute/path/to/dist/index.js
```

これでClaude Codeを起動すると、AIが`hello`ツールを使えるようになります。「太郎さんに挨拶して」と指示すれば、MCPサーバーが呼び出されて「こんにちは、太郎さん！」と返ってきます。

### Step 4：実用的なツールを追加する — Todoリスト管理サーバー（所要時間：15分）

基本がわかったところで、もう少し実用的なMCPサーバーを作ります。インメモリのTodoリストを管理するサーバーです。

```
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: "todo-mcp-server",
  version: "1.0.0",
});

// Todoデータの型定義
interface Todo {
  id: number;
  title: string;
  completed: boolean;
  createdAt: string;
}

// インメモリストレージ
let todos: Todo[] = [];
let nextId = 1;

// Todoを追加するツール
server.tool(
  "add_todo",
  "新しいTodoを追加する",
  { title: z.string().describe("Todoのタイトル") },
  async ({ title }) => {
    const todo: Todo = {
      id: nextId++,
      title,
      completed: false,
      createdAt: new Date().toISOString(),
    };
    todos.push(todo);
    return {
      content: [{ type: "text", text: `Todo #${todo.id} "${title}" を追加しました。` }],
    };
  }
);

// Todo一覧を取得するツール
server.tool(
  "list_todos",
  "Todoの一覧を取得する",
  {},
  async () => {
    if (todos.length === 0) {
      return { content: [{ type: "text", text: "Todoはまだありません。" }] };
    }
    const list = todos
      .map((t) => `[${t.completed ? "✓" : " "}] #${t.id} ${t.title}`)
      .join("\n");
    return { content: [{ type: "text", text: list }] };
  }
);

// Todoを完了にするツール
server.tool(
  "complete_todo",
  "指定したTodoを完了にする",
  { id: z.number().describe("完了にするTodoのID") },
  async ({ id }) => {
    const todo = todos.find((t) => t.id === id);
    if (!todo) {
      return { content: [{ type: "text", text: `Todo #${id} は見つかりません。` }] };
    }
    todo.completed = true;
    return {
      content: [{ type: "text", text: `Todo #${id} "${todo.title}" を完了にしました。` }],
    };
  }
);

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

このサーバーをClaude Codeに接続すると、自然言語でTodo管理ができます。

- 「記事を書くタスクを追加して」→ `add_todo`が呼ばれる
- 「今のTodo一覧を見せて」→ `list_todos`が呼ばれる
- 「1番のタスクを完了にして」→ `complete_todo`が呼ばれる

### 良い例・悪い例 — ツール定義のポイント

MCPサーバーの品質は、**ツールの説明（description）の書き方**で大きく変わります。AIがどのツールをいつ使うかは、この説明文を見て判断しているからです。

| 項目 | 悪い例 | 良い例 |
| --- | --- | --- |
| ツール名 | `func1` | `search_users` |
| 説明文 | 「ユーザー関連」 | 「名前またはメールアドレスでユーザーを検索する。最大20件を返す」 |
| パラメータ名 | `q` | `query`（.describe("検索キーワード")付き） |
| エラーハンドリング | 例外をそのまま投げる | ユーザーに伝わるエラーメッセージを返す |

ShiftBの受講生のMCPサーバーをレビューしていると、**ツール説明が雑だとAIが間違ったツールを選ぶ**ケースが頻発します。「このツールは何をするか」「いつ使うべきか」「何を返すか」を明確に書くのがコツです。

![MCPサーバー開発のステップフロー — 環境構築からClaude Code接続まで](https://shiftb.dev/images/articles/mcp-server-guide-flow.png)

## MCPサーバーの実践ユースケース7選

ここからは、個人開発者が**実際に役立つMCPサーバー**のユースケースを7つ紹介します。すべて僕がShiftBの運営や自社プロダクトで実際に使っているものです。

### 1. データベース操作サーバー（難易度：★★☆）

PostgreSQLやSupabaseに接続して、AIから直接データを検索・更新できるMCPサーバーです。個人開発では**最も実用性が高い**ユースケースと言えます。

- 「先月の新規ユーザー数を教えて」→ SQLクエリを実行して結果を返す
- 「ID:123のユーザーのプランをProに変更して」→ UPDATEクエリを実行
- 「直近1週間のアクティブユーザーの一覧をCSVで出力して」→ クエリ + 整形

ShiftBでは、受講生の学習進捗データをSupabaseに保存しており、MCPサーバー経由でClaude Codeから直接データを確認しています。管理画面を開かなくても**自然言語でデータ分析ができる**のは、運営効率を劇的に上げてくれます。

### 2. Slack/Discord連携サーバー（難易度：★☆☆）

チャットツールのAPIに接続して、メッセージの送受信やチャンネル管理をAIから行えるようにします。

- チャンネルへのメッセージ投稿
- スレッドの内容を読み取って要約
- 特定のキーワードを含むメッセージの検索

### 3. Google API統合サーバー（難易度：★★☆）

Google Calendar、Gmail、Google Drive、Google Sheetsなどのサービスと連携するMCPサーバーです。

- 「今日の予定を教えて」→ Google Calendarから取得
- 「未読メールを5件要約して」→ Gmailから取得して要約
- 「売上データのスプレッドシートに今月の数字を追加して」→ Sheets API

### 4. 外部API連携サーバー（難易度：★★☆）

Stripe（決済）、Notion（ドキュメント）、GitHub（リポジトリ管理）など、個人開発でよく使うSaaSのAPIをMCP経由で操作できるようにします。僕の場合、**freee会計API**のMCPサーバーを作って、Claude Codeから経費精算や請求書の確認を行っています。

### 5. Web スクレイピングサーバー（難易度：★★★）

指定したURLの内容を取得し、AIが読める形で整形するMCPサーバーです。競合調査、価格監視、ニュース収集などに使えます。

- 「このURLの記事を要約して」→ ページ内容を取得して要約
- 「競合サービスの料金ページを比較して」→ 複数ページを取得して比較表を作成

### 6. ファイル変換・処理サーバー（難易度：★★☆）

画像のリサイズ、PDFの生成、CSVの整形など、ファイル処理をMCPサーバーで行うパターンです。

- 「この画像を800x600にリサイズして」→ Sharp等で画像処理
- 「このデータからPDFレポートを生成して」→ PDFKit等で生成

### 7. 独自ナレッジベースサーバー（難易度：★★★）

社内ドキュメントや自分のメモをベクトルDBに格納し、AIから検索できるようにするMCPサーバーです。いわゆる**RAG（Retrieval-Augmented Generation）**をMCPで実現します。

- 「前回のプロジェクトで使ったデプロイ手順を教えて」→ ナレッジベースから検索
- 「この問題の解決法を過去のメモから探して」→ 類似ドキュメントを検索

| ユースケース | 難易度 | 開発時間目安 | 個人開発での実用度 |
| --- | --- | --- | --- |
| データベース操作 | ★★☆ | 2〜4時間 | ★★★ |
| Slack/Discord連携 | ★☆☆ | 1〜2時間 | ★★☆ |
| Google API統合 | ★★☆ | 3〜5時間 | ★★★ |
| 外部API連携 | ★★☆ | 2〜4時間 | ★★★ |
| Webスクレイピング | ★★★ | 4〜6時間 | ★★☆ |
| ファイル変換・処理 | ★★☆ | 2〜4時間 | ★★☆ |
| 独自ナレッジベース | ★★★ | 6〜10時間 | ★★★ |

## MCPサーバー開発のベストプラクティスと注意点

### セキュリティ — MCPサーバーの最大の落とし穴

MCPサーバーは外部サービスへのアクセス権を持つため、**セキュリティは最も重要な考慮事項**です。ShiftBの受講生のMCPサーバーをレビューする中で、以下の問題を何度も発見しています。

| よくあるセキュリティ問題 | リスク | 対策 |
| --- | --- | --- |
| APIキーをコードにハードコード | GitHubにプッシュすると漏洩 | 環境変数で管理する |
| DBの全権限を付与 | AIが意図しないDELETEを実行 | READ ONLYの接続と書き込み用を分離 |
| 入力のバリデーション不足 | SQLインジェクション等 | zodでスキーマを厳密に定義 |
| エラーメッセージに内部情報を含む | システム構成が漏洩 | ユーザー向けメッセージに変換 |

特に**データベース操作のMCPサーバー**では、「読み取り専用」と「書き込み可能」のツールを明確に分離し、書き込み操作には確認メッセージを返す設計にすることを強く推奨します。

```
// 良い例：破壊的操作は確認を促す設計
server.tool(
  "delete_user",
  "ユーザーを削除する（この操作は取り消せません）",
  {
    userId: z.number().describe("削除するユーザーのID"),
    confirm: z.boolean().describe("本当に削除する場合はtrue"),
  },
  async ({ userId, confirm }) => {
    if (!confirm) {
      return {
        content: [{
          type: "text",
          text: "削除を実行するには confirm: true を指定してください。"
        }]
      };
    }
    // 削除処理...
  }
);
```

### パフォーマンス — レスポンス時間を意識する

MCPサーバーのレスポンスが遅いと、AIとの対話全体がもっさりします。目安として、**各ツールの応答時間を3秒以内**に抑えることを推奨します。

- 外部APIの呼び出しにはタイムアウトを設定する（デフォルト10秒推奨）
- 大量データを返す場合はページネーションを実装する
- 頻繁に変わらないデータはキャッシュする

### エラーハンドリング — AIに伝わるメッセージを返す

MCPサーバーでエラーが発生した場合、**例外をそのまま投げるのではなく、AIが理解できるメッセージを返す**のが重要です。

```
// 悪い例：技術的なエラーがそのまま返る
server.tool("fetch_data", "...", {}, async () => {
  const res = await fetch("https://api.example.com/data");
  const data = await res.json(); // エラー時に cryptic なメッセージ
  return { content: [{ type: "text", text: JSON.stringify(data) }] };
});

// 良い例：AIが理解しやすいメッセージに変換
server.tool("fetch_data", "...", {}, async () => {
  try {
    const res = await fetch("https://api.example.com/data");
    if (!res.ok) {
      return {
        content: [{
          type: "text",
          text: `APIエラー: ステータスコード ${res.status}。しばらく待ってから再試行してください。`
        }],
        isError: true,
      };
    }
    const data = await res.json();
    return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
  } catch (error) {
    return {
      content: [{
        type: "text",
        text: "外部APIに接続できませんでした。ネットワーク接続を確認してください。"
      }],
      isError: true,
    };
  }
});
```

### テスト戦略 — MCPサーバーのテスト方法

MCPサーバーのテストは**3段階**で行います。

1. **ユニットテスト**：ツールのハンドラー関数を直接テスト。外部APIはモックする
2. **MCP Inspectorでの手動テスト**：実際のMCPプロトコル越しにツールを実行
3. **AIクライアントでの結合テスト**：Claude CodeやCursorから実際に使ってみる

特にステップ3は重要です。**AIがツールの説明文をどう解釈して、どのタイミングでツールを呼ぶか**は、実際に試さないとわかりません。ShiftBの受講生には「10パターン以上の自然言語指示でテストすること」を推奨しています。

## 個人開発者がMCPを活用するワークフロー

### MCPで個人開発の「運営効率」が変わる

MCPサーバーが個人開発者にとって強力なのは、**開発だけでなく「運営」のワークフロー全体を効率化できる**点です。個人開発者は開発・運用・マーケティング・サポートをすべて一人でこなす必要がありますが、MCPを活用すれば多くの作業をAI経由で統合的に管理できます。

### 僕（ぶべ）のMCP活用ワークフロー

参考までに、僕がShiftBの運営と自社プロダクトの開発で実際に使っているMCPサーバーの構成を紹介します。

| 用途 | MCPサーバー | 主な操作 | 節約時間/週 |
| --- | --- | --- | --- |
| コミュニケーション | Slack MCP | メッセージ送信、スレッド要約 | 約2時間 |
| スケジュール | Google Calendar MCP | 予定確認、イベント作成 | 約30分 |
| 会計 | freee MCP | 経費登録、請求書確認 | 約1時間 |
| コンテンツ管理 | Notion MCP | 記事管理、タスク更新 | 約1時間 |
| データ分析 | DB MCP（Supabase） | 受講生データ分析、KPI確認 | 約2時間 |
| SNS投稿 | ブラウザ操作 MCP | 投稿作成、スケジュール設定 | 約1.5時間 |

合計で**週あたり約8時間**の作業時間を削減できています。月に換算すると**約32時間**——つまり丸4日分の作業がMCPによって効率化されています。

### MCPサーバーの「育て方」— 段階的に拡張する

最初から全部作ろうとしないでください。僕のおすすめは以下の順序で段階的にMCPサーバーを増やしていくことです。

1. **Phase 1（1週目）**：既存の公開MCPサーバーを使う  
   npm等で公開されているMCPサーバーをまず使ってみる。操作感を掴む
2. **Phase 2（2〜3週目）**：最も頻繁にやる作業をMCP化  
   自分の日常業務で最もCLI/GUI操作が多い作業を1つ選んでMCPサーバーにする
3. **Phase 3（1ヶ月〜）**：プロダクトのデータベースを接続  
   自社サービスのDBに読み取り専用で接続し、AIからデータ分析できるようにする
4. **Phase 4（2ヶ月〜）**：ワークフロー全体をMCPで統合  
   複数のMCPサーバーを組み合わせ、AIが横断的に作業できる環境を構築する

### 公開MCPサーバーの活用 — 車輪の再発明をしない

すべてを自分で作る必要はありません。2026年4月現在、以下のような**高品質な公開MCPサーバー**が利用可能です。

- **@modelcontextprotocol/server-filesystem**：ファイルシステム操作
- **@modelcontextprotocol/server-github**：GitHub API操作
- **@modelcontextprotocol/server-postgres**：PostgreSQL操作
- **@modelcontextprotocol/server-slack**：Slack API操作
- **@anthropic/mcp-server-fetch**：Web ページの取得

公開サーバーで足りない部分だけを自作する、という戦略が効率的です。ShiftBの受講生でMCPを活用している**23名中18名**が、「最初は公開サーバーから始めた」と回答しています。

![個人開発者のMCP活用ワークフロー — 開発・運営・分析をAIで統合管理](https://shiftb.dev/images/articles/mcp-server-guide-workflow.png)

## よくある質問（FAQ）

### Q1. MCPサーバーを作るのにプログラミングの知識は必要ですか？

はい、**基本的なTypeScript（またはPython）の知識が必要**です。ただし、高度なプログラミングスキルは不要で、関数の定義・async/await・JSONの操作ができればMCPサーバーは作れます。ShiftBの受講生でも、プログラミング歴3ヶ月程度の方がMCPサーバーの開発に成功しています。また、Claude Code自体にMCPサーバーのコードを書いてもらうことも可能です。

### Q2. MCPサーバーとAPIの違いは何ですか？

MCPサーバーは**AIクライアント専用のAPIラッパー**と考えるとわかりやすいです。通常のREST APIは人間（またはプログラム）が呼び出しますが、MCPサーバーは**AIが判断して自動的に呼び出す**点が異なります。MCPサーバーの中身は、多くの場合、既存のAPIを呼び出すコードです。つまりMCPは「AIと既存のAPIをつなぐ翻訳レイヤー」です。

### Q3. MCPサーバーのホスティングはどうすればいいですか？

stdio方式であれば**ホスティング不要**で、ローカルマシン上で動作します。リモートで使いたい場合は、Streamable HTTP方式で実装し、Cloudflare Workers、AWS Lambda、またはVPSにデプロイします。個人開発なら、まずはローカルのstdio方式で十分です。

### Q4. MCPサーバーのセキュリティリスクはどの程度ですか？

MCPサーバーが持つ権限次第で、リスクは大きく異なります。**読み取り専用のサーバー**（データの参照のみ）であればリスクは低いですが、**書き込み・削除権限を持つサーバー**の場合は、AIの誤判断によるデータ損失のリスクがあります。重要なのは「最小権限の原則」——必要最小限の権限だけを付与することです。

### Q5. TypeScript以外の言語でもMCPサーバーは作れますか？

はい。公式SDKは**TypeScript/JavaScript、Python、Java、C#、Go、Rust**で提供されています。Pythonは特にデータサイエンス系のMCPサーバーで人気があります。ただし、TypeScriptのSDKが最も充実しており、ドキュメントやサンプルコードも豊富なので、迷ったらTypeScriptを選んでください。

### Q6. MCPは将来廃れませんか？他のプロトコルに置き換わる可能性は？

2026年4月時点で、OpenAI、Google、Microsoftを含む**主要AIベンダーがすべてMCPをサポート**しており、事実上の業界標準となっています。APIの世界でREST APIが長年標準であり続けたように、MCPもAIツール連携の標準として定着する可能性が高いです。仮にプロトコルが進化しても、MCPの「AIと外部ツールを標準的に接続する」というコンセプト自体は変わらないでしょう。

### Q7. MCPサーバーの開発にどれくらいのコストがかかりますか？

MCP SDK自体は**完全無料・オープンソース**です。開発に必要なのはNode.js等のランタイムだけで、追加のライセンス費用はかかりません。コストが発生するのは、接続先の外部APIの利用料（Slack API、Google API等）です。ただし、多くのAPIには無料枠があり、個人開発レベルであれば**月$0〜$20程度**で運用できます。

## まとめ

MCPサーバーは、AIツールの可能性を**無限に拡張する**ための仕組みです。プロトコルの概念は複雑に聞こえるかもしれませんが、実際に作ってみると「ただの関数を定義して公開するだけ」であることがわかります。

この記事のポイントを整理します。

- MCPは「AIツールのUSB規格」——一度作れば、Claude Code・Cursor・VS Codeなど**どのAIクライアントからも使える**
- MCP SDKを使えば、**30行未満のコード**でMCPサーバーが作れる
- 個人開発者にとって最も実用的なユースケースは**DB操作・API連携・ナレッジベース**
- セキュリティでは「**最小権限の原則**」を徹底する
- まずは**公開MCPサーバーを使う**ところから始め、段階的に自作する
- MCPを活用すれば、個人開発の運営作業を**週8時間以上削減**できる

ShiftBでは、Claude Code・Cursorを使ったAI駆動開発の中で、MCPサーバーの構築も実践的にサポートしています。「自分のプロダクトにMCPを組み込みたい」「どのユースケースから始めればいいかわからない」という方は、まず無料相談会で現在の開発環境をお聞かせください。あなたに最適なMCP活用プランを一緒に設計します。
