Skip to main content
Glama
NicoLa5Tor

@nicola5tor/openproject-timelog

by NicoLa5Tor

@nicola5tor/openproject-timelog

MCP-сервер (Model Context Protocol) для ведения локального журнала часов и синхронизации с OpenProject (API v3). Записывайте свою работу на естественном языке из Claude Desktop (или другого MCP-клиента), просматривайте её и загружайте в OpenProject, когда будет готово.

  • Транспорт: stdio

  • Локальное хранилище: ~/.openproject-timelog/entries.json

  • Конфигурация: переменные окружения OPENPROJECT_URL и OPENPROJECT_API_KEY

Установка

Ничего глобально устанавливать не нужно: сервер запускается через npx.

# probarlo directamente
npx @nicola5tor/openproject-timelog

Или установить в проект:

npm install @nicola5tor/openproject-timelog
# o
pnpm add @nicola5tor/openproject-timelog

Related MCP server: OpenProject MCP Server

Настройка в Claude Desktop

Отредактируйте файл конфигурации (claude_desktop_config.json) и добавьте сервер в раздел mcpServers:

{
  "mcpServers": {
    "openproject-timelog": {
      "command": "npx",
      "args": ["-y", "@nicola5tor/openproject-timelog"],
      "env": {
        "OPENPROJECT_URL": "https://tu-openproject.example.com",
        "OPENPROJECT_API_KEY": "TU_API_KEY"
      }
    }
  }
}

Перезапустите Claude Desktop после сохранения.

Как получить API-ключ OpenProject

В OpenProject: Моя учётная запись → Access tokens → API и сгенерируйте ключ. Сервер аутентифицируется с помощью Basic auth, используя литеральное имя пользователя apikey и ваш ключ в качестве пароля.

Инструменты только локальные (log_entry, list_entries, edit_entry, assign_entry, delete_entry, clear_sent) работают даже без настройки OpenProject. Инструменты запроса и загрузки требуют OPENPROJECT_URL и OPENPROJECT_API_KEY.

Инструменты

Локальный журнал

Tool

Описание

log_entry

Записывает запись о часах. Параметры: description, hours, workPackageId, projectId, activityId, spentOn (по умолч. сегодня), startTime, endTime. Если нет workPackageId, остаётся не назначенной.

list_entries

Список записей по статусу. Параметр: status = pending (по умолч.) | sent | all.

edit_entry

Редактирует не отправленную запись. Параметры: id* + любое редактируемое поле.

assign_entry

Назначает рабочий пакет нескольким записям. Параметры: entryIds, workPackageId.

delete_entry

Удаляет не отправленную запись. Параметр: id*.

clear_sent

Удаляет из локального журнала все уже отправленные (sent) записи.

Запрос OpenProject

Tool

Описание

get_projects

Список проектов (id, name, status).

get_work_packages

Список задач. Необязательные параметры: projectId, status, assignee.

get_activities

Список видов деятельности для записи времени (id, name).

get_time_entries

Запрос уже зарегистрированных часов. Необязательные параметры: projectId, workPackageId, from, to.

Синхронизация

Tool

Описание

upload_entries

Загружает записи в OpenProject. Необязательный параметр entryIds; если опущен, загружает все pending с workPackageId. Каждая запись требует workPackageId и activityId; те, у которых их нет, сообщаются без загрузки. При загрузке помечает запись как sent.

* = обязательно.

Примечания по поведению

  • Локальные идентификаторы — UUID v4. Часы хранятся в десятичном виде (1.5 = 1ч30м) и преобразуются в длительность ISO 8601 (PT1H30M) при загрузке.

  • projectId записи, если не указан, выводится из рабочего пакета при загрузке (дополнительный вызов к OpenProject).

  • JSON-файл записывается атомарно (временный файл + переименование), а операции сериализуются для предотвращения повреждения.

  • Ошибки сети / учётных данных / прав возвращаются как читаемые сообщения в ответе инструмента, не обрушивая сервер.

Примеры разговорного использования

Вы: Запиши 2 часа сегодня на исправление логина, задача 1234. Claude: (вызывает log_entry с description="исправить логин", hours=2, workPackageId=1234)

Вы: Запиши мне 45 минут совещания, задачу потом поставлю. Claude: (log_entry description="совещание", hours=0.75) — остаётся не назначенной.

Вы: Что у меня не отправлено? Claude: (list_entries status="pending")

Вы: Этим двум совещаниям поставь задачу 1234. Claude: (assign_entry entryIds=[...], workPackageId=1234)

Вы: Какие есть виды деятельности? Поставь "Development" всем и загрузи. Claude: (get_activitiesedit_entry/assign для activityId → upload_entries)

Вы: Очисти то, что уже загружено. Claude: (clear_sent)

Разработка

npm install      # instala deps y compila (prepare -> build)
npm run build    # compila TypeScript a dist/
npm start        # ejecuta dist/index.js

Структура:

openproject-timelog/
├── src/
│   ├── index.ts        # entry point, setup MCP y registro de tools
│   ├── store.ts        # CRUD bitácora local (JSON atómico)
│   ├── openproject.ts  # cliente API OpenProject v3
│   └── types.ts        # interfaces/types
├── package.json
├── tsconfig.json
└── README.md

Лицензия

MIT

Install Server
F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects Claude Desktop to your OpenProject instance, allowing you to manage projects, tasks, and time entries through natural language.

View all related MCP servers

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • A MCP server built for developers enabling Git based project management with project and personal…

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NicoLa5Tor/openMcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server