Model Context Protocol (MCP) Server について
GitHub、GitLab、Google Maps、永続メモリ、Puppeteerのツール要求を振り分ける、現在はメンテナンスされていないモジュール型MCPサーバーです。複数の機能を単一ゲートウェイにまとめ、自分向けに変更したい人を対象としています。
主な機能
- 01統合MCPゲートウェイ
- 02GitHubとGitLabの操作
- 03Google Mapsでの検索と経路案内
- 04永続的なキー・バリューメモリ
- 05Puppeteerによるウェブ自動化
活用シーン
- 01リポジトリ検索とIssue管理
- 02場所やルートの検索
- 03データの永続保存と取得
- 04ウェブページの取得や内容抽出
MCP 対応
統合MCPゲートウェイを通じて各ツールを公開し、利用可能な機能を示すマニフェストも提供します。各ツールには直接アクセスするAPIエンドポイントもあります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
** 注:小規模モデルではモデルのメモリに関する問題があるため、MCP サーバーについては、モノリシックなルーティングプロバイダーではなく、個別のコンテナ化されたサーバープロバイダーを使う方法を推奨しています。そのため、このプロジェクトは現在メンテナンスされていません。ほかの方がこの方法を試せるよう、コードは残してあります。
Model Context Protocol(MCP)サーバー
Model Context Protocol 標準を実装するモジュール式サーバーです。GitHub、GitLab、Google Maps、メモリストレージ、Puppeteer によるウェブ自動化のツールを提供します。
アーキテクチャ
この MCP サーバーはモジュール式アーキテクチャで構築されており、各ツールは個別のモジュールとして実装されています。サーバーは統一されたゲートウェイを提供し、リクエストを適切なツールにルーティングします。

機能
- MCP ゲートウェイ:MCP 標準に準拠する、すべてのツールリクエスト用の統一エンドポイント
- MCP マニフェスト:利用可能なすべてのツールとその機能を説明するエンドポイント
- ツールへの直接アクセス:各ツールには、それぞれの API エンドポイントから直接アクセスできます
- モジュール式設計:必要に応じてツールを簡単に追加または削除できます
含まれるツール
- GitHub ツール:GitHub のリポジトリ、イシュー、検索を操作します
- GitLab ツール:GitLab のプロジェクト、イシュー、パイプラインを操作します
- Google Maps ツール:ジオコーディング、経路案内、場所の検索を行います
- メモリツール:データを永続的に保存、取得します
- Puppeteer ツール:スクリーンショットの撮影、PDF の生成、ウェブサイトからのコンテンツ抽出を行います
はじめに
前提条件
- Python 3.8 以降
- Node.js 14 以降
- Red Hat ベースの Linux ディストリビューション(RHEL、CentOS、Fedora)、または任意の Linux/macOS システム
インストール
-
このリポジトリをクローンします:
git clone https://github.com/yourusername/mcp-server.git cd mcp-server -
Python の依存関係をインストールします:
pip install -r requirements.txt -
Node.js の依存関係をインストールします:
npm install -
設定を記述した
.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 -
サーバーを起動します:
python app.py
コンテナ化したデプロイ
Docker または Podman(Red Hat のコンテナエンジン)を使ってサーバーを実行できます。
Docker によるデプロイ
Docker と docker-compose がすでにインストールされている場合:
-
Docker イメージをビルドします:
docker build -t mcp-server . -
コンテナを実行します:
docker run -p 5000:5000 --env-file .env mcp-server -
または、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)の場合:
-
コンテナイメージをビルドします:
podman build -t mcp-server . -
コンテナを実行します:
podman run -p 5000:5000 --env-file .env mcp-server -
永続ストレージが必要な場合:
mkdir -p ./data podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server注:SELinux が有効なシステムでは、
:Zサフィックスが重要です。 -
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 Maps:
/tool/gmaps/... - メモリ:
/tool/memory/... - Puppeteer:
/tool/puppeteer/...
利用可能なエンドポイントの詳細については、各ツールの API ドキュメントを参照してください。
ツールドキュメント
GitHub ツール
GitHub ツールは、リポジトリ、イシュー、検索に関する GitHub API へのアクセスを提供します。
アクション:
listRepos:ユーザーまたは組織のリポジトリ一覧を取得しますgetRepo:特定のリポジトリの詳細を取得しますsearchRepos:リポジトリを検索しますgetIssues:リポジトリのイシューを取得しますcreateIssue:リポジトリに新しいイシューを作成します
GitLab ツール
GitLab ツールでは、プロジェクト、イシュー、パイプラインの GitLab API にアクセスできます。
アクション:
listProjects:認証済みユーザーがアクセスできるすべてのプロジェクトを一覧表示しますgetProject:特定のプロジェクトの詳細を取得しますsearchProjects:GitLab 上のプロジェクトを検索しますgetIssues:プロジェクトのイシューを取得しますcreateIssue:プロジェクトに新しいイシューを作成しますgetPipelines:プロジェクトのパイプラインを取得します
Google Maps ツール
Google Maps ツールでは、ジオコーディング、道順の取得、場所の検索に Google Maps API を利用できます。
アクション:
geocode:住所を地理座標に変換しますreverseGeocode:地理座標を住所に変換しますgetDirections:2つの場所間の道順を取得しますsearchPlaces:Google Places API を使って場所を検索しますgetPlaceDetails:特定の場所の詳細を取得します
Memory ツール
Memory ツールは、データを保存・取得するための永続的なキーと値のストアを提供します。
アクション:
get:キーでメモリー項目を取得しますset:メモリー項目を作成または更新しますdelete:キーでメモリー項目を削除しますlist:任意のフィルタリングを指定して、すべてのメモリー項目を一覧表示しますsearch:値でメモリー項目を検索します
Puppeteer ツール
Puppeteer ツールでは、スクリーンショットの撮影、PDF の生成、Web サイトからのコンテンツ抽出などの Web 自動化機能を利用できます。
アクション:
screenshot:Web ページのスクリーンショットを撮影しますpdf:Web ページの PDF を生成しますextract:Web ページからコンテンツを抽出します
貢献
貢献を歓迎します!MCP サーバーを拡張する方法は次のとおりです。
新しいツールの追加
toolsディレクトリに新しいファイルを作成します。例:tools/newtool_tool.py- 既存のツールと同じパターンに従って、アクションを含むツールを実装します
app.pyのマニフェストにツールを追加しますtools/__init__.pyにツールのブループリントを登録します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
謝辞
- 標準仕様を提供している Model Context Protocol
- Web フレームワークを提供している Flask
- Web 自動化を提供している Puppeteer
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。