🎄
Repo GraphRAG MCP Serverを試してみた
これはなに?
Repo GraphRAG MCP ServerというOSSなMCP Serverをためしてみた
ただ試しただけだと、作者(?)と同じになってしまうので、local LLMで試してみた
流れ
- READMEに従ってセットアップをする(順調すぎたので省略
- LM Studio を設定する
- 動かしてみる
LM Studio を設定する
LM Studio に openai/gpt-oss-20b をセットアップ
コンテキスト長を32kくらいまで引き上げて動作することを確認する
(動作しない場合はもっと小さいLLMに読み替えてください
動かしてみる
.envを変更した箇所だけ
GRAPH_CREATE_PROVIDER=openai
GRAPH_ANALYSIS_PROVIDER=openai
OPENAI_API_KEY=lm-studio
OPENAI_BASE_URL=http://localhost:1234/v1
GRAPH_CREATE_MODEL_NAME=openai/gpt-oss-20b
GRAPH_ANALYSIS_MODEL_NAME=openai/gpt-oss-20b
マニュアルにはOPENAI_BASE_URLが書いてなかったけどClaudeに調べてもらったらつかえるよ〜って言われたのでw
Claude code を実行
/mcp でちゃんと動作してることを確認する
新規作成コマンドを実行
graph: /Users/makotan/projects/ai/repo-graphrag-mcp rag 新規作成して
repo-graphrag-mcpのGraphRagをragディレクトリに作成依頼してます
まれにエラーになって何度かやり直したけど、結果的にllmのロードのタイミングとコンテキスト長の問題だったっぽいのでセーフ?
Queryコマンドを実行
graph: kotlinに対応させるにはどこを変えれば良い? rag
これがやりたかったんですw
Kotlinに対応させるには以下の箇所を変更します:
1. repo_graphrag/config/settings.py
code_ext_dict に Kotlin の拡張子を追加:
"kt": "Kotlin",
2. repo_graphrag/processors/code_processor.py
Tree-Sitter の Kotlin パーサを追加して、Kotlin ファイルを解析できるようにします。
3. repo_graphrag/utils/file_reader.py
code_ext_dict を参照しているため、上記の変更で自動的に Kotlin ファイルが認識されます。
主な変更点は settings.py:87 の code_ext_dict への追加と、code_processor.py での Tree-Sitter Kotlin パーサの設定です。
実際には328行目ですよ!
ってツッコミはあるモノの、ちゃんとコードを調べてくれた。
tomlのファイルは把握してないのはしかたないのかな〜とかあるものの、大まかに手で調べた範囲と同じだった
ところでなんで、Repo GraphRAG MCP Server ?
Tree-Sitter と GraphRag を組み合わせで持ってるのがめっちゃ少ないから
OSSないかなぁ〜って最近になって再びネットを徘徊してたら作ってる人を見つけた!
というのが理由
graph: tree-sitter はなんのために使われているの? rag
Tree-sitterは以下の目的で使われています:
1. ソースコードの構文解析JavaScript、Rust、TypeScript、Pythonなどのソースコードを解析して構文木(AST)を生成します(code_processor.py:process_file)
2. 行番号の取得構文ノードのバイト範囲を行番号に変換し、チャンクの位置情報(例: file:<name>_line:<start>-<end>)を生成します(node_line_range.py:get_node_line_range)
3. チャンク化とグラフ構築構文木から各ノードをチャンクとして切り出し、エンティティやリレーションを抽出して知識グラフを構築します
つまり、Tree-sitterはソースコードから自動的に知識グラフを構築するための基盤パーサとして機能しています。
Discussion
使っていただきありがとうございます!!
なるほど、LM Studioのユースケースがありましたか...!(OPENAI_BASE_URL 対応しときます...)
うーん、ローカルllm(LM Studio)では動作確認してなかったので確かなことは言えないですが、
並列数(.envのPARALLEL_NUM)に"3"がデフォルトで設定されています。
ローカルllmを使う場合、"1"に設定することで改善するかもしれません。
対応するドキュメント拡張子(.envのDOC_EXT_TEXT_FILES)はデフォルトでtxt,md,rstを設定しています。ここにtomlを追加することでtomlファイルも対象に出来ます。
わざわざありがとうございます。
LM StudioはLLMロードにちょっと時間がかかるときがあるので、それが理由かなと思ってます
並列数はQueueにいれられて順序処理していたので問題ないみたいです
DOC_EXT_TEXT_FILESに追加すれば良かったんですね。またやってみます