概要
マークダウンで書いたドキュメントの検索MCPサーバーを簡単に構築できるようになりました!
背景
AIエージェントからプロダクトのドキュメントへアクセスしやすいように調整するため、MCPサーバーを導入することを検討していました。
ドキュメントはなるべくマークダウンで書くようにしていたこともあり、VitePressをよく使っていました。
VitePressにはminiSearchを利用した検索機能が搭載されており、全文検索でドキュメントを探すことが可能でした。
こちらの機能をMCPサーバーに提供することはできないかと思い、このプラグインを作成しました。
VitePressとは?
VitePressはマークダウンで書かれたドキュメントをお手軽にリッチドキュメントに変換してくれるライブラリです。
様々な便利なオプションが提供されており、導入しているOSSは多数あります。
導入している有名なOSS
使い方
- VitePressをセットアップ
-
vite-plugin-vitepress-mcp
をインストール
pnpm add vite-plugin-vitepress-mcp
- セットアップで作成された
.vitepress/config.<ts|mts>
に以下設定を追加
//.vitepress/config.mts
import { defineConfig } from "vitepress";
import { MCPPlugin } from "vite-plugin-vitepress-mcp";
export default defineConfig({
title: "VitePress MCP Server",
description: "Vitepress Search MCP",
themeConfig: {
search: {
provider: "local",
options: {}, //追加。ブランクでもカスタムしてもOK
},
...
},
vite: {
plugins: [MCPPlugin({ port: 4000 })], //追加
},
portは自由に設定できます。
この設定を追加し、VitePressを起動するとMCPサーバーも同時に起動します。
SSE? StreamableHTTP?
VitePress MCPは当初SSEでの実装を検討していましたが、今後MCPサーバーのスタンダードとなると言われているStreamable HTTPで実装することにしました。
まだ情報が少なかったり、公式ドキュメントの実装通りだとエラーになるなどのトラブルはありましたが、StreamableHTTPで実装している方のソースから学び、開発を進めていきました。
提供ツール
現在はドキュメントを検索するsearch_vitepress_docs
のみ実装しています。
起動時、ホットリロードでインデックスを再生成しているため編集した内容はMCPサーバーですぐに検索できます。
バグレポート
お気づきの点がありましたらGithubのIssueまでお願いします。
利用ライブラリ
- MCP TypeScript SDK
- miniSearch
- Vite
- express