Skip to main content
Glama
comp3900_server

comp3900_server

这是用于测试我的自定义 MCP 服务器的仓库

COMP3900 项目安装器服务器

comp3900_server.py 是专为以下项目提供的 MCP 服务器: https://github.com/arctic-cheetah/COMP3900-Project。它可以:

  • 将固定仓库克隆到运行 MCP 服务器的机器上;

  • 向 LLM 公开项目 README 和有界项目文件读取;

  • 检查先决条件,包括 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 以包含它。

有两个值得了解的注意事项:

  • 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。打开它,连接,选择添加工具,并提供:

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

结果应为 3。

要将其作为普通的 stdio MCP 服务器运行以供 MCP 客户端使用:

mcp run server.py:mcp

直接运行 python server.py 目前会立即退出,因为该文件只定义了服务器。要支持该命令,请追加:

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

然后运行

python3 server.py

如果另一台机器上未安装 MCP:

python3 -m pip install "mcp[cli]"

然后

mcp dev server.py

部署:

这是代码块更改的描述: 在 README.md 的现有内容之后添加连接指南(STDIO 和 HTTP 选项)。

这是代表建议代码更改的代码块:

连接到 ChatGPT 桌面版

选项 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}}}"

对于基于浏览器的交互式测试,您已有的 Inspector 比手动管理 JSON-RPC 会话更容易。HTTP 端点主要用于 MCP 客户端,如 ChatGPT 桌面版、Codex 或 Inspector——而不是直接浏览器导航。

Related MCP Connectors

Related MCP Servers