@nicola5tor/openproject-timelog
Provides tools for managing time entries locally and synchronizing them with an OpenProject instance via its API, including logging, listing, editing, and uploading time entries, as well as querying projects, work packages, activities, and existing time entries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@nicola5tor/openproject-timelogRegistra 2 horas de hoy arreglando el login, tarea 1234."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@nicola5tor/openproject-timelog
MCP server (Model Context Protocol) for keeping a local time log and syncing it with OpenProject (API v3). Log your work in natural language from Claude Desktop (or another MCP client), review it, and upload it to OpenProject when ready.
Transport: stdio
Local storage:
~/.openproject-timelog/entries.jsonConfig:
OPENPROJECT_URLandOPENPROJECT_API_KEYenvironment variables
Installation
No need to install anything globally: the server runs with npx.
# probarlo directamente
npx @nicola5tor/openproject-timelogOr install it in a project:
npm install @nicola5tor/openproject-timelog
# o
pnpm add @nicola5tor/openproject-timelogRelated MCP server: OpenProject MCP Server
Configuration in Claude Desktop
Edit the configuration file (claude_desktop_config.json) and add the
server under 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"
}
}
}
}Restart Claude Desktop after saving.
How to get your OpenProject API key
In OpenProject: My account → Access tokens → API and generate a key. The
server authenticates with Basic auth using the literal user apikey and your key
as the password.
The local-only tools (
log_entry,list_entries,edit_entry,assign_entry,delete_entry,clear_sent) work even if you don't configure OpenProject. The query and upload tools requireOPENPROJECT_URLandOPENPROJECT_API_KEY.
Tools
Local time log
Tool | Description |
| Logs a time entry. Params: |
| Lists entries by status. Param: |
| Edits a pending entry. Params: |
| Assigns a work package to several entries. Params: |
| Deletes a pending entry. Param: |
| Removes all already-sent ( |
OpenProject query
Tool | Description |
| Lists projects ( |
| Lists tasks. Optional params: |
| Lists time entry activities ( |
| Queries already-logged hours. Optional params: |
Sync
Tool | Description |
| Uploads entries to OpenProject. Optional param |
* = required.
Behavior notes
Local ids are UUID v4. Hours are stored in decimal (
1.5= 1h30m) and converted to ISO 8601 duration (PT1H30M) on upload.The
projectIdof an entry, if not specified, is derived from the work package on upload (an extra call to OpenProject).The JSON file is written atomically (temp file + rename) and operations are serialized to prevent corruption.
Network / credential / permission errors are returned as readable messages in the tool response, without crashing the server.
Conversational usage examples
You: Log 2 hours of today fixing the login, task 1234. Claude: (calls
log_entrywith description="fix login", hours=2, workPackageId=1234)
You: Log 45 minutes of meeting for me, I'll assign the task later. Claude: (
log_entrydescription="meeting", hours=0.75) — stays pending assignment.
You: What do I have pending to upload? Claude: (
list_entriesstatus="pending")
You: Assign task 1234 to those two meetings. Claude: (
assign_entryentryIds=[...], workPackageId=1234)
You: What activities are there? Set "Development" on everything and upload it. Claude: (
get_activities→edit_entry/assignfor activityId →upload_entries)
You: Clean up what was already uploaded. Claude: (
clear_sent)
Development
npm install # instala deps y compila (prepare -> build)
npm run build # compila TypeScript a dist/
npm start # ejecuta dist/index.jsStructure:
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.mdLicense
MIT
Maintenance
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
- AlicenseAqualityCmaintenanceAn MCP server for Productive.io that enables users to log time, inspect projects, and manage time entries using natural language commands. It features fuzzy project matching, local caching, and remembers default services per project for streamlined time tracking.14MIT
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for integrating with OpenProject API, enabling AI assistants to manage projects, work packages, time tracking, and users.12
- FlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI assistants to interact with OpenProject, listing projects and work packages and managing resources through natural language.
- FlicenseNot gradedqualityDmaintenanceAn MCP server that connects Claude Desktop to your OpenProject instance, allowing you to manage projects, tasks, and time entries through natural language.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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