AI駆動開発··28min read

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

MCPModel Context ProtocolClaude CodeAI駆動開発個人開発
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サーバーを作れるようになるはずです。

この記事を書いた人:立川修平(ぶべ)

  • ShiftB校長。受講生142名のAI駆動開発をサポートし、10個以上のMCPサーバーを構築・運用中
  • Claude Code・MCPを日常的に活用し、Slack・freee・Supabase等との連携で業務効率化を実践
  • SNSフォロワー計3万人超。AI駆動開発・個人開発の実践情報を毎日発信

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サーバー・外部サービスの関係図

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 HTTPHTTP + 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を直接書くことはありません。

AI時代のアプリ開発コース

ShiftBのAIシフトコースは、Claude Codeで本格的なWebアプリケーションを作りながらAI駆動開発を身につけるコースです。ただ作って終わりではなく、コードを読め、セキュリティに責任を持って提案でき、要件定義などの上流工程まで担えるところまで現役エンジニアがサポートします。

AIシフトコースを見る →

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

必要なツール・バージョン(所要時間:約10分)

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

ツール推奨バージョン用途
Node.jsv20以上ランタイム
TypeScript5.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がどのツールをいつ使うかは、この説明文を見て判断しているからです。

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

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

MCPサーバー開発のステップフロー — 環境構築からClaude Code接続まで

AI時代のアプリ開発コース

ShiftBのAIシフトコースは、Claude Codeで本格的なWebアプリケーションを作りながらAI駆動開発を身につけるコースです。ただ作って終わりではなく、コードを読め、セキュリティに責任を持って提案でき、要件定義などの上流工程まで担えるところまで現役エンジニアがサポートします。

AIシフトコースを見る →

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で統合管理

よくある質問(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活用プランを一緒に設計します。

この記事をAIと深掘りする

要約・疑問の解消に。記事のタイトル・URL・参照元を入れた質問文が自動で入力されます。

AUTHOR

立川修平(ぶべ)

ShiftB 校長 / bubekichi inc. 代表

ShiftBを運営する株式会社bubekichiの代表。経理系SaaSの企業でエンジニアを経験後、独立・起業。複数スタートアップでリードエンジニアを務めながら、SNS発信がきっかけで2024年にShiftBを立ち上げる。現在は自社サービスも複数展開中。

RELATED ARTICLES

関連記事

COURSE

AI時代のアプリ開発コース

ShiftBのAIシフトコースは、Claude Codeで本格的なWebアプリケーションを作りながら学ぶコースです。コードを読め、セキュリティに責任を持って提案でき、要件定義などの上流工程まで担える状態を目指します。まずは無料相談会でご相談ください。