Manalink MCP Server

マナリンクMCPサーバー

マナリンクのModel Context Protocol (MCP) サーバー実装です。AIアシスタントが先生検索などの機能を利用できるようにします。

機能

このMCPサーバーは以下のツールを提供します:

  1. 科目マスタ取得: 科目名と科目IDのマスタを取得
  2. 特徴マスタ取得: コース特徴のマスタを取得(APIから動的に取得)
  3. 学年マスタ取得: 学年名とIDのマスタを取得
  4. 先生検索(詳細指定): 科目ID、学年IDなどの詳細パラメータで先生を検索

前提条件

  • Node.js 18+
  • npm または yarn

インストール

# リポジトリのクローン git clone [リポジトリURL] cd manalink-mcp # 依存関係のインストール npm install

使い方

開発モード

npm run dev

本番モード

npm run build npm start

Claude for Desktopとの連携

Claude for Desktopで使用するには、claude_desktop_config.json ファイルに設定を追加します。

  1. Claude for Desktopの設定ファイルを開く
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 以下の設定を追加
{ "mcpServers": { "manalink": { "command": "node", "args": [ "/絶対パス/manalink-mcp/dist/index.js" ] } } }
  1. Claude for Desktopを再起動

MCP ツール

1. 科目マスタ取得

// ツール名: get_subject_master // パラメータ: なし

2. 特徴マスタ取得

// ツール名: get_course_features // パラメータ: なし

3. 学年マスタ取得

// ツール名: get_grade_master // パラメータ: なし

4. 先生検索 (詳細指定)

// ツール名: search_teachers_advanced // パラメータ: // - subject_ids: 科目IDの配列(オプション) // - grade_ids: 学年IDの配列(オプション) // - course_feature_id: 特徴ID(オプション) // - sort: ソート順(オプション)[pr, certification, rating, lesson_count, latest] // - desired_teaching_period: 指導期間(オプション)[monthly, once]

検証方法

MCP Inspectorを使用して検証することができます。

  1. ビルドを実行してから、インスペクタを実行します
npm run build npx @modelcontextprotocol/inspector node dist/index.js

ライセンス

MIT

HTMLからMarkdownへの変換機能

マナリンクから取得したHTMLコンテンツをマークダウン形式に変換する機能を実装しています。

インストール方法

npm install node-html-markdown

使用方法

import { convertHtmlToMarkdown } from './utils/api'; // HTMLからMarkdownへの変換 const html = ` <div> <h1>マナリンク</h1> <p>オンライン家庭教師プラットフォーム</p> <ul> <li><a href="/about">サービスについて</a></li> <li><a href="/teachers">先生を探す</a></li> </ul> </div> `; const markdown = convertHtmlToMarkdown(html); console.log(markdown);

変換結果

上記のHTMLからは以下のようなマークダウンが生成されます:

# マナリンク オンライン家庭教師プラットフォーム * [サービスについて](/about) * [先生を探す](/teachers)

先生検索結果のマークダウン変換

先生検索APIでは、検索結果をHTML形式とMarkdown形式の両方で取得できます:

import { searchTeachers } from './utils/api'; // 数学の中学生を教えられる先生を検索 const result = await searchTeachers({ subject_ids: [2], // 数学 grade_ids: [4], // 中学1年生 sort: 'rating' }); // HTML形式の検索結果 console.log(result.bodyContent); // Markdown形式の検索結果 console.log(result.markdown);
ID: p018mako41