Claude Code は賢い。けれど、箱から出したままでは「あなたの会社のSlack」も「あなたのNotion」も「あなたの売上データベース」も見えていない。これはClaudeの限界ではなく、単に配管がまだ通っていないだけだ。

その配管にあたるのが MCP(Model Context Protocol)、Anthropic が提唱するオープンな接続規格である。ひとことで言えば、『AIと外部データソースをつなぐ、標準化された差し込み口』。USB-C のコネクタを思い浮かべてほしい。一度形が決まれば、どのメーカーの機器でも同じケーブルで繋がる——あれのAI版だ。

ある個人開発者は、自分のSlackワークスペースを読むMCPサーバー(= 差し込み口の実体となる小さなプログラム)をわずか1日で書き上げた。翌日からは、Claude Code に向かって「先週 #dev チャンネルでリリースについて議論してた内容を要約して」と話しかけるだけで、過去ログを検索・引用してくれる環境が手に入った。ChatGPT の Plugin 時代と違い、MCP は標準化されているので、同じサーバーが Claude Desktop でもそのまま動く。しかも awesome-claude-code リポジトリには、すでに 100以上 の公開MCPサーバーが並んでいる。ゼロから書く必要すらない場面も多い。

この記事では、非エンジニアでも配管を引けるよう、MCPサーバー自作を6つのレイヤーに分解する。

全体像: 6レイヤーで捉える

MCPサーバー自作の6レイヤー全体像

図: MCPサーバー自作の6レイヤー全体像

  1. Transport(= 通信経路): stdio か HTTP か
  2. SDK(= 公式の道具箱): TypeScript or Python
  3. Tool定義(= Claudeに渡す『できること』リスト)
  4. データソース接続(= Slack / Notion / DB への実配線)
  5. Claude Code 側の登録(= 配管を家に繋ぐ工事)
  6. デバッグと検品(= 水漏れチェック)

順に見ていく。


レイヤー1: Transport を選ぶ

MCPサーバーとClaudeは『何らかの通信路』で会話する。選択肢は2つ。

  • stdio transport(= 標準入出力での通信): ローカルで動かす場合の定番。Claudeがサーバーをサブプロセスとして起動し、パイプ越しに話す。設定が一番シンプル。
  • HTTP transport(= Webサーバー型): リモートに置いて複数人・複数マシンから共有したい場合。認証やネットワーク設計が要る分、手間は増える。

比喩で言えば、stdio は『自宅のキッチンに直結した蛇口』、HTTP は『ビル全体に配水する給水塔』だ。ひとりで使うなら、まず stdio で十分。


レイヤー2: SDK を選ぶ

Anthropic は TypeScript SDKPython SDK を公式に提供している。どちらを選んでも機能差はほとんどない。

  • 普段 Node.js を触っているなら TypeScript
  • データ分析や社内ツールが Python 中心なら Python

迷ったら TypeScript を推す。Claude Code 本体との親和性が高く、型が効くのでLLMに書かせた時のエラーが減る。

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({ name: "my-slack", version: "0.1.0" });
// ... tool 定義 ...
await server.connect(new StdioServerTransport());

読めなくても大丈夫。要点はこうです: 『my-slack という名前のサーバーを一台立てて、標準入出力で話せる状態にする』——これだけのコードで、もうMCPサーバーの器は完成している。


レイヤー3: Tool 定義 = Claudeに渡す名刺

1つのMCPサーバーは、複数のツールを同時に提供できる。ツールとは、Claudeから呼び出せる関数のことだ。

例えば Slack 用サーバーなら:

  • search_messages(query) — メッセージ検索
  • get_channel_history(channel) — チャンネル履歴取得
  • post_message(channel, text) — 投稿

それぞれに『名前・説明文・入力スキーマ(= 引数の型)』を書いて登録する。この説明文がとても大事で、Claudeはここを読んで『いつ・どう呼ぶか』を判断する。新入社員に渡す名刺と業務マニュアルだと思えばいい。曖昧に書けば曖昧に呼ばれる。


レイヤー4: データソース接続

ここが一番『あなた固有』の部分だ。

  • Slack なら Bot Token を発行して Web API を叩く
  • Notion なら Integration を作って Notion API を叩く
  • 社内DB なら読み取り専用ユーザーを作って SQL を投げる

ポイントは読み取り専用から始めること。最初から書き込み権限を渡すと、Claudeの提案が即座に本番データに反映されてしまう。新入社員に初日から決裁権を渡さないのと同じ発想だ。

検品なし運用 vs 検品あり運用の事故率比較

図: 検品なし運用 vs 検品あり運用の事故率比較


レイヤー5: Claude Code に登録する

サーバー本体ができたら、Claude Code の設定ファイル(~/.claude/settings.json 等)に差し込み口として登録する。stdio なら『このコマンドで起動して』と書くだけ。

{
  "mcpServers": {
    "my-slack": {
      "command": "node",
      "args": ["/path/to/my-slack/dist/index.js"],
      "env": { "SLACK_BOT_TOKEN": "xoxb-..." }
    }
  }
}

読めなくても大丈夫。要点はこうです: 『my-slack というあだ名のサーバーを、このコマンドで起動して、トークンはこの環境変数で渡してね』と Claude Code に教えているだけ。登録が終わると、Claude Code を再起動した瞬間から、チャット欄で自然言語で呼び出せるようになる。

自然言語→Tool選択→データソース→回答生成までの時系列

図: 自然言語→Tool選択→データソース→回答生成までの時系列


レイヤー6: デバッグと検品

MCPサーバー開発でハマりがちな3点:

  1. 起動時のエラーが見えない — stdio は標準出力をプロトコルに使うので、console.log を書くと通信が壊れる。ログは必ず stderr か別ファイルへ。
  2. Tool の説明文が弱い — Claudeがツールを呼ばない/間違えて呼ぶ時は、たいてい description 不足。
  3. トークンの権限過多 — 最初は read scope のみで発行する。

この検品ゲート(= 本番に流す前の最終チェック)を通してから、はじめて日常のワークフローに組み込む。


awesome-claude-code という近道

自作の前に、まず awesome-claude-code リポジトリを覗いてほしい。Slack / Notion / GitHub / Linear / Postgres / Figma など、100以上のMCPサーバーがすでに公開されている。多くは npxuvx 一発で試せる。『自作する前に、動くものをそのまま借りてくる』というのは、個人運営者にとって最速の選択肢だ。

公開サーバーを起点に、足りない機能だけ追加でフォークして書く。これが現実的なルートになる。


エンジニアじゃない方へのメッセージ

ここまで読んで『やっぱり自分には無理そう』と感じたかもしれない。けれど、実際に必要な作業量は驚くほど少ない。

  • レイヤー1〜3 はテンプレートをコピーするだけで済む
  • レイヤー4 は『Slackのトークンを取る』『Notionの連携を作る』というクリック作業が主
  • レイヤー5 は設定ファイルを1箇所書き換えるだけ
  • レイヤー6 はClaude Code 自身にデバッグさせられる

つまり、あなたの仕事は『どのデータを Claude に見せたいか』を決めることだけだ。配管を曲げる技術そのものは、テンプレートとClaude Code が肩代わりしてくれる。『個人事業の立ち上げで技術的ハードルに怯んでいる』人ほど、MCP は味方になる。自分の業務データを Claude に預けられた瞬間から、ひとり会社の生産性は階段を一段上がる。


🎁 特典: 設定ファイル一式ダウンロード

本記事の内容をそのまま試せるスターターキットを配布する。解凍して、あなたのメディアテーマ・業務データに合わせて書き換えるだけで、今日からMCPサーバーを動かせる。

zipの中身:

  • mcp-server-template-ts/ — TypeScript版 最小MCPサーバーテンプレート(stdio対応・Tool2つサンプル入り)
  • mcp-server-template-py/ — Python版 最小MCPサーバーテンプレート
  • claude-code-settings.sample.json — Claude Code 登録用サンプル設定
  • debug-tips.md — stderr ログ設定・権限スコープ・よくあるハマり所チェックリスト
  • slack-integration-walkthrough.md — Slack Bot Token 取得から read-only 接続まで

『解凍して、あなたのメディアテーマに合わせて書き換えるだけ』で動くように組んである。

👉 ダウンロードする


📚 参考リファレンス

  • Model Context Protocol 公式ドキュメント
  • Anthropic MCP TypeScript SDK
  • Anthropic MCP Python SDK
  • awesome-claude-code(公開MCPサーバー100+)
  • Claude Code 公式ベストプラクティス