🚀 Emlog MCP Server
Emlog MCP Serverは、Model Context Protocol (MCP) に基づくEmlogブログシステムの統合サービスです。これにより、AIアシスタントは標準化されたインターフェースを通じてEmlogブログと対話することができます。
✨ 主な機能
リソース
- ブログ記事 (
emlog://articles) - すべてのブログ記事のリストを取得
- カテゴリ (
emlog://categories) - すべてのカテゴリ情報を取得
- コメント (
emlog://comments) - コメントリストを取得(最新記事に基づく)
- マイクロノート (
emlog://notes) - マイクロノートのリストを取得
- 下書き記事 (
emlog://drafts) - すべての下書き記事のリストを取得
- ユーザー情報 (
emlog://user) - 現在のユーザー情報を取得
ツール
- create_article - 新しいブログ記事を作成
- update_article - 既存のブログ記事を更新
- get_article - 特定の記事の詳細を取得
- search_articles - 記事を検索(キーワード、タグ、カテゴリフィルタリングをサポート)
- like_article - 記事をいいねする
- add_comment - コメントを追加
- get_comments - 特定の記事のコメントリストを取得
- create_note - マイクロノートを作成
- upload_file - ファイルをアップロード(画像やその他のメディアリソース)
- get_user_info - ユーザー情報を取得
- get_draft_list - 下書き記事のリストを取得
- get_draft_detail - 特定の下書きの詳細情報を取得
🔧 技術詳細
- TypeScript - 型安全なJavaScriptのスーパーセット
- Node.js - JavaScriptのランタイム環境
- MCP SDK - Model Context Protocol TypeScript SDK
- Axios - HTTPクライアントライブラリ
- Zod - TypeScriptを第一とするスキーマ検証ライブラリ
- form-data - マルチパートフォームデータの処理
📦 インストール
方法1: 直接使用(推奨)
emlog-mcp をClaude Desktopの設定で直接使用し、ローカルインストールは不要です。MCPクライアント設定 セクションに進んでください。
方法2: ローカル開発用インストール
1. プロジェクトをクローンする
git clone https://github.com/eraincc/emlog-mcp.git
cd emlog-mcp
2. 依存関係をインストールする
npm install
3. 環境変数の設定
サンプル設定ファイルをコピーして編集します。
cp .env.example .env
.env ファイルに以下の環境変数を設定します。
EMLOG_API_URL=https://your-emlog-site.com
EMLOG_API_KEY=your_api_key_here
APIキーの取得方法:
- Emlogのバックエンド管理システムにログインします。
- 「設定」→「APIインターフェース」に移動します。
- API機能を有効にし、APIキーを生成します。
- 生成されたキーを
.env ファイルにコピーします。
4. プロジェクトをビルドする
npm run build
5. サービスを起動する
npm start
または開発モードで起動する場合は、
npm run dev
📚 ドキュメント
MCPクライアント設定
Claude Desktop設定
Claude Desktopの設定ファイル(通常は ~/Library/Application Support/Claude/claude_desktop_config.json にあります)に追加します。
{
"mcpServers": {
"emlog": {
"command": "npx",
"args": ["emlog-mcp"],
"env": {
"EMLOG_API_URL": "https://your-emlog-site.com",
"EMLOG_API_KEY": "your_api_key_here"
}
}
}
}
注意: この設定では、公開されているnpmパッケージ emlog-mcp を直接使用します。ローカルインストールやコンパイルは不要で、npx が自動的に最新バージョンをダウンロードして実行します。
このプロジェクトには claude-desktop-config.json というサンプル設定ファイルも用意されていますので、参考にしてください。
その他のMCPクライアント
他のMCP対応クライアントの場合は、それぞれのドキュメントを参照してstdioトランスポートの設定を行ってください。
APIインターフェースドキュメント
このサービスはEmlogのREST APIをベースに構築されており、以下の主な操作をサポートしています。
記事管理
GET /api/article_list - 記事リストを取得
GET /api/article_view - 特定の記事の詳細を取得
POST /api/article_save - 記事を作成/更新
POST /api/article_like - 記事をいいねする
下書き管理
GET /api/draft_list - 下書きリストを取得
GET /api/draft_detail - 特定の下書きの詳細を取得
カテゴリ管理
GET /api/sort_list - カテゴリリストを取得
コメント管理
GET /api/comment_list - コメントリストを取得
POST /api/comment_save - コメントを投稿
マイクロノート
GET /api/note_list - マイクロノートのリストを取得
POST /api/note_save - マイクロノートを投稿
ファイルアップロード
POST /api/upload - ファイルをアップロード
ユーザー管理
GET /api/userinfo - ユーザー情報を取得
💻 使用例
ブログ記事の作成
{
"name": "create_article",
"arguments": {
"title": "My New Article",
"content": "This is the article content, supporting HTML and Markdown formats.",
"sort_id": 1,
"tag": "technology,programming,MCP",
"is_private": "n",
"allow_comment": "y"
}
}
記事の検索
{
"name": "search_articles",
"arguments": {
"keyword": "technology",
"page": 1,
"count": 10
}
}
記事リストの取得
{
"uri": "emlog://articles"
}
下書きリストの取得
{
"name": "get_draft_list",
"arguments": {
"count": 10
}
}
下書き詳細の取得
{
"name": "get_draft_detail",
"arguments": {
"id": 123
}
}
ファイルのアップロード
{
"name": "upload_file",
"arguments": {
"file_path": "/path/to/image.jpg"
}
}
マイクロノートの作成
{
"name": "create_note",
"arguments": {
"content": "This is a micro note",
"is_private": false
}
}
エラーハンドリング
このサービスには包括的なエラーハンドリングメカニズムが組み込まれています。
- ネットワークエラー - 自動リトライとタイムアウト処理
- APIエラー - 詳細なエラー情報を返す
- 認証エラー - APIキーの検証失敗の警告
- パラメータエラー - 入力パラメータの検証と警告
開発とデバッグ
利用可能なスクリプト
npm run build
npm start
npm run dev
npm run watch
npm test
ログ出力
サービスは実行時のステータス情報をstderrに出力し、デバッグに利用できます。
Emlog MCP server running on stdio
サービスのテスト
このプロジェクトには test-server.js という簡単なテストスクリプトが含まれており、サービスが正常に動作しているかを確認できます。
node test-server.js
セキュリティに関する考慮事項
- APIキーの保護 - APIキーが漏洩しないようにし、環境変数を使用して保存します。
- HTTPS接続 - 本番環境ではEmlog APIへのHTTPS接続を推奨します。
- 権限管理 - APIキーが適切な権限範囲を持っていることを確認します。
- 入力検証 - すべてのユーザー入力を検証し、サニタイズします。
トラブルシューティング
一般的な問題
接続失敗
EMLOG_API_URL が正しいか確認してください。
- Emlogサイトにアクセス可能か確認してください。
認証失敗
EMLOG_API_KEY が有効か確認してください。
- APIキーの権限を確認してください。
ツール呼び出し失敗
- エラーメッセージで具体的な理由を確認してください。
- パラメータの形式が正しいことを確認してください。
プロジェクト構造
emlog-mcp/
├── src/ # ソースコードディレクトリ
│ ├── index.ts # MCPサービスのメインエントリー
│ └── emlog-client.ts # Emlog APIクライアント
├── dist/ # コンパイル済みの出力ディレクトリ
├── docs/ # ドキュメントディレクトリ
│ └── api_doc.md # 詳細なEmlog APIドキュメント
├── .env.example # 環境変数のサンプルファイル
├── .gitignore # Gitの無視ファイル設定
├── claude-desktop-config.json # Claude Desktopの設定サンプル
├── test-server.js # テストスクリプト
├── package.json # プロジェクトの設定と依存関係
├── tsconfig.json # TypeScriptの設定
└── README.md # プロジェクトのドキュメント
コントリビューション
このプロジェクトを改善するためのIssuesとPull Requestsの投稿を歓迎します。コードを投稿する前に、以下のことを確認してください。
- コードがTypeScriptのコンパイルチェックに合格すること。
- プロジェクトのコードスタイルに沿っていること。
- 適切なエラーハンドリングが追加されていること。
- 関連するドキュメントが更新されていること。
📄 ライセンス
MIT License
関連リンク