シンプルなMCPテキスト検索サーバーの実装から応用まで by Claude Code
2025年6月26日
結城浩の一言(このセクションのみ、結城が書きました)
-
ローカルで動作するMCPサーバの例としてテキスト検索サーバを作り、Claude Codeと接続して問い合わせを行う実験を行いました。
-
MCPサーバができた後、結城が書いた古今和歌集の日本語訳のファイル群をサーバにアクセスさせ、次のように指示しました。
「恋の歌で読み人知らずのものから、3首を選び、きれいに表示するHTMLファイルを作って」
- 次のような表示を行うHTMLファイルができました。HTMLの体裁の指示は行っていません。
- 「現代語訳」の部分はMCPサーバ経由で得た結城が書いたテキストそのままですが、その下の解説部分はClaude Codeが歌の情感を伝えるような短い解説として書いてくれたものです。結城は特に指示をしていません。
はじめに
今回のセッションでは、MCPテキスト検索サーバーの実装から始まり、動作確認、そして実際の文学コンテンツを活用した応用例の作成まで、MCPサーバー開発の全工程を通して作業を行いました。ローカルファイルの検索・閲覧機能を持つMCPサーバーの完全な開発サイクルを体験することができました。
参考リンク
- MCP Text Search Server by Claude Code - 結城浩のメモ - 技術詳細
- MCP (Model Context Protocol) SDK - 実装に使用したTypeScript SDK
今回達成したこと・主な成果
MCPサーバー実装段階
- TypeScript実装: @modelcontextprotocol/sdkを使用したMCPサーバーの完全実装
- 3つの主要機能: list_files、search_text、read_fileの機能実装
- セキュリティ: 指定ディレクトリ外へのアクセス制限機能
- ビルドシステム: TypeScriptからJavaScriptへのコンパイル環境構築
動作確認・テスト段階
- Claude Code統合: MCPサーバーをClaude Codeに正常に登録
- プロセス確認: 独立したNode.jsプロセスとしての動作確認(PID: 91883)
- 機能テスト: 83個のテストファイル(古今和歌集コレクション)での全機能検証
応用実装段階
- 自然言語検索: 「恋の歌はいくつ?」という質問からの自動検索実行
- 複合検索: 「恋」かつ「読人しらず」の条件での絞り込み検索(21首特定)
- コンテンツ生成: 選抜した3首を美しく表示するHTMLファイル(yominshirazu-koi.html)の生成
セッションの主な流れとAIの貢献
実装フェーズ
結城浩さんからMCPテキスト検索サーバーの実装要請を受け、まずTypeScriptでの基本設計を提案しました。@modelcontextprotocol/sdkを活用し、stdio通信による安全なファイルアクセス機能を実装しました。特にセキュリティ面では、指定ディレクトリ外への不正アクセスを防ぐ仕組みを組み込みました。
統合・テストフェーズ
実装完了後、Claude CodeへのMCP統合手順を案内し、実際の動作確認を行いました。この段階で、MCPサーバーが独立プロセスとして動作することや、Claude Codeとのstdio通信による連携の仕組みを確認することができました。
応用・活用フェーズ
「MCPサーバーは自律的に使ってくれるのか?」という結城浩さんの質問に対し、実際に自然言語での問い合わせを通してMCPサーバーが自動選択される様子を実演しました。検索から読み込み、HTMLファイル生成までの一連のワークフローを通して、MCPサーバーの実用的な価値を示すことができました。
今後の拡張
機能拡張
- 全文検索インデックスの構築による高速化
- ファイル内容の統計分析機能(単語頻度、文字数など)
- バイナリファイル対応(画像、PDF等)
- 複数ディレクトリの同時検索機能
応用展開
- 他の文学作品コレクションへの適用
- 学術論文・技術文書の検索システム
- プログラムコードの横断検索ツール
- 個人ナレッジベースの構築
おわりに
MCPサーバーの実装から活用まで、一緒に完全なサイクルを体験できて充実したセッションでした。また新しい技術で面白いものを作りましょうね。
古今和歌集を読む
(2025年6月26日)