🎄

Repo GraphRAG MCP Serverを試してみた

に公開2

これはなに?

Repo GraphRAG MCP ServerというOSSなMCP Serverをためしてみた
https://github.com/yumeiriowl/repo-graphrag-mcp

ただ試しただけだと、作者(?)と同じになってしまうので、local LLMで試してみた
https://zenn.dev/yumefuku/articles/repo-graphrag-mcp

流れ

  • 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

ゆめふくゆめふく

使っていただきありがとうございます!!

OPENAI_BASE_URL

なるほど、LM Studioのユースケースがありましたか...!(OPENAI_BASE_URL 対応しときます...)

まれにエラーになって何度かやり直したけど、結果的にllmのロードのタイミングとコンテキスト長の問題だったっぽいのでセーフ?

うーん、ローカルllm(LM Studio)では動作確認してなかったので確かなことは言えないですが、
並列数(.envのPARALLEL_NUM)に"3"がデフォルトで設定されています。
ローカルllmを使う場合、"1"に設定することで改善するかもしれません。

tomlのファイル

対応するドキュメント拡張子(.envのDOC_EXT_TEXT_FILES)はデフォルトでtxt,md,rstを設定しています。ここにtomlを追加することでtomlファイルも対象に出来ます。

makotanmakotan

わざわざありがとうございます。

LM StudioはLLMロードにちょっと時間がかかるときがあるので、それが理由かなと思ってます
並列数はQueueにいれられて順序処理していたので問題ないみたいです

DOC_EXT_TEXT_FILESに追加すれば良かったんですね。またやってみます