nabchan-mcp-server

nabchan-mcp-server

3.2

If you are the rightful owner of nabchan-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

nabchan-mcp-server is an experimental project that provides an MCP server for returning information based on Nablarch documentation.

nabchan-mcp-server

[!WARNING] これは実験的なプロジェクトであり、改善の余地が大いにあります。

概要

Nablarchの解説書をもとにしてNablarchの情報を返すMCPサーバーです。

Getting started

Dockerを使って簡単に試せます。

graph LR
  a[VSCode]
  b[nabchan-mcp-server<br>(Dockerコンテナ)]
  a -->|標準入出力で通信| b

VSCodeへ次の設定を追加してください。

{
  "mcp": {
    "inputs": [],
    "servers": {
      "nablarch-document": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "--network",
          "none",
          "-e",
          "TRANSPORT=stdio",
          "ghcr.io/backpaper0/nabchan-mcp-server",
        ]
      }
    }
  }
}

GitHub Copilot ChatをAgentモードにしてNablarchに関する質問をしてみてください。

ToolHive経由で実行する

ToolHive経由で実行する場合は次のコマンドを実行してください。

thv run --name nabchan-mcp-server ghcr.io/backpaper0/nabchan-mcp-server -- --transport=stdio

アーキテクチャ

ローカルのPythonだけで動作するような構成を取っています。

DuckDBの全文検索拡張(Full-Text Search Extension)とLinderaという形態素解析ライブラリを使ってインデックスを構築しています。 解説書のHTMLから抽出したテキストを形態素解析したものが全文検索の対象フィールドとなります。 それ以外にもタイトル、概要、内容をmarkdown形式に変換したもの、をもっており、それらはMCPサーバーが提供するAPIで利用されます。

graph TD
   h[Nablarchの解説書<br>(HTMLファイル)]
   c(テキスト)
   d(概要)
   t(タイトル)
   m(markdown)
   i[DuckDB]

   h -->|BeautifulSoupで<br>テキスト抽出| c
   c -->|Linderaで形態素解析| i
   c -->|LLMで要約| d
   d --> i
   h -->|BeautifulSoupで<br>タイトル抽出|t
   t --> i
   h -->|html2textで<br>markdown化| m
   m --> i

MCPサーバーが提供しているAPIは次の通りです。

  • read_document
    • URLが示すNablarchのドキュメントをmarkdown形式へ変換したものを返します。
  • search_document
    • Nablarchのドキュメントを検索します。返される情報は次の通り
      • タイトル
      • URL
      • 概要

nabchan-mcp-server開発者向けの情報

開発に必要な環境

  • Python 3.11
  • uv
  • Git
  • Docker

インデックスの構築

uv run -m tools.build_index

[!NOTE] サブモジュールの中身を取得していない場合、git submodule initgit submodule updateを実行してください。

検索を試す
uv run -m tools.search_document -q "Nablarch"

開発時のVSCode設定例

/path/to/nabchan-mcp-serverは実際のパスに置き換えてください。

{
  "mcp": {
    "inputs": [],
    "servers": {
      "nablarch-document": {
        "command": "uv",
        "args": [
          "--directory",
          "/path/to/nabchan-mcp-server",
          "run",
          "-m",
          "nabchan_mcp_server.main",
        ]
      }
    }
  }
}

トランスポートタイプにSSEを使う場合はこちら。

{
  "mcp": {
    "inputs": [],
    "servers": {
      "nablarch-document": {
        "type": "sse",
        "url": "http://localhost:8000/sse"
      }
    }
  }
}

SSEを使う場合は次のコマンドであらかじめサーバーを起動しておく必要があります。

uv run -m nabchan_mcp_server.main --transport sse --host localhost