Skip to main content
Glama

** 注:このプロジェクトはメンテナンスを終了しました。小規模モデルのモデルメモリに問題があるため、MCPサーバーとしてはモノリシックなルーティングプロバイダーではなく、個別のコンテナ化されたサーバープロバイダーを使用する方法を推奨しています。他のユーザーが引き続きこの方法を試したい場合に備えて、コードは更新されています。

モデルコンテキストプロトコル(MCP)サーバー

モデルコンテキストプロトコル標準を実装し、GitHub、GitLab、Google マップ、メモリストレージ、Puppeteer Web 自動化用のツールを提供するモジュラー サーバーです。

建築

MCPサーバーはモジュール型アーキテクチャで構築されており、各ツールは個別のモジュールとして実装されています。サーバーは、リクエストを適切なツールにルーティングする統合ゲートウェイを提供します。

MCP サーバーアーキテクチャ

Related MCP server: GitHub MCP Server

特徴

  • MCP ゲートウェイ: MCP 標準に準拠したすべてのツール リクエストの統合エンドポイント

  • MCPマニフェスト: 利用可能なすべてのツールとその機能を記述するエンドポイント

  • 直接ツールアクセス:各ツールは独自のAPIエンドポイントを介して直接アクセスできます。

  • モジュラー設計:必要に応じてツールを簡単に追加または削除できます

付属ツール

  1. GitHubツール: GitHubリポジトリ、問題、検索を操作する

  2. GitLabツール: GitLabプロジェクト、問題、パイプラインを操作する

  3. Google マップツール: ジオコーディング、ルート案内、場所検索

  4. メモリツール: データを永続的に保存および取得する

  5. Puppeteer Tool : スクリーンショットを撮り、PDFを生成し、ウェブサイトからコンテンツを抽出します

はじめる

前提条件

  • Python 3.8以上

  • Node.js 14以上

  • Red Hat ベースの Linux ディストリビューション (RHEL、CentOS、Fedora) または任意の Linux/macOS システム

インストール

  1. このリポジトリをクローンします:

    git clone https://github.com/yourusername/mcp-server.git
    cd mcp-server
  2. Python の依存関係をインストールします。

    pip install -r requirements.txt
  3. Node.js の依存関係をインストールします。

    npm install
  4. 設定を含む.envファイルを作成します。

    SECRET_KEY=your-secret-key
    DEBUG=False
    
    # GitHub configuration
    GITHUB_TOKEN=your-github-token
    
    # GitLab configuration
    GITLAB_TOKEN=your-gitlab-token
    
    # Google Maps configuration
    GMAPS_API_KEY=your-google-maps-api-key
    
    # Memory configuration
    MEMORY_DB_URI=sqlite:///memory.db
    
    # Puppeteer configuration
    PUPPETEER_HEADLESS=true
    CHROME_PATH=/usr/bin/chromium-browser
  5. サーバーを起動します。

    python app.py

コンテナ化されたデプロイメント

Docker または Podman (Red Hat のコンテナ エンジン) を使用してサーバーを実行できます。

Docker デプロイメント

Docker と docker-compose がすでにインストールされている場合:

  1. Docker イメージをビルドします。

    docker build -t mcp-server .
  2. コンテナを実行します。

    docker run -p 5000:5000 --env-file .env mcp-server
  3. あるいは、docker-compose を使用します。

    docker-compose.ymlファイルを作成します。

    version: '3'
    services:
      mcp-server:
        build: .
        ports:
          - "5000:5000"
        volumes:
          - ./data:/app/data
        env_file:
          - .env
        restart: unless-stopped

    次に以下を実行します:

    docker-compose up -d

Podmanの展開

Podman を使用する Red Hat ベースのシステム (RHEL、CentOS、Fedora) の場合:

  1. コンテナイメージをビルドします。

    podman build -t mcp-server .
  2. コンテナを実行します。

    podman run -p 5000:5000 --env-file .env mcp-server
  3. 永続的なストレージが必要な場合:

    mkdir -p ./data
    podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server

    注: :Zサフィックスは SELinux 対応システムにとって重要です。

  4. Podman Compose を使用する (インストールされている場合):

    # Install podman-compose if needed
    pip install podman-compose
    
    # Use the same docker-compose.yml file as above
    podman-compose up -d

MCPサーバーの使用

MCPゲートウェイ

MCP ゲートウェイは、MCP 標準を使用するすべてのツールにアクセスするためのメイン エンドポイントです。

エンドポイント: POST /mcp/gateway

リクエスト形式:

{
  "tool": "github",
  "action": "listRepos",
  "parameters": {
    "username": "octocat"
  }
}

応答形式:

{
  "tool": "github",
  "action": "listRepos",
  "status": "success",
  "result": [
    {
      "id": 1296269,
      "name": "Hello-World",
      "full_name": "octocat/Hello-World",
      "owner": {
        "login": "octocat",
        "id": 1
      },
      ...
    }
  ]
}

MCPマニフェスト

MCP マニフェストには、利用可能なすべてのツールとその機能が記述されています。

エンドポイント: GET /mcp/manifest

応答形式:

{
  "manifestVersion": "1.0",
  "tools": {
    "github": {
      "actions": {
        "listRepos": {
          "description": "List repositories for a user or organization",
          "parameters": {
            "username": {
              "type": "string",
              "description": "GitHub username or organization name"
            }
          },
          "returns": {
            "type": "array",
            "description": "List of repository objects"
          }
        },
        ...
      }
    },
    ...
  }
}

直接ツールアクセス

各ツールには、独自の API エンドポイントを介して直接アクセスすることもできます。

  • GitHub: /tool/github/...

  • GitLab: /tool/gitlab/...

  • Google マップ: /tool/gmaps/...

  • メモリ: /tool/memory/...

  • 操り人形師: /tool/puppeteer/...

利用可能なエンドポイントの詳細については、各ツールの API ドキュメントを参照してください。

ツールドキュメント

GitHubツール

GitHub ツールは、リポジトリ、問題、検索用の GitHub API へのアクセスを提供します。

アクション:

  • listRepos : ユーザーまたは組織のリポジトリを一覧表示する

  • getRepo : 特定のリポジトリの詳細を取得する

  • searchRepos : リポジトリを検索する

  • getIssues : リポジトリの問題を取得する

  • createIssue : リポジトリに新しい問題を作成する

GitLabツール

GitLab ツールは、プロジェクト、問題、パイプラインの GitLab API へのアクセスを提供します。

アクション:

  • listProjects : 認証されたユーザーがアクセスできるすべてのプロジェクトを一覧表示します

  • getProject : 特定のプロジェクトの詳細を取得する

  • searchProjects : GitLab上のプロジェクトを検索

  • getIssues : プロジェクトの課題を取得する

  • createIssue : プロジェクトに新しい問題を作成する

  • getPipelines : プロジェクトのパイプラインを取得する

Googleマップツール

Google マップ ツールは、ジオコーディング、ルート案内、場所検索のための Google マップ API へのアクセスを提供します。

アクション:

  • geocode : 住所を地理座標に変換する

  • reverseGeocode : 地理座標を住所に変換する

  • getDirections : 2つの場所間の道順を取得する

  • searchPlaces : Google Places API を使用して場所を検索する

  • getPlaceDetails : 特定の場所の詳細を取得する

メモリツール

メモリ ツールは、データを保存および取得するための永続的なキー値ストアを提供します。

アクション:

  • get : キーでメモリ項目を取得する

  • set : メモリアイテムを作成または更新する

  • delete : キーでメモリ項目を削除する

  • list : オプションのフィルタリングを使用して、すべてのメモリ項目を一覧表示します。

  • search : 値でメモリ項目を検索する

操り人形ツール

Puppeteer ツールは、スクリーンショットの撮影、PDF の生成、Web サイトからのコンテンツの抽出を行う Web 自動化機能を提供します。

アクション:

  • screenshot : ウェブページのスクリーンショットを撮る

  • pdf : ウェブページのPDFを生成する

  • extract : ウェブページからコンテンツを抽出する

貢献

貢献を歓迎します!MCP サーバーを拡張する方法は次のとおりです。

新しいツールの追加

  1. toolsディレクトリに新しいファイルを作成します(例: tools/newtool_tool.py

  2. 既存のツールと同じパターンに従うアクションでツールを実装する

  3. app.pyのマニフェストにツールを追加します

  4. ツールのブループリントをtools/__init__.pyに登録します。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

謝辞

-
security - not tested
A
license - permissive license
-
quality - not tested

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/AdamPippert/multi-service-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server