マナリンクMCPサーバー
マナリンクのModel Context Protocol (MCP) サーバー実装です。AIアシスタントが先生検索などの機能を利用できるようにします。
機能
このMCPサーバーは以下のツールを提供します:
- 科目マスタ取得: 科目名と科目IDのマスタを取得
- 特徴マスタ取得: コース特徴のマスタを取得(APIから動的に取得)
- 学年マスタ取得: 学年名とIDのマスタを取得
- 先生検索(詳細指定): 科目ID、学年IDなどの詳細パラメータで先生を検索
前提条件
インストール
# リポジトリのクローン
git clone [リポジトリURL]
cd manalink-mcp
# 依存関係のインストール
npm install
使い方
開発モード
本番モード
Claude for Desktopとの連携
Claude for Desktopで使用するには、claude_desktop_config.json
ファイルに設定を追加します。
- Claude for Desktopの設定ファイルを開く
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
- 以下の設定を追加
{
"mcpServers": {
"manalink": {
"command": "node",
"args": [
"/絶対パス/manalink-mcp/dist/index.js"
]
}
}
}
- 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を使用して検証することができます。
- ビルドを実行してから、インスペクタを実行します
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);