Claude Code MCPサーバー実装で独自ツールを5分で統合する方法¶
この記事の対象者
- Claude Codeで独自ツールを統合したい中級エンジニア
この記事のポイント¶
- MCPサーバーをローカルで起動
- Claude Codeから独自ツールを呼び出し
- 既存ワークフローへのツール組み込み
なぜこの問題が今重要か¶
Claude Code 2.0以降でMCP(Model Context Protocol)対応により、外部ツールとの統合が標準化されました。しかし公式ドキュメントには具体的な実装手順が少なく、多くの開発者が統合に苦労しています。本記事では最小構成で動作するMCPサーバーの実装方法を提示します。
解決ステップ概要¶
| ステップ | 内容 | 到達指標 |
|---|---|---|
| 1 | MCPサーバー実装 | サーバー起動確認 |
| 2 | Claude設定追加 | ツール認識確認 |
| 3 | 動作検証 | ツール実行成功 |
ステップ1: 最小MCPサーバーを実装¶
TypeScriptで最小のMCPサーバーを実装します。@modelcontextprotocol/sdkを使用して10行で動作するサーバーを構築できます。
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server({
name: 'my-tool',
version: '1.0.0',
}, { capabilities: { tools: {} } });
server.setRequestHandler('tools/list', async () => ({
tools: [{
name: 'echo',
description: 'Echo input text',
inputSchema: { type: 'object', properties: { text: { type: 'string' } } }
}]
}));
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
if (name === 'echo') return { content: [{ type: 'text', text: `Echo: ${args.text}` }] };
});
await server.connect(new StdioServerTransport());
ステップ2: Claude設定ファイルを更新¶
~/.claude/claude_desktop_config.jsonにMCPサーバーを登録します。この設定でClaude Codeがサーバーを自動起動します。
{
"mcpServers": {
"my-tool": {
"command": "node",
"args": ["/path/to/mcp-server.js"],
"env": {}
}
}
}
ステップ3: Claude Codeから実行確認¶
Claude Codeを再起動後、新しいツールが利用可能になります。プロンプトで/toolsと入力するとechoツールが表示されます。
# 動作確認コマンド
echo "test" | claude code --tool echo
よくある落とし穴と対処¶
| 症状 | 原因 | 即時対処 |
|---|---|---|
| ツールが表示されない | 設定ファイルパス誤り | 絶対パスで指定 |
| サーバー起動エラー | Node.js未インストール | v20以上をインストール |
| 接続タイムアウト | ポート競合 | StdioTransport使用 |