Multi-service MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides access to GitHub's API for managing repositories, issues, and performing searches, allowing users to list repositories, get repository details, search repositories, get issues, and create new issues.

  • Enables interaction with GitLab's API to access projects, issues, and pipelines, with capabilities to list projects, get project details, search projects, manage issues, and retrieve pipeline information.

  • Provides geocoding, reverse geocoding, directions, and places search capabilities through the Google Maps API, allowing users to convert addresses to coordinates, find routes between locations, and search for places.

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

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

建築

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

特徴

  • 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

モデル コンテキスト プロトコル標準を実装するモジュラー サーバー。統合ゲートウェイを介して GitHub、GitLab、Google マップ、メモリ ストレージ、Web 自動化と対話するためのツールを提供します。

  1. Architecture
    1. Features
      1. Included Tools
    2. Getting Started
      1. Prerequisites
      2. Installation
      3. Containerized Deployment
    3. Using the MCP Server
      1. MCP Gateway
      2. MCP Manifest
      3. Direct Tool Access
    4. Tool Documentation
      1. GitHub Tool
      2. GitLab Tool
      3. Google Maps Tool
      4. Memory Tool
      5. Puppeteer Tool
    5. Contributing
      1. Adding a New Tool
    6. License
      1. Acknowledgements
        ID: uanzup2jvu