OpenAI、Git、ファイルシステム、Prometheus 統合を備えた MCP サーバー
このリポジトリには、OpenAI サービス、Git リポジトリ分析、ローカル ファイル システム操作、および Prometheus 統合をサポートするモデル コントロール プレーン (MCP) サーバー実装が含まれています。
プロジェクト構造
Related MCP server: MCP GitHub Repository Server
要件
Python 3.8以上
ファストAPI
ウビコーン
OpenAI SDK
GitPython
リクエスト
Docker と Docker Compose (Prometheus 機能用)
インストール
このリポジトリをクローンする
依存関係をインストールします。
環境変数
次の環境変数を設定します。
Azure OpenAI の場合:
標準 OpenAI の場合:
プロメテウスの場合:
サーバーの実行
MCP サーバーを起動します。
または、その他のオプションについては以下をご覧ください。
サーバーはhttp://localhost:8000で利用できます。
統合テストツール
すべてのテスト機能へのユーザーフレンドリーなインターフェースを提供する統合テスト スクリプトを提供します。
このインタラクティブ スクリプトは以下を提供します。
ファイルシステムテスト
Git統合テスト
メモリ分析ツール
プロメテウステストとメモリストレス
MCP サーバー管理
環境設定
個別テスト
個々のテストを直接実行することもできます。
OpenAI 統合をテストします。
Git 統合をテストします (Git リポジトリの URL を指定します)。
Git の diff 機能をテストします (要件の互換性を分析します)。
ファイルシステムの機能をテストします。
MCP との langflow 統合をテストします。
Prometheus の統合をテストします。
高度なGit分析
AI による推奨機能を備えたより高度な Git リポジトリ分析については、以下をご覧ください。
リポジトリ内の特定のパターンを検索することもできます。
または、AI の洞察を使用して最後のコミットの差分を分析します。
メモリ分析ツール
MCP には、メモリの監視と分析のためのツールがいくつか含まれています。
テストのためにメモリ負荷をシミュレートすることもできます。
プロメテウス統合
設定
Docker Compose を使用して Prometheus スタックを起動します。
これは次のように始まります:
Prometheus サーバー ( http://localhost:9090でアクセス可能)
ノードエクスポーター(ホストメトリック用)
cAdvisor(コンテナメトリクス用)
ストレス テストの場合、メモリ ストレス コンテナーを起動できます。
または、コンテナ テスト スクリプトを使用します。
Docker 構成およびリセット スクリプト
このプロジェクトには、さまざまな環境での信頼性の高い操作を実現するための複数の Docker 構成とリセット スクリプトが含まれています。
Docker 構成
標準構成(
docker-compose.yml): Prometheus および Langflow のカスタム Dockerfile を使用して、システム間で一貫した権限を確保します。ブリッジ ネットワーク構成(
docker-compose.bridge.yml): ホスト ネットワークに問題のある環境でブリッジ ネットワークを使用する代替構成。
権限問題を解決するためのカスタム Dockerfiles
このプロジェクトでは、Prometheus と Langflow の両方にカスタム Dockerfile を使用して、一般的な権限の問題を解決します。
Dockerfile.prometheus :
nobodyユーザーに適切な権限を与えて Prometheus 構成を設定します。Dockerfile.langflow : ファイルの所有権を変更せずにコンポーネント ディレクトリをコンテナーにコピーし、Langflow が権限エラーなしでコンポーネントにアクセスできるようにします。
このアプローチにより、異なるマシンやユーザー構成間で権限の競合を引き起こす可能性のあるボリュームマウントが不要になります。
スクリプトをリセットする
すべてのサービスのリセット(
reset-all.sh): 1 つのコマンドですべてのコンテナをリセットします。# Basic reset (rebuilds containers with existing volumes) ./reset-all.sh # Full reset (removes volumes and rebuilds containers) ./reset-all.sh --clean個別サービスリセット:
# Reset only Prometheus ./reset-prometheus.sh # Reset only Langflow ./reset-langflow.sh
これらのスクリプトにより、コンテナが正しい権限と最新のコード変更で適切に構成されていることが保証されます。
トラブルシューティング
権限の問題が発生した場合:
リセットスクリプトを使用してコンテナを再構築します
docker compose logs <service_name>でログを確認します。Langflowに追加されたコンポーネントがDockerfile.langflowに含まれていることを確認します。
クロスマシン展開
新しいマシンにデプロイする場合:
リポジトリをクローンする
リセットスクリプトを実行可能にする:
chmod +x *.shリセット スクリプトを実行します:
./reset-all.sh
カスタム Dockerfiles は、さまざまなシステム間で発生する可能性のあるすべての権限の問題を自動的に処理します。
Prometheusクライアントの使用
MCPAIComponentクラスには Prometheus 機能が含まれています。
便利なPromQLクエリ
CPU使用率:
rate(node_cpu_seconds_total{mode!="idle"}[1m])メモリ使用量:
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytesディスク使用量:
node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}コンテナのCPU使用率:
rate(container_cpu_usage_seconds_total[1m])コンテナのメモリ使用量:
container_memory_usage_bytes
APIエンドポイント
OpenAIエンドポイント
GET
/v1/models- 利用可能なすべてのモデルを一覧表示するGET
/v1/models/{model_id}- 特定のモデルに関する情報を取得するPOST
/v1/models/azure-gpt-4/completion- Azure OpenAI を使用してテキスト補完を生成するPOST
/v1/models/azure-gpt-4/chat- Azure OpenAI を使用してチャット応答を生成するPOST
/v1/models/openai-gpt-chat/chat- OpenAIチャットモデルを使用してチャットレスポンスを生成するPOST
/v1/models/openai-gpt-completion/completion- OpenAI補完モデルを使用してテキスト補完を生成する
Git 統合エンドポイント
POST
/v1/models/git-analyzer/analyze- Gitリポジトリを分析するPOST
/v1/models/git-analyzer/search- Gitリポジトリでパターンに一致するファイルを検索するPOST
/v1/models/git-analyzer/diff- リポジトリ内の最後のコミットの差分を取得します
ファイルシステムエンドポイント
POST
/v1/models/filesystem/list- ディレクトリの内容を一覧表示するPOST
/v1/models/filesystem/read- ファイルの内容を読み取るPOST
/v1/models/filesystem/read-multiple- 複数のファイルを一度に読み取るPOST
/v1/models/filesystem/write- ファイルにコンテンツを書き込むPOST
/v1/models/filesystem/edit- 複数の置換を含むファイルを編集するPOST
/v1/models/filesystem/mkdir- ディレクトリを作成するPOST
/v1/models/filesystem/move- ファイルまたはディレクトリを移動するPOST
/v1/models/filesystem/search- パターンに一致するファイルを検索するPOST
/v1/models/filesystem/info- ファイルまたはディレクトリに関する情報を取得します
Prometheusエンドポイント
POST
/v1/models/prometheus/query- インスタントクエリを実行するPOST
/v1/models/prometheus/query_range- 範囲クエリを実行するPOST
/v1/models/prometheus/series- シリーズデータを取得するGET
/v1/models/prometheus/labels- 利用可能なすべてのラベルを取得するPOST
/v1/models/prometheus/label_values- 特定のラベルの値を取得するGET
/v1/models/prometheus/targets- すべてのターゲットを取得するGET
/v1/models/prometheus/rules- すべてのルールを取得するGET
/v1/models/prometheus/alerts- すべてのアラートを取得する
クライアントの使用状況
MCP サーバーの URL を指定すると、LangFlow パイプラインでMCPAIComponent使用できます。
GitCodeAnalyzerクラスの使用
より構造化された Git 分析を行うには、 GitCodeAnalyzerクラスを使用できます。
トラブルシューティング
プロメテウスの問題
Prometheus が実行中であることを確認します:
docker ps | grep prometheusPrometheus UI にアクセスできることを確認します: http://localhost:9090
MCPサーバーが実行中でアクセス可能であることを確認する
MCPサーバーのログでエラーを確認します
まず簡単なクエリを試して接続を確認します(例:
upクエリ)
OpenAIの問題
APIキーが正しく設定されていることを確認してください
レート制限またはクォータの問題を確認する
APIキーでサポートされているモデルを使用していることを確認してください
Gitの問題
GitリポジトリのURLにアクセスできることを確認する
プライベートリポジトリを使用する場合は認証の問題を確認してください
GitPythonが正しくインストールされていることを確認する