Skip to main content
Glama
arctic-cheetah

comp3900_server

カスタムMCPサーバーをテストするためのリポジトリです

COMP3900プロジェクトインストーラーサーバー

comp3900_server.pyは、https://github.com/arctic-cheetah/COMP3900-Project のプロジェクト専用のMCPサーバーです。次のことができます:

  • MCPサーバーが実行されているマシンに固定リポジトリをクローンする;

  • プロジェクトのREADMEと、プロジェクトファイルの範囲指定された読み取りをLLMに公開する;

  • PlaywrightのChromiumが使用可能かどうかを含む前提条件を確認する;

  • バックエンド、Playwright Chromium、フロントエンドをローカルにインストールする;

  • ドキュメント化されたDocker Composeスタックをビルド/起動する;または

  • オプションでcloudflaredクライアントをインストールする(下記参照)。

ダウンロード先はデフォルトで./COMP3900-Projectです。別の場所を使用するには、COMP3900_PROJECT_DIRに明示的なプロジェクトディレクトリを設定します。

まずこのMCPサーバーの依存関係をインストールします:

python3 -m pip install -r requirements.txt

stdioで実行します:

mcp run comp3900_server.py:mcp

または直接起動します:

python3 comp3900_server.py

MCPクライアントでは、ガイド付きワークフローのためにinstall_comp3900プロンプトを選択するか、setup_projectを直接呼び出します。ローカルインストールの引数の例:

{
  "method": "local",
  "install_browser": true,
  "install_browser_system_dependencies": true,
  "start_services": false,
  "install_cloudflare_tunnel_client": false
}

Dockerの場合は"method": "docker"を使用します。ビルド後にスタックをバックグラウンドで実行するには"start_services": trueを設定します。

Playwright

URL検出器のHTMLフェッチエンジンはPlaywright上で動作するため、これは実際の要件です:backend/pyproject.tomlにはplaywrightがリストされ、backend/Dockerfileとoperational-install-manual.mdの両方がplaywright install --with-deps chromiumを実行します。

install_browser_system_dependenciesは、そのドキュメント化された手順に合わせてデフォルトでtrueになりました。これはChromiumの共有ライブラリのためにプラットフォームのパッケージマネージャーにシェルアウトするため、サーバーがすでにrootとして実行されていないホストでは権限昇格のプロンプトが表示されることがあります。それらのライブラリを自分でインストールしたい場合は、falseに設定します。check_prerequisitesはurl_detector_readyを報告します。これは、PlaywrightモジュールとそのChromiumブラウザの両方が解決された場合にのみtrueになります。

cloudflared

install_cloudflaredは、公式リリースバイナリを<checkout>/.tools/cloudflaredにダウンロードし、そのsha256を報告します。これはinstall_projectとsetup_projectではデフォルトでオフになっています。含めるには"install_cloudflare_tunnel_client": trueを渡します。

知っておくべき2つの注意点:

  • CloudflareはCOMP3900プロジェクトの依存関係ではありません。README、インストールマニュアル、またはマニフェストのどこにも登場しません。リポジトリ内での出現は、backend/ml/data/の下のMLトレーニングCSV内のcdnjs.cloudflare.comなどのドメイン文字列のみです。

  • サーバーはクライアントのみをインストールします。Cloudflareへの認証は決して行わず、トンネルも開始しません。トンネルを実行するとローカルサービスがパブリックインターネットに公開されるためです。これは意図的に人間の手順として残されています。

チェックアウトにインストールすることで、操作は非特権のままになります:システムパッケージマネージャーは実行されず、プロジェクトディレクトリの外には何も書き込まれません。

Related MCP server: homelab-mcp

手順

プロジェクトディレクトリから、対話型MCP Inspectorを起動します:

mcp dev server.py

コマンドはローカルのInspector URLを出力します。それを開き、接続し、addツールを選択して、以下を指定します:

{
  "a": 1,
  "b": 2
}

結果は3になるはずです。

MCPクライアント用の通常のstdio MCPサーバーとして実行するには:

mcp run server.py:mcp

現在、server.pyをpythonで実行すると、ファイルがサーバーを定義するだけなので即座に終了します。そのコマンドをサポートするには、以下を追加します:

if __name__ == "__main__":
    mcp.run()

次に実行します

python3 server.py

別のマシンにMCPがインストールされていない場合:

python3 -m pip install "mcp[cli]"

次に

mcp dev server.py

デプロイメント:

これはコードブロックの変更内容の説明です:既存のコンテンツの後に、接続ガイド(STDIOおよびHTTPオプション)をREADME.mdに追加します。

これは提案されたコード変更を表すコードブロックです:

ChatGPT Desktopへの接続

オプション1:STDIO経由で接続(推奨)

サーバーは現在WSL内で実行されているため、デスクトップフォームに次のように入力します:

  • 名前: MCP_test

  • タイプ: STDIO

  • 起動コマンド: wsl.exe

  • 引数: 各項目を個別に、この順序で追加します:

    --cd
    /home/khalifa/MCP-server
    --exec
    /home/khalifa/pythonPackages/bin/mcp
    run
    server.py:mcp
  • 環境変数: 空のままにします

  • 作業ディレクトリ: 空のままにします

誤ったWSLディストリビューションが選択されている場合は、最初にこれらの引数を挿入します:

--distribution
Ubuntu

Ubuntuを、以下が報告する名前に置き換えます:

wsl.exe --list --verbose

つまり、実質的には次のようになります:

  • 引数: 各項目を個別に、この順序で追加します:

    --distribution
    kali-linux
    --cd
    /home/khalifa/MCP-server
    --exec
    /home/khalifa/pythonPackages/bin/mcp
    run
    server.py:mcp

サーバーを保存し、デスクトップアプリを再起動します。チャットで次を入力します:

/mcp

MCP_testとそのaddツールが表示されるはずです。試してみてください:

Use the MCP_test add tool to add 17 and 25.

OpenAIの公式ドキュメントによると、デスクトップアプリはローカルのSTDIOプロセスとStreamable HTTPサーバーの両方をサポートしています。また、設定を保存した後に再起動が必要です。OpenAI MCPドキュメント

オプション2:HTTP経由でサーバーを実行

mcp devを停止してから、次を実行します:

cd /home/khalifa/MCP-server
mcp run server.py:mcp --transport streamable-http

デフォルトのMCPエンドポイントは次のとおりです:

http://127.0.0.1:8000/mcp

デスクトップフォームで:

  • 名前: MCP_test_http

  • タイプ: Streamable HTTP

  • URL: http://127.0.0.1:8000/mcp

このモードには起動コマンドや引数はありません。HTTPサーバーはすでに実行されている必要があります。

ポート8000が使用中の場合は、これをserver.pyに追加します:

if __name__ == "__main__":
    mcp.run(
        transport="streamable-http",
        host="127.0.0.1",
        port=8001,
    )

次に実行します:

python3 server.py

このデスクトップURLを使用します:

http://127.0.0.1:8001/mcp

HTTPリクエストでの呼び出し

MCPはJSON-RPCであり、従来のREST APIではありません。したがって、ブラウザのアドレスバーで/mcpを開いてもaddは呼び出されません。MCPセッションを初期化してからツールを呼び出す必要があります。

初期化:

curl.exe -i -N http://127.0.0.1:8000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  --data "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1.0\"}}}"

Mcp-Session-Idレスポンスヘッダーの値をコピーします。次にaddを呼び出します:

curl.exe -N http://127.0.0.1:8000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: PASTE_SESSION_ID_HERE" \
  --data "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"add\",\"arguments\":{\"a\":17,\"b\":25}}}"

ブラウザベースの対話型テストには、JSON-RPCセッションを手動で管理するよりも、すでにあるInspectorの方が簡単です。HTTPエンドポイントは主にChatGPT Desktop、Codex、InspectorなどのMCPクライアントを対象としており、ブラウザでの直接ナビゲーションを対象としていません。

Related MCP Connectors

Related MCP Servers