M

MCP-开放项目

@jessebautista/mcp-openproject
0 Stars 17 次浏览 jessebautista 更新于 2026-08-23

识别出“MCP-openproject”并非一句完整的句子或常见的表达,它看起来更像一个项目名称或者代码库名称。如果是项目名称,通常不需要翻译,但若需要将其以中文表述,可直译为: 麦考普-开放项目(这只是一个音译加意译的组合,具体需根据项目背景确定) 如果这是特定领域的术语或者有特定含义,请提供更多的上下文信息以便获得更准确的翻译。但是按照任务要求,我提供最直接的转换结果:麦考普-开放项目。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Netlify Examples

使用 Netlify Express 的 OpenProject MCP 服务器

查看已部署的 MCP 函数端点: https://gilded-fudge-69ca2e.netlify.app/mcp(注意:此端点用于 MCP 客户端,不适用于直接浏览器访问)。

Netlify 状态

关于此 MCP 服务器

该项目提供了一个使用 Express 构建并作为 Netlify 函数部署的模型上下文协议 (MCP) 服务器。它允许 AI 代理(如 Langflow 代理、Claude、Cursor 等)通过定义的工具与自托管的 OpenProject 实例进行交互。

本示例演示了:

  • 使用 @modelcontextprotocol/sdk 设置 MCP 服务器。

  • 与外部 API(OpenProject)集成。

  • 使用 Netlify 函数无服务器地部署 MCP 服务器。

  • 在 Netlify 中安全处理环境变量。

  • 提供一个桥接,使远程 SSE 客户端(如云托管的 Langflow)能够通过 mcp-proxyngrok 连接到无状态的 Netlify 函数。

  • 模型上下文协议 (MCP)

  • 文档:Netlify 函数

已实现的 OpenProject 工具

服务器提供了以下工具以与 OpenProject 交互:

  • 项目:
    • openproject-create-project:创建新项目。
    • openproject-get-project:通过 ID 检索特定项目。
    • openproject-list-projects:列出所有项目(支持分页)。
    • openproject-update-project:更新现有项目的详细信息。
    • openproject-delete-project:删除项目。
  • 任务(工作包):
    • openproject-create-task:在项目中创建新任务。
    • openproject-get-task:通过 ID 检索特定任务。
    • openproject-list-tasks:列出任务,可选按项目 ID 过滤(支持分页)。
    • openproject-update-task:更新现有任务(需要 lockVersion)。
    • openproject-delete-task:删除任务。

前提条件

  • Node.js(推荐 v18 或更高版本)
  • npm
  • Netlify CLI (npm install -g netlify-cli)
  • Python 3.10 或更高版本(用于 SSE 桥接的 mcp-proxy 工具所需)
  • pip(Python 包安装器)
  • 可通过 URL 访问的 OpenProject 实例。
  • OpenProject API 密钥。
  • (可选)ngrok 账户和 CLI 用于测试远程 SSE 客户端。

设置说明

  1. 克隆仓库:
    bash
    git clone git@github.com:jessebautista/mcp-openproject.git
    cd mcp-openproject

  2. 安装 Node.js 依赖项:
    bash
    npm install

  3. 安装 Python mcp-proxy
    (确保你已激活 Python 3.10+)
    bash

    如果需要,请先检查你的 Python 版本:python3 --version

    安装 mcp-proxy(使用与 Python 3.10+ 关联的 pip):

    python3.10 -m pip install mcp-proxy

    或者根据你的版本使用 python3.11, python3.12 等

    如果安装了 pipx 并且更喜欢使用它:pipx install mcp-proxy

本地开发

  1. 创建环境文件:

    • 在项目根目录下创建一个名为 .env 的文件。

    • 添加你的 OpenProject 详情:
      dotenv
      OPENPROJECT_API_KEY="your_openproject_api_key_here"
      OPENPROJECT_URL="https://your_openproject_instance.com"
      OPENPROJECT_API_VERSION="v3"

    • (重要):确保 .env 文件列在你的 .gitignore 文件中,以避免提交敏感信息。

  2. 运行 Netlify 开发服务器:

    • 此命令启动本地服务器,从 .env 加载变量,并使你的函数可用。
      bash
      netlify dev* 你的本地MCP端点通常位于 http://localhost:8888/mcp
  3. 使用MCP Inspector进行本地测试:

    • 另一个终端中,运行MCP Inspector,并通过mcp-remote指向你的本地服务器:
      bash
      npx @modelcontextprotocol/inspector npx mcp-remote@next http://localhost:8888/mcp

    • 在浏览器中打开Inspector URL(通常是 http://localhost:6274)。

    • 连接并使用“工具”选项卡来测试OpenProject的CRUD操作。

部署到Netlify

  1. 在Netlify UI中设置环境变量:

    • 前往你在Netlify上的站点仪表板(https://app.netlify.com/sites/gilded-fudge-69ca2e/configuration/env)。
    • 在“环境变量”下,添加以下变量(确保它们对“函数”可用):
      • OPENPROJECT_API_KEY:你的OpenProject API密钥。
      • OPENPROJECT_URL:你的OpenProject实例URL(例如,https://project.bautistavirtualrockstars.com)。
      • OPENPROJECT_API_VERSIONv3
    • (安全性)netlify/mcp-server/index.ts中的代码从process.env读取这些值。硬编码的值应该被移除(已经在我们的步骤中完成)。
  2. 通过Git部署:

    • 提交你的代码更改:
      bash
      git add .
      git commit -m "Deploy OpenProject MCP server updates"

    • 推送到Netlify配置用于部署的分支(例如,main):
      bash
      git push origin main

    • Netlify将自动构建并部署新版本。在Netlify仪表板的“部署”部分监控进度。

测试已部署版本

  1. 使用MCP Inspector:

    • 运行检查器,将mcp-remote指向你的实时Netlify函数URL:
      bash
      npx @modelcontextprotocol/inspector npx mcp-remote@next https://gilded-fudge-69ca2e.netlify.app/mcp

    • 打开Inspector URL并测试工具。如果出现错误,请检查Netlify函数日志。

  2. 连接远程SSE客户端(例如,云托管的Langflow):

    • 由于Netlify函数是无状态的(不直接通过GET处理SSE连接),并且像Langflow这样的远程客户端通常更喜欢SSE,你需要一个桥接。我们结合使用Python mcp-proxy 工具、JS mcp-remote 工具以及ngrok来创建一个公共隧道。

    • 步骤A:本地启动代理桥接:

      • 在你的本地机器上打开一个终端(确保激活了Python 3.10+ 并且安装了mcp-proxy):
        bash

      监听本地端口7865上的SSE,运行npx mcp-remote作为后端

      mcp-proxy --sse-port 7865 -- npx mcp-remote@next https://gilded-fudge-69ca2e.netlify.app/mcp

      • 保持该终端运行。检查其输出以确保它已经开始监听并启动了npx命令。
    • 步骤B:使用ngrok创建公共隧道:

      • 另一个终端中,运行ngrok以暴露mcp-proxy正在监听的本地端口:
        bash
        ngrok http 7865

      • ngrok将显示一个公共的“转发”URL(例如,https://<random-string>.ngrok-free.app)。复制这个HTTPS URL。

    • 步骤C:配置Langflow:

      • 在你的Langflow MCP连接组件(运行于https://lang.singforhope.org/)中:
        • 模式SSE
        • MCP SSE URL:粘贴完整的ngrok公共URL,包括由mcp-proxy所需的/sse路径(例如,https://<random-string>.ngrok-free.app/sse)。
      • Langflow现在应该能够通过ngrok -> mcp-proxy -> mcp-remote -> Netlify链路连接并使用工具。
    • (注意):此ngrok设置适用于测试/开发。对于永久解决方案,将mcp-proxy桥接到持久的公共服务器上部署。

Netlify函数配置 (netlify.toml)请确保您的 netlify.toml 正确地将对 /mcp 路径的请求重定向到您的 Express 函数处理程序:

toml
[[redirects]]
force = true
from = "/mcp/*" # 使用通配符以捕获所有子路径(如果需要)
status = 200
to = "/.netlify/functions/express-mcp-server"

[[redirects]] # 同样重定向基础路径
force = true
from = "/mcp"
status = 200
to = "/.netlify/functions/express-mcp-server"

(根据您的 Express 路由需求调整重定向规则)