时间追踪MCP服务器

一个基于TypeScript的MCP服务器,用于Harvest时间追踪应用,使LLM客户端能够与Harvest账户交互。

  • by mayank2424
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mayank2424/mcp-server-harvest

使用说明

收获时间跟踪MCP服务器

一个基于TypeScript的MCP(模型上下文协议)服务器,用于Harvest时间跟踪应用程序,使LLM客户端能够与Harvest帐户进行交互。

安装

npx -y @mayankg0324/mcp-server-harvest

先决条件

  • Node.js >=18(或 Bun运行时 发展)
  • 具有API访问权限的Harvest帐户
  • Harvest的API个人访问令牌
  • Harvest的帐户ID

有关如何创建个人访问令牌的更多详细信息,请参阅 Harvest API文档.

可用工具

工具 描述 输入 输出
get-company 获取公司信息 无 公司信息(名称、URL、ID和货币)
search-clients 搜索客户端 •name:string(可选)-客户端名称
•isActive:boolean(可选)-活动状态
带有ID和详细信息的客户端列表
get-client 获取客户端信息 •clientId:string-客户端ID 客户端详细信息
search-projects 搜索项目 •name:string(可选)-项目名称
•客户端ID:string(可选)-客户端ID
•isActive:boolean(可选)-活动状态
带有ID和详细信息的项目列表
get-project 获取项目信息 •projectId:string-项目ID 详细项目信息
list-users 列出所有用户 无 具有ID和详细信息的用户列表
get-user 获取用户信息 •userId:string-用户ID 详细用户信息
list-project-users 列出项目用户分配 •projectId:string-项目ID 分配给项目的用户列表
list-project-tasks 列出项目任务分配 •projectId:string-项目ID 分配给项目的任务列表
search-time-entries 搜索时间条目 •from:string(可选)-开始日期(YYYY-MM-DD)
•to:string(可选)-结束日期(YYYY-MM-DD)
•userId:string(可选)-用户ID
•projectId:string(可选)-项目ID
•clientId:string(可选)-客户端ID
包含详细信息的时间条目列表
get-time-entry 获取时间条目详细信息 •timeEntryId:string-时间条目ID 详细的时间条目信息
create-time-entry 创建新的时间条目 •projectId:string-项目ID
•taskId:string-任务ID
•userId:string-用户ID
•小时数-花费的小时数
•备注:字符串(可选)-其他备注
创建的时间条目详细信息

注: 更多工具即将推出。

用法

克劳德桌面

打开Claude桌面配置文件 claude-desktop-config.json 并在下面添加以下内容 mcpServers:

{
  "mcpServers": {
    "Harvest": {
      "command": "npx",
      "args": [
        "-y",
        "@mayankg0324/mcp-server-harvest"
      ],
      "env": {
        "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
        "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
        "HARVEST_BASE_URL": "<Harvest Base URL>"
      }
    }
  }
}

光标IDE

打开Cursor IDE配置文件 ~/.cursor/mcp.json 或 <project-root>/.cursor/mcp.json 并在下面添加以下内容 mcpServers:

{
  "mcpServers": {
    "Harvest": {
      "command": "npx",
      "args": [
        "-y",
        "@mayankg0324/mcp-server-harvest"
      ],
      "env": {
        "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
        "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
        "HARVEST_BASE_URL": "<Harvest Base URL>"
      }
    }
  }
}

故障排除

spawn npx ENOENT 或 env: node: No such file or directory

当您的MCP客户端(Claude Desktop、Cursor)找不到时,就会发生这种情况 npx 或 node 在其路径中。GUI应用程序通常不会继承shell的PATH,特别是如果你使用像这样的版本管理器 非挥发性物质, fnm,或 伏打.

修复: 使用完整路径 npx 并将您的Node bin目录包含在 PATH env变量:

# Find your npx and node paths
which npx
# e.g. /Users/you/.nvm/versions/node/v22.20.0/bin/npx

然后更新您的MCP配置:

{
  "mcpServers": {
    "Harvest": {
      "command": "/Users/you/.nvm/versions/node/v22.20.0/bin/npx",
      "args": [
        "-y",
        "@mayankg0324/mcp-server-harvest"
      ],
      "env": {
        "PATH": "/Users/you/.nvm/versions/node/v22.20.0/bin:/usr/bin:/bin",
        "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
        "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
        "HARVEST_BASE_URL": "<Harvest Base URL>"
      }
    }
  }
}

本地开发

  1. 安装依赖项:

    npm install
    
  2. 构建项目:

    npm run build
    

    这将创建一个 dist 包含编译的JavaScript文件的目录。

  3. 要使用本地开发版本,请修改MCP服务器配置以指向本地版本:

    {
      "mcpServers": {
        "Harvest": {
          "command": "node",
          "args": [
            "path/to/local/build/dist/index.js"
          ],
          "env": {
            "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
            "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
            "HARVEST_BASE_URL": "<Harvest Base URL>"
          }
        }
      }
    }
    
  4. 重新启动客户端应用程序(Claude、Cursor)以应用更改。

许可证

麻省理工学院