モデルコンテキストプロトコル(MCP)サーバー
複数の AI モデル プロバイダーに統合された API を提供する、モデル コンテキスト プロトコルのシンプルなサーバー実装。
特徴
複数の AI プロバイダー (Anthropic、OpenAI) 向けの統合 API
チャット補完と従来の補完のサポート
ツール呼び出しサポート
コンテキスト/システムメッセージの処理
環境ベースの構成
永続性と状態管理のためのMongoDBデータベース
ツール実行履歴と分析
Related MCP server: Model Control Plane (MCP) Server
インストール
# Clone the repository
git clone <repository-url>
cd testmcp
# Install dependencies
npm install
# Run the interactive setup
npm run setupセットアップ スクリプトは、必要な API キーの構成をガイドします。
ANTHROPIC_API_KEY- Claude モデルの場合OPENAI_API_KEY- GPTモデルとDALL-E画像生成用STABILITY_API_KEY- 安定拡散画像生成用GOOGLE_CSE_API_KEYとGOOGLE_CSE_ID- ウェブ検索機能用BING_SEARCH_API_KEY- フォールバックウェブ検索用
必要に応じて、 .envファイルを手動で編集することもできます。
MongoDBのセットアップ
MCPサーバーはデータの永続化にMongoDBを使用します。MongoDBの設定にはいくつかのオプションがあります。
オプション 1: 自動セットアップ (推奨)
MongoDB セットアップ スクリプトを実行すると、プロセスがガイドされます。
# Run the MongoDB setup script
npm run setup-mongodbこのスクリプトは次のことを行います。
Dockerが利用可能かどうかを確認する
Docker Compose を使用して MongoDB を起動します (利用可能な場合)
.envファイルで接続を設定する
MongoDB接続を確認する
オプション2: 手動Dockerセットアップ
MongoDB を使い始める最も簡単な方法は、付属の Docker Compose 構成を使用することです。
# Start MongoDB and Mongo Express in Docker
docker compose up -d
# Update your .env file with the connection string
echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .envMongoDBはmongodb://mcpuser:mcppassword@localhost:27017/mcp-serverで利用可能になります。
Mongo Express(Web管理)はhttp://localhost:8081で利用できます。
オプション3: ローカルMongoDBインストール
MongoDB をローカルにインストールする場合:
https://www.mongodb.com/try/download/communityから MongoDB をインストールします。
MongoDBサービスを開始する
.envファイルを次のように更新します。MONGODB_URI=mongodb://localhost:27017/mcp-server
オプション4: MongoDB Atlas (クラウド)
実稼働環境での使用には、MongoDB Atlas が推奨されます。
https://www.mongodb.com/cloud/atlasでアカウントを作成します。
新しいクラスターを作成する
データベースユーザーを設定し、IPアドレスをホワイトリストに登録する
接続文字列を取得し、
.envファイルを更新します。MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority
データベース移行
既存のデータを MongoDB に移行するには:
# Run the migration script
npm run migrate-mongodbこのスクリプトは次のことを行います。
ツール定義をMongoDBに移行する
設定(APIキーなど)をMongoDBに移行する
バックアップデータがある場合はインポートする
使用法
サーバーを起動する
# Interactive startup (checks for API keys)
npm start
# Development mode with auto-reload
npm run dev
# Quick start (skips environment checks)
npm run quick-start
# Start server with PM2 process manager
npm run pm2:start
# Start server with PM2 in production mode
npm run pm2:start:prodサーバーはhttp://localhost:3000 (または .env で指定したポート) で実行されます。
起動オプション
標準スタート(
npm start):APIキーが設定されているかどうかを確認します
キーが見つからない場合はセットアップを要求します
初めての方におすすめ
開発モード(
npm run dev):コード変更時に自動リロードするために nodemon を使用します
環境チェックは引き続き実行します
開発に最適
クイックスタート(
npm run quick-start):すべての環境チェックをバイパスします
すぐにサーバーを起動します
設定が正しいことがわかっている場合に便利です
PM2 プロダクションモード(
npm run pm2:start:prod):PM2プロセスマネージャを使用してサーバーを実行します
サーバーがクラッシュした場合は自動的に再起動します
実稼働環境に最適化
環境チェックをバイパスする
PM2プロセスマネージャの使用
このサーバーは、Node.jsアプリケーション向けのプロダクションプロセスマネージャーであるPM2で実行できます。PM2は次のような機能を提供します。
プロセス管理(クラッシュ時の再起動)
ログ管理
パフォーマンス監視
負荷分散(複数インスタンスの場合)
PM2コマンド
# Start the server with PM2
npm run pm2:start
# Start in production mode
npm run pm2:start:prod
# View logs
npm run pm2:logs
# Monitor performance
npm run pm2:monit
# Restart the server
npm run pm2:restart
# Stop the server
npm run pm2:stop
# Remove the server from PM2
npm run pm2:deletePM2の設定はecosystem.config.jsに保存されています。このファイルを編集することで、以下の変更を加えることができます。
プロセス名
環境変数
メモリ制限
展開構成
インスタンス数(負荷分散用)
APIエンドポイント
POST /mcp/:provider
統合された API を通じて AI モデルにリクエストを送信します。
URL パラメータ:
provider: 使用する AI プロバイダー (anthropicまたはopenai)
リクエスト本文:
{
"messages": [
{ "role": "user", "content": "Your prompt here" }
],
"model": "claude-3-opus-20240229", // Optional, provider-specific model name
"tools": [...], // Optional, tools for function calling
"context": "System message or context" // Optional
}または (レガシー形式):
{
"prompt": "Your prompt here",
"model": "claude-3-opus-20240229", // Optional
"context": "System message or context" // Optional
}**レスポンス:**プロバイダーの API からの生のレスポンスを返します。
GET /tools/available
利用可能なすべてのツールの包括的なリストと詳細情報を取得します。
クエリパラメータ:
format- レスポンス形式:json(デフォルト)、yaml、table、またはhtmlcategory- ツールをカテゴリ別にフィルタリングする(オプション)enabled- 有効ステータスでフィルタリング:true(デフォルト) またはfalsesearch- ツールを名前、説明、タグで検索しますprovider- プロバイダー別にツールをフィルタリングします(例:openai、google)limit- 返されるツールの最大数(ページ区切り用)offset- ページ区切りのオフセット(デフォルト: 0)
応答(JSON 形式):
{
"success": true,
"count": 10,
"metadata": {
"categories": ["web", "image", "utility"],
"providers": ["openai", "anthropic", "internal"],
"totalCount": 24,
"offset": 0,
"limit": 10
},
"tools": [
{
"name": "web_search",
"description": "Search the web for information",
"category": "web",
"version": "1.0.0",
"provider": "google",
"enabled": true,
"parameters": {
"query": {
"type": "string",
"description": "The search query",
"required": true
},
"limit": {
"type": "number",
"description": "Maximum number of results",
"required": false,
"default": 5
}
},
"usage": {
"endpoint": "/tools/web/search",
"method": "POST",
"parameters": { /* same as above */ }
},
"metadata": {
"createdAt": "2023-10-15T12:00:00Z",
"updatedAt": "2024-04-20T09:30:00Z",
"usageCount": 1245
}
}
// ... more tools
]
}GET /health
サーバーが実行中の場合、ステータス 200 を返すヘルス チェック エンドポイント。
データ管理
データベースのバックアップ
データベースのバックアップを作成および管理できます。
# Create a full backup
npm run backup-mongodb
# Create a backup with execution history
npm run backup-mongodb -- --with-executions
# List existing backups
npm run backup-mongodb -- --listデータベース接続のテスト
MongoDB の設定を確認するには:
# Run the database test script
npm run test-mongodbクライアントの例
コマンドラインクライアント
テストクライアントはsrc/client.jsに含まれています。実行するには、以下のコマンドを実行します。
node src/client.jsウェブクライアント
サーバーが稼働中の場合、 http://localhost:3000でシンプルなウェブインターフェースが利用できます。これを使用して、ブラウザから直接 API をテストできます。
利用可能なツール
MCP サーバーは、ユーザーと AI エージェントが利用可能なすべてのツールをプログラムで一覧表示できるようにするツール検出エンドポイントを提供します。
ツールの発見
GET /tools/available - 利用可能なすべてのツールを詳細情報とともに一覧表示します。
複数の形式をサポート: JSON、YAML、HTML、ASCII テーブル
カテゴリ、プロバイダー、検索用語によるフィルタリングを提供します
各ツールの詳細なメタデータと使用例が含まれています
使用例:
# Get all tools in JSON format
curl http://localhost:3000/tools/available
# Get tools in a specific category
curl http://localhost:3000/tools/available?category=web
# Search for image-related tools
curl http://localhost:3000/tools/available?search=image
# Get a formatted HTML page of all tools
curl http://localhost:3000/tools/available?format=html > tools.htmlウェブ検索ツール
サーバーには、Web 検索および取得ツールが組み込まれています。
ウェブ検索(
/tools/web/search)特定のクエリに関する情報をウェブで検索する
パラメータ:
query(必須)、limit(オプション)必要条件:
GOOGLE_CSE_API_KEYおよびGOOGLE_CSE_ID環境変数Google 検索が失敗した場合は
BING_SEARCH_API_KEYにフォールバックします
Webコンテンツ(
/tools/web/content)特定のURLからコンテンツを取得して抽出する
パラメータ:
url(必須)、useCache(オプション)
Web バッチ(
/tools/web/batch)複数のURLからコンテンツを並列に取得する
パラメータ:
urls(必須配列)、useCache(オプション)
画像生成ツール
サーバーには、画像生成、編集、バリエーション ツールも含まれています。
イメージの生成(
/tools/image/generate)テキストプロンプトに基づいて画像を生成する
パラメータ:
prompt(必須): 画像の詳細な説明provider(オプション):openaiまたはstability(デフォルトはopenai)options(オプション): プロバイダー固有のオプション
画像編集(
/tools/image/edit)テキストプロンプトで既存の画像を編集する
パラメータ:
imagePath(必須): 編集する画像へのパスprompt(必須): 行う編集の説明maskPath(オプション): マスク画像へのパス
画像バリエーションを作成する(
/tools/image/variation)既存の画像のバリエーションを作成する
パラメータ:
imagePath(必須): バリエーションを作成するための画像へのパス
**注:**これらのツールを使用するには、
.envファイルに API キーを設定する必要があります。
OpenAI画像の場合:
OPENAI_API_KEY安定性AIイメージの場合:
STABILITY_API_KEYウェブ検索の場合:
GOOGLE_CSE_API_KEYとGOOGLE_CSE_ID
AIモデルとのツール統合
MCPサーバーは、AIモデルによるツールの呼び出しと実行を自動的に処理します。モデルがツールの使用を決定すると、サーバーは次の処理を実行します。
指定されたパラメータを使用して要求されたツールを実行します
ツールの応答をモデルに返します
モデルはツールの応答を最終的な答えに組み込むことができる。
AIモデルのためのツール検出
AIモデルは/tools/availableエンドポイントを使用して、利用可能なツールとその使用方法を検出できます。これは特に以下の場合に便利です。
実行中の動的なツール検出
AIエージェントの自己文書化
AIシステムが利用可能な機能に適応できるようにする
AI モデルのシステム プロンプトの例:
You have access to external tools through the MCP server.
Before using any tools, you should check what tools are available by calling:
GET /tools/available
This will return a list of all available tools with their parameters and usage instructions.
You can then use these tools by following the provided usage patterns.ツールの使用例
ツールの使用方法を示すサンプル コードについては、 /examplesディレクトリを参照してください。
新しいプロバイダーまたはツールの追加
新しいAIプロバイダーの追加
新しい AI プロバイダーを追加するには:
プロバイダーのSDKをプロジェクトに追加する
server.jsに新しいハンドラー関数を作成するメインルートハンドラに新しいケースを追加する
新しいツールの追加
サーバーに新しいツールを追加するには:
/src/toolsディレクトリに新しいツール実装を作成するツール定義を
tool-definitions.jsに追加するserver.jsのツール実行関数を更新しますツールを直接使用するための新しい API エンドポイントを追加する (必要な場合)
ライセンス
ISC
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.