



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒MCPサーバーって自分で作れるんですか?Claude Codeに自分のツールをつなげたいんですけど…
ペン博士MCPはAnthropicが公開したオープンなプロトコルで、SDKを使えば自分でサーバーを作ってAIにツールを追加できるんだ。一緒に最小構成を作ってみよう!
MCP(Model Context Protocol)は、AIアシスタントに外部ツールやデータソースを接続するためのオープン規格です。Anthropicが2024年に公開し、Claude CodeやClaude Desktopをはじめ、多くのAIクライアントが対応しています。
この記事では、MCPサーバーを自作する意義から始めて、Node.js SDKを使った最小構成のサーバー作成・Claude Codeとは?でも紹介しているClaude Codeへの登録・ツール実装例・動作確認まで、実際のコードを交えながら解説します。仕様は流動的なので、最新の情報はMCP公式ドキュメントで必ず確認してください。

MCPを一言でいえばAIと外部ツールの間のUSBのような規格です。AIクライアント(例:Claude Code)が「ツールを呼び出したい」と思ったとき、MCPサーバーがその橋渡しをします。
| 登場人物 | 役割 |
|---|---|
| AIクライアント | Claude Code等。ツールを呼び出す側 |
| MCPサーバー | 自作する部分。ツールを実装して公開する |
| 外部ツール・API | ファイル操作・DB・Slack API等。サーバーが呼ぶ先 |
既存の公開MCPサーバー(ファイル操作・ブラウザ操作など)でカバーできない自社固有のAPIや社内ツールと連携したいときに、自作が必要になります。たとえば「社内の案件管理DBをClaudeから参照したい」「独自APIを叩いてデータを返したい」といったケースです。
Claude CodeのMCPとは?では既存サーバーの使い方を詳しく解説しています。この記事は自作に踏み込んだ実践編です。

Node.js版SDKを使います。Node.js 18以上が必要です。バージョンを確認してから始めましょう。
# Node.jsのバージョン確認(18以上が必要)
node -v
# 作業ディレクトリを作って移動
mkdir my-mcp-server
cd my-mcp-server
# package.json を初期化
npm init -y
# MCP Node.js SDK をインストール
npm install @modelcontextprotocol/sdkSDKのバージョンや正確なパッケージ名は変わることがあります。最新はGitHub上のSDKリポジトリで確認してください。
ESModules形式で書くため、package.json に "type": "module" を追記します。
{
"name": "my-mcp-server",
"version": "1.0.0",
"type": "module",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.0.0"
}
}バージョン番号はインストール時に決まった番号に合わせてください。

ツールを1つだけ持つ最小構成のサーバーを作ります。今回は「今の日時を返す」シンプルなツールを実装します。
// server.js
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-mcp-server',
version: '1.0.0',
});
// ツールを登録:get_current_time
server.tool(
'get_current_time', // ツール名
'現在の日時を日本時間で返す', // 説明(AIが判断に使う)
{}, // 入力スキーマ(今回は引数なし)
async () => {
const now = new Date().toLocaleString('ja-JP', {
timeZone: 'Asia/Tokyo',
});
return {
content: [{ type: 'text', text: `現在の日時(JST): ${now}` }],
};
},
);
// stdio で起動(Claude Code から呼び出し可能になる)
const transport = new StdioServerTransport();
await server.connect(transport);SDKの具体的なクラス名・メソッド名はバージョンによって変わる可能性があります。上記はあくまで構造を理解するための雛形として参照し、実装時は最新のSDK公式ドキュメントとサンプルコードを確認してください。
引数ありのツールも同じパターンで作れます。zodでスキーマを定義して入力を検証するのが標準的な書き方です。
// 文字列を大文字に変換するツール(引数ありの例)
server.tool(
'to_uppercase',
'指定したテキストを大文字に変換して返す',
{
text: z.string().describe('大文字にしたいテキスト'),
},
async ({ text }) => {
return {
content: [{ type: 'text', text: text.toUpperCase() }],
};
},
);zodの型定義(z.string()・z.number()など)と .describe() で書いた説明が、AIがツールを正しく呼ぶためのヒントになります。引数の説明は丁寧に書きましょう。

作ったサーバーをClaude Codeから使えるようにするには、設定ファイルにサーバーの起動コマンドを登録します。
{
"mcpServers": {
"my-mcp-server": {
"command": "node",
"args": ["/絶対パスで指定/my-mcp-server/server.js"],
"env": {}
}
}
}パスは必ず絶対パスで書いてください。相対パスだと動かないことがあります。環境変数(APIキーなど)が必要な場合は env オブジェクトに記述します。設定ファイルの正確な場所や形式は最新の公式ドキュメントで確認してください。
# 設定ファイルの場所を確認するコマンド(Claude Code CLIの場合)
claude mcp listMCP Inspectorを使うと、サーバーをブラウザから視覚的にテストできます。Claude Codeなしでツールの動作を確認できるので、開発中のデバッグに便利です。
# MCP Inspector でサーバーをテスト
npx @modelcontextprotocol/inspector node server.jsコマンドを実行するとブラウザが開き、登録したツール一覧・引数入力欄・実行ボタンが表示されます。「get_current_time」を実行して日時が返ってきたら成功です。
Claude Codeを経由して確認したい場合は、設定登録後にClaude Codeのチャットで「get_current_timeを使って今の時刻を教えて」と聞いてみてください。サーバーが正しく動いていれば日時が返ってきます。

MCPサーバー自作でつまずきやすいポイントをまとめます。
| 症状 | 原因の可能性 | 対処法 |
|---|---|---|
| サーバーが認識されない | パスが相対パスになっている | 設定ファイルのパスを絶対パスに直す |
| ツールが呼ばれない | ツール名や説明が不明瞭 | 説明文をより具体的に書き直す |
| 起動時にエラーが出る | Node.jsのバージョンが古い | node -v で確認して18以上にアップ |
| import文でエラー | package.jsonにtype:moduleがない | “type”: “module” を追記 |
| SDKのAPIが合わない | SDKバージョンの違い | 最新SDKドキュメントと公式サンプルを確認 |
仕様は現在も活発に更新されています。エラーが出たらまず公式ドキュメントとGitHub Issuesを確認するのが解決への近道です。ネットの記事は情報が古い場合があります。
MCPサーバーの自作は、AIに「自分だけのツール」を追加できる強力な手段です。最小構成は「SDKインストール → server.jsを書く → 設定ファイルに登録」の3ステップで動かせます。最初はシンプルなツールから始めて、慣れてきたら外部APIや社内ツールとの連携に発展させていきましょう。
・MCPとは:AIと外部ツールをつなぐオープンプロトコル。サーバーを自作して好きなツールを追加できる
・最小構成:SDK インストール → server.js でツールを登録 → stdio で起動
・Claude Codeへの登録:.claude/settings.json の mcpServers に絶対パスで記述
・注意点:仕様は流動的。エラーが出たら最新の公式ドキュメントを確認する
MCPでAIの可能性を広げながら、その土台となるJavaScript・APIの仕組みはWithCodeで体系的に身につけていきましょう。
A. Model Context Protocolの略で、ClaudeなどのAIと外部ツールやデータを標準化した方法で接続する仕組みです。
A. 必要です。PythonやTypeScriptのSDKを使ってサーバーを実装するのが一般的です。
A. 社内データベースやAPI、ファイルなどをAIから安全に呼び出す連携に活用できます。

副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?
未経験でも心配することはありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!
WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。
公式サイト より
今すぐ
無料カウンセリング
を予約!