Verge MCP Server
Provides 14 tools for managing VergeCMS blogs and content, including authentication, CRUD operations for blogs, and full article management with publishing, search, and filtering capabilities.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Verge MCP Servercreate a new blog post about AI trends for 2025"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Verge MCP Server
Model Context Protocol (MCP) server for VergeCMS - ChatGPT/ClaudeなどのAIアシスタントから直接ブログを管理
📋 概要
Verge MCP Serverは、VergeCMSをModel Context Protocol (MCP)サーバーとして実装したものです。Claude DesktopやChatGPTなどのAIアシスタントから、ブログの作成・管理、記事の作成・編集・公開を自然言語で行うことができます。
なぜこれが重要か?
AIアシスタントから直接CMS操作: 自然言語でブログや記事を管理
14の強力なツール: 認証、ブログ管理、記事管理の完全なCRUD操作
3ステップ自動認証: ブラウザ起動→ユーザー承認→トークン永続化
型安全なAPI: TypeScript + Zodによる完全な型チェックとバリデーション
TDD開発: 155のテストによる品質保証
✨ 主な機能
ツール構成(14ツール)
認証ツール(3個)
verge_login- ブラウザ自動起動による認証フローverge_get_current_user- 現在のユーザー情報取得verge_update_user- ユーザー情報更新
ブログ管理ツール(5個)
verge_list_blogs- ブログ一覧取得verge_get_blog- ブログ詳細取得verge_create_blog- ブログ作成verge_update_blog- ブログ更新verge_delete_blog- ブログ削除
記事管理ツール(6個)
verge_list_articles- 記事一覧取得(検索・フィルタリング可能)verge_get_article- 記事詳細取得verge_create_article- 記事作成verge_update_article- 記事更新verge_publish_article- 記事公開verge_delete_article- 記事削除
その他の特徴
自動認証フロー: ブラウザが自動起動し、認証後トークンを安全に保存
Zodバリデーション: すべてのAPI入出力を型安全に検証
エラーハンドリング: 詳細なエラー情報とリトライ機能
エクスポネンシャルバックオフ: ネットワークエラー時の賢いリトライ戦略
🚀 クイックスタート
前提条件
Node.js >= 18.0.0
VergeCMS アカウント (tomohirof/verge-cms)
MCPクライアント (Claude Desktop、ChatGPTなど)
インストール
# リポジトリのクローン
git clone https://github.com/tomohirof/verge-mcp-server.git
cd verge-mcp-server
# 依存関係のインストール
npm install
# ビルド
npm run build環境変数の設定
.env.exampleをコピーして.envを作成:
cp .env.example .env.envファイルを編集:
# Plume API URL
VERGE_API_URL=https://api.vergecms.io
# 認証情報(オプション: ブラウザ認証を使う場合は不要)
VERGE_EMAIL=your-email@example.com
VERGE_PASSWORD=your-password注意: 環境変数に認証情報を設定しなくても、初回実行時にブラウザ認証フローが自動的に開始されます。
MCPクライアントでの設定
Claude Desktopの場合
~/Library/Application Support/Claude/claude_desktop_config.jsonに追加:
{
"mcpServers": {
"plume": {
"command": "node",
"args": ["/absolute/path/to/verge-mcp-server/dist/index.js"],
"env": {
"VERGE_API_URL": "https://api.vergecms.io"
}
}
}
}Claude Desktopを再起動後、以下のようにプロンプトで利用できます:
あなた: "ブログを作成してください。名前は『Tech Blog』です"
→ verge_create_blogツールが実行され、ブログが作成されます
あなた: "先ほど作成したブログに新しい記事を書いてください"
→ verge_create_articleツールが実行され、記事が作成されます
あなた: "記事を公開してください"
→ verge_publish_articleツールが実行され、記事が公開されます🔐 3ステップ認証フロー
このMCPサーバーは、安全で使いやすい3ステップ認証フローを提供します:
1. ブラウザ自動起動
↓
MCPサーバーが認証用URLでブラウザを自動的に開きます
2. ユーザー承認
↓
ブラウザでVergeCMSにログインし、MCPサーバーへのアクセスを承認
3. トークン永続化
↓
認証トークンが安全にローカルに保存され、次回以降自動的に使用されます認証の使い方
方法1: ブラウザ認証(推奨)
// Claude Desktopで以下のように実行
"VergeCMSにログインしてください"
// 自動的にブラウザが起動し、認証フローが開始されます
// 一度認証すれば、トークンが保存され、次回以降は自動ログイン方法2: 環境変数認証
.envファイルに認証情報を設定:
VERGE_EMAIL=your-email@example.com
VERGE_PASSWORD=your-password📚 ツールリファレンス
認証ツール
verge_login
VergeCMSにログインし、JWTトークンを取得します。
入力パラメータ:
{
email?: string; // メールアドレス(オプション: 省略時はブラウザ認証)
password?: string; // パスワード(オプション)
}レスポンス例:
{
success: true,
token: "eyJhbGc...",
user: {
id: 1,
email: "user@example.com",
name: "John Doe"
}
}verge_get_current_user
現在ログイン中のユーザー情報を取得します。
入力パラメータ: なし
レスポンス例:
{
id: 1,
email: "user@example.com",
name: "John Doe",
created_at: "2024-01-01T00:00:00Z"
}verge_update_user
ユーザー情報を更新します。
入力パラメータ:
{
user_id: number; // ユーザーID
name?: string; // 新しい名前
email?: string; // 新しいメールアドレス
password?: string; // 新しいパスワード
}ブログ管理ツール
verge_list_blogs
すべてのブログを一覧表示します。
入力パラメータ: なし
レスポンス例:
[
{
id: 1,
name: "Tech Blog",
title: "技術ブログ",
slug: "tech-blog",
description: "技術記事を書くブログ"
}
]verge_get_blog
特定のブログの詳細情報を取得します。
入力パラメータ:
{
blog_id: number; // ブログID
}verge_create_blog
新しいブログを作成します。
入力パラメータ:
{
name: string; // ブログ名(必須)
title: string; // タイトル(必須)
slug: string; // URLスラッグ(必須)
description?: string; // 説明(オプション)
}使用例:
// Claude Desktopでの使用例
"新しいブログを作成してください。
名前: 'My Tech Blog'
タイトル: '技術ブログ'
スラッグ: 'tech-blog'
説明: '最新の技術トレンドを発信するブログ'"verge_update_blog
既存のブログを更新します。
入力パラメータ:
{
blog_id: number; // ブログID(必須)
name?: string; // 新しい名前
title?: string; // 新しいタイトル
slug?: string; // 新しいスラッグ
description?: string; // 新しい説明
}verge_delete_blog
ブログを削除します。
入力パラメータ:
{
blog_id: number; // ブログID
}記事管理ツール
verge_list_articles
記事一覧を取得します(検索・フィルタリング可能)。
入力パラメータ:
{
blog_id: number; // ブログID(必須)
search?: string; // 検索キーワード
status?: 'draft' | 'published'; // ステータスフィルタ
category_ids?: number[]; // カテゴリIDでフィルタ
tag_ids?: number[]; // タグIDでフィルタ
}使用例:
// 公開済み記事のみを取得
{
blog_id: 1,
status: 'published'
}
// キーワード検索
{
blog_id: 1,
search: 'TypeScript'
}verge_get_article
記事の詳細情報を取得します。
入力パラメータ:
{
article_id: number; // 記事ID
blog_id: number; // ブログID
}verge_create_article
新しい記事を作成します。
入力パラメータ:
{
blog_id: number; // ブログID(必須)
title: string; // タイトル(必須)
content: string; // 本文(必須、Markdown)
slug: string; // URLスラッグ(必須)
status?: 'draft' | 'published'; // ステータス(デフォルト: draft)
featured_image?: string; // アイキャッチ画像URL
excerpt?: string; // 抜粋
author_id?: number; // 著者ID
category_ids?: number[]; // カテゴリID配列
tag_ids?: number[]; // タグID配列
}使用例:
// Claude Desktopでの使用例
"新しい記事を作成してください。
ブログID: 1
タイトル: 'TypeScriptでMCPサーバーを作る'
スラッグ: 'typescript-mcp-server'
内容: '# はじめに\n\nこの記事では...'"verge_update_article
既存の記事を更新します。
入力パラメータ:
{
article_id: number; // 記事ID(必須)
blog_id: number; // ブログID(必須)
title?: string; // 新しいタイトル
content?: string; // 新しい本文
slug?: string; // 新しいスラッグ
status?: 'draft' | 'published'; // 新しいステータス
featured_image?: string; // 新しいアイキャッチ画像
excerpt?: string; // 新しい抜粋
author_id?: number; // 新しい著者ID
category_ids?: number[]; // 新しいカテゴリID配列
tag_ids?: number[]; // 新しいタグID配列
}verge_publish_article
記事を公開状態に変更します。
入力パラメータ:
{
article_id: number; // 記事ID
blog_id: number; // ブログID
}verge_delete_article
記事を削除します。
入力パラメータ:
{
article_id: number; // 記事ID
blog_id: number; // ブログID
}🧪 開発ワークフロー
TDD方針
このプロジェクトはTest-Driven Development (TDD) で開発されています:
Zodスキーマのユニットテスト優先: 入出力フォーマットを確定
APIクライアント層: fetchモックでリクエスト生成・レスポンス処理をテスト
MCPツール層: APIクライアントモックでハンドラーをテスト
統合テスト: 型整合性とMCPプロトコル整合性を確認
現在のテスト状態: 155テスト全てパス ✅
テストの実行
# 全テスト実行
npm test
# テストUI起動
npm run test:ui
# カバレッジ測定
npm run test:coverage開発コマンド
# TypeScriptを直接実行(開発モード)
npm run dev
# MCPインスペクター(ツールの動作を検証)
npm run inspector
# ビルド
npm run build
# 型チェック
npx tsc --noEmit
# Lint
npm run lint📂 プロジェクト構造
verge-mcp-server/
├── src/
│ ├── index.ts # MCPサーバーエントリーポイント
│ ├── server.ts # MCPサーバーコア実装
│ ├── config.ts # 環境変数管理
│ ├── auth/
│ │ ├── index.ts # 認証フロー統合
│ │ ├── browser-auth.ts # ブラウザ認証フロー
│ │ └── token-storage.ts # トークン永続化
│ ├── client/
│ │ ├── types.ts # Zodスキーマ・型定義
│ │ ├── errors.ts # カスタムエラークラス
│ │ └── api.ts # Plume APIクライアント
│ └── tools/
│ ├── schemas.ts # MCPツール入力スキーマ
│ ├── auth.ts # 認証ツールハンドラー
│ ├── blogs.ts # ブログ管理ツールハンドラー
│ └── articles.ts # 記事管理ツールハンドラー
├── tests/
│ ├── client/
│ │ ├── types.test.ts # Zodスキーマテスト(43テスト)
│ │ ├── api.test.ts # APIクライアントテスト(21テスト)
│ │ ├── api-retry.test.ts # リトライ機能テスト(11テスト)
│ │ ├── api-backoff.test.ts # バックオフテスト(7テスト)
│ │ ├── api-timeout.test.ts # タイムアウトテスト(5テスト)
│ │ └── errors.test.ts # エラーハンドリングテスト(11テスト)
│ ├── tools/
│ │ ├── auth.test.ts # 認証ツールテスト(6テスト)
│ │ ├── blogs.test.ts # ブログ管理ツールテスト(10テスト)
│ │ └── articles.test.ts # 記事管理ツールテスト(8テスト)
│ └── integration/
│ ├── server.e2e.test.ts # E2Eテスト(6テスト)
│ ├── error-handling.test.ts # エラーハンドリング統合テスト(8テスト)
│ └── articles.scenario.test.ts # 記事管理シナリオテスト(3テスト)
├── dist/ # ビルド出力
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── README.md🔧 トラブルシューティング
よくある質問(FAQ)
Q: 認証に失敗します
A: 以下を確認してください:
VergeCMSのアカウントが有効か
VERGE_API_URLが正しいかブラウザ認証の場合、ブラウザが正常に起動するか
環境変数認証の場合、メールアドレスとパスワードが正しいか
Q: "Token expired" エラーが表示されます
A: トークンの有効期限が切れています。以下のコマンドで再認証してください:
# トークンファイルを削除
rm ~/.verge-mcp-token.json
# Claude Desktopを再起動し、再度ログインを実行Q: MCPツールが認識されません
A: Claude Desktopの設定を確認してください:
claude_desktop_config.jsonのパスが正しいかdist/index.jsのパスが絶対パスになっているかClaude Desktopを再起動したか
Q: ビルドエラーが発生します
A: 以下を試してください:
# node_modulesを削除して再インストール
rm -rf node_modules
npm install
# ビルド
npm run buildセキュリティに関する注意事項
トークン保存: 認証トークンは
~/.verge-mcp-token.jsonに保存されます環境変数: 本番環境では環境変数に認証情報を設定しないでください
ブラウザ認証推奨: セキュリティの観点から、ブラウザ認証フローの使用を推奨します
🔗 関連リンク
📝 ライセンス
MIT License - 詳細はLICENSEを参照してください。
👤 作者
Tomohiro Fukuda
GitHub: @tomohirof
🙏 謝辞
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomohirof/verge-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server