mcpField
M
Model Context Protocol (MCP) Server

Model Context Protocol (MCP) Server

ローカル
github.com/infinyteAI・エージェント037 週間前に更新

Model Context Protocol (MCP) Server について

AnthropicとOpenAIのモデル向けに統合APIを提供するサーバーです。モデル利用やツールを必要とするアプリケーションやエージェントを対象に、チャットと旧形式の補完、ツール検索、実行履歴、MongoDBへの永続化を組み合わせています。

主な機能

  1. 01AnthropicとOpenAIの統合API
  2. 02チャットと旧形式の補完
  3. 03ツール呼び出しと実行
  4. 04検索・画像ツール
  5. 05MongoDBによる永続化と分析

活用シーン

  1. 01AnthropicまたはOpenAIへのリクエスト振り分け
  2. 02利用可能なツールの検索と絞り込み
  3. 03ウェブ検索とコンテンツ取得
  4. 04画像の生成や編集

MCP 対応

MCPサーバーを実装し、ウェブ検索、コンテンツ取得、画像操作などのモデル・ツールAPIを提供します。どの機能がMCP経由で公開されるかはREADMEに記載されていません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"infinyte": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
起動コマンドdocker run -i --rm compose

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocicompose

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Model Context Protocol(MCP)サーバー

複数の AI モデルプロバイダー向けに統一された API を提供する、Model Context Protocol のシンプルなサーバー実装です。

機能

  • 複数の AI プロバイダー(Anthropic、OpenAI)向けの統一 API
  • チャット補完と従来型の補完をサポート
  • ツール呼び出しをサポート
  • コンテキスト/システムメッセージの処理
  • 環境変数に基づく設定
  • 永続化と状態管理のための MongoDB データベース
  • ツール実行履歴と分析

インストール

# 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 - Stable Diffusion 画像生成用
  • 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

このスクリプトでは、次の処理が行われます。

  1. Docker が利用可能かどうかを確認します
  2. 利用可能な場合は、Docker Compose を使用して MongoDB を起動します
  3. .env ファイルに接続設定を行います
  4. 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" >> .env

MongoDB は mongodb://mcpuser:mcppassword@localhost:27017/mcp-server で利用できます。
Mongo Express(ウェブ管理画面)は http://localhost:8081 で利用できます。

オプション 3:MongoDB のローカルインストール

MongoDB をローカルにインストールする場合は、次の手順に従ってください。

  1. https://www.mongodb.com/try/download/community から MongoDB をインストールします
  2. MongoDB サービスを起動します
  3. .env ファイルを次のように更新します。
    MONGODB_URI=mongodb://localhost:27017/mcp-server
    
オプション 4:MongoDB Atlas(クラウド)

本番環境での使用には、MongoDB Atlas をおすすめします。

  1. https://www.mongodb.com/cloud/atlas でアカウントを作成します
  2. 新しいクラスターを作成します
  3. データベースユーザーを設定し、IP アドレスをホワイトリストに登録します
  4. 接続文字列を取得し、.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

このスクリプトでは、次の処理が行われます。

  1. ツール定義を MongoDB に移行します
  2. 設定(API キーなど)を MongoDB に移行します
  3. 利用可能な場合は、バックアップデータをインポートします

使用方法

サーバーを起動する
# 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 で指定したポート)で実行されます。

起動オプション
  1. 通常起動(npm start):

    • API キーが設定されているか確認します
    • キーが見つからない場合は、セットアップを促します
    • 初めて使用する場合におすすめです
  2. 開発モード(npm run dev):

    • nodemon を使用し、コード変更時に自動で再読み込みします
    • 環境チェックも実行します
    • 開発に最適です
  3. クイックスタート(npm run quick-start):

    • すべての環境チェックを省略します
    • サーバーをすぐに起動します
    • 設定が正しいと分かっている場合に便利です
  4. 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:delete

PM2 の設定は 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、または html
  • category - カテゴリーでツールを絞り込みます(任意)
  • enabled - 有効状態でツールを絞り込みます:true(デフォルト)または false
  • search - 名前、説明、またはタグでツールを検索します
  • 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
Web クライアント

サーバーの稼働中は、http://localhost:3000 でシンプルな Web インターフェースを利用できます。これを使って、ブラウザーから 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 検索ツール

サーバーには、Web 検索と取得のツールが組み込まれています。

  1. Web 検索(/tools/web/search)

    • 指定したクエリに関する情報を Web で検索します
    • パラメーター:query(必須)、limit(任意)
    • 必要な環境変数:GOOGLE_CSE_API_KEY と GOOGLE_CSE_ID
    • Google 検索に失敗した場合は、BING_SEARCH_API_KEY にフォールバックします
  2. Web コンテンツ(/tools/web/content)

    • 特定の URL からコンテンツを取得し、抽出します
    • パラメーター:url(必須)、useCache(任意)
  3. Web 一括取得(/tools/web/batch)

    • 複数の URL からコンテンツを並列に取得します
    • パラメーター:urls(必須の配列)、useCache(任意)
画像生成ツール

サーバーには、画像の生成、編集、バリエーション作成のツールも含まれています。

  1. 画像の生成(/tools/image/generate)

    • テキストプロンプトに基づいて画像を生成します
    • パラメーター:
      • prompt(必須):画像の詳細な説明
      • provider(任意):openai または stability(デフォルトは openai)
      • options(任意):プロバイダー固有のオプション
  2. 画像の編集(/tools/image/edit)

    • テキストプロンプトを使って既存の画像を編集します
    • パラメーター:
      • imagePath(必須):編集する画像のパス
      • prompt(必須):編集内容の説明
      • maskPath(任意):マスク画像のパス
  3. 画像バリエーションの作成(/tools/image/variation)

    • 既存の画像のバリエーションを作成します
    • パラメーター:
      • imagePath(必須):バリエーションを作成する画像のパス

注記: これらのツールを使用するには、.env ファイルに API キーを設定する必要があります。

  • OpenAI の画像機能:OPENAI_API_KEY
  • Stability AI の画像機能:STABILITY_API_KEY
  • Web 検索:GOOGLE_CSE_API_KEY と GOOGLE_CSE_ID
AI モデルとのツール連携

MCP サーバーは、AI モデルとのツール呼び出しと実行を自動的に処理します。モデルがツールを使用すると判断すると、サーバーは次の処理を行います。

  1. 指定されたパラメーターで、要求されたツールを実行します
  2. ツールの応答をモデルに返します
  3. モデルはツールの応答を最終回答に取り込めるようになります
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 プロバイダーを追加するには、次の手順に従います。

  1. プロバイダーの SDK をプロジェクトに追加します
  2. server.js に新しいハンドラー関数を作成します
  3. メインのルートハンドラーに新しいケースを追加します
新しいツールの追加

サーバーに新しいツールを追加するには、次の手順に従います。

  1. /src/tools ディレクトリに新しいツールの実装を作成します
  2. tool-definitions.js にツール定義を追加します
  3. server.js のツール実行関数を更新します
  4. (必要に応じて)ツールを直接使用するための新しい API エンドポイントを追加します

ライセンス

GNU MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。