{"name":"io.github.kar-thik/openproject-mcp-server","slug":"kar-thik-openproject-mcp-server","title":"OpenProject","description":"88 tools for the OpenProject API v3: work packages, attachments, git activity, time, reporting","url":"https://mcp.market/server/kar-thik-openproject-mcp-server","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"devtools","tags":["devtools"],"presence":{"score":23,"stars":2,"forks":1,"downloads_week":null,"last_push_at":"2026-09-07T23:17:40.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/kar-thik/openproject-mcp","website":"https://github.com/kar-thik/openproject-mcp#readme","version":"0.3.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"openproject-mcp-server","version":"0.3.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"OpenProject instance root URL, e.g. https://openproject.example.com","isRequired":true,"format":"string","name":"OPENPROJECT_URL"},{"description":"API key from My account -> Access tokens in OpenProject","isRequired":true,"format":"string","isSecret":true,"name":"OPENPROJECT_API_KEY"},{"description":"Set to 1 to serve read tools only","format":"string","name":"OPENPROJECT_MCP_READ_ONLY"},{"description":"Set to 1 to enable the membership-write tools (hidden by default)","format":"string","name":"OPENPROJECT_MCP_ADMIN_TOOLS"},{"description":"Comma-separated tool groups to drop, e.g. meetings,budgets","format":"string","name":"OPENPROJECT_MCP_DISABLE"}]}],"tools":[{"name":"add_meeting_agenda_item","description":"Add one item to a meeting's agenda, optionally pinned to a work package.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_meeting_outcome","description":"Record an outcome — a decision, a note, a follow-up ticket — against an agenda item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_work_package_comment","description":"Post a comment on a work package.","write_action":true,"price_micros":0,"input_schema":null},{"name":"add_work_package_watcher","description":"Subscribe a user to a work package's notifications.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bulk_update_work_packages","description":"Preview or apply up to 50 work-package updates, each with its own changes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"cancel_recurring_meeting_occurrence","description":"Cancel one occurrence of a series — skip a slot without touching the schedule.","write_action":true,"price_micros":0,"input_schema":null},{"name":"copy_project","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_meeting","description":"Schedule a meeting in a project and optionally invite participants.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_membership","description":"Grant a principal one or more roles in a project (admin-gated).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_news","description":"Publish a news announcement in a project.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_project","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_recurring_meeting","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_version","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_work_package","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_work_package_relation","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_attachment","description":"Permanently delete one attached file from OpenProject.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_meeting","description":"Permanently delete a meeting, together with its agenda and recorded outcomes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_meeting_agenda_item","description":"Permanently delete one agenda item, with any outcomes recorded against it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_meeting_outcome","description":"Permanently delete a recorded outcome from a running meeting's minutes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_membership","description":"Revoke a principal's access to a project (admin-gated, destructive).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_news","description":"Permanently delete a news entry.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_project","description":"Schedule the permanent deletion of a project and everything inside it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_recurring_meeting","description":"Permanently delete a recurring series: template, schedule, and EVERY occurrence.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_time_entry","description":"Permanently delete a logged time entry.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_version","description":"Permanently delete a version.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_work_package","description":"Permanently delete a work package and everything attached to it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_work_package_relation","description":"Remove the link between two work packages.","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_attachment","description":"Download an attachment's bytes to a file on the machine running this server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"edit_work_package_comment","description":"Rewrite the text of an existing work-package comment.","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_custom_action","description":"Run an instance-defined one-click action on a work package.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_document","description":"Read one document with its full description text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_github_pull_request","description":"Read one linked GitHub pull request in full, including its CI check runs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_instance_info","description":"Check the OpenProject connection and report what this instance supports.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_job_status","description":"Check whether a background job (a project copy, a scheduled deletion) has finished.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_meeting","description":"Read one meeting in full: participants, the agenda, and any recorded outcomes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_news","description":"Read one news entry in full, including the markdown body.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project","description":"Read one project in full.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_metadata","description":"List the ids and names that are actually valid on this instance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_phase","description":"Read one project's phase record: name, active flag and its definition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_report_data","description":"Aggregate everything a status report needs about one project and one date window.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recurring_meeting","description":"Read one recurring series in full: the schedule plus its next occurrences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user","description":"Read one user's profile: name, login, email, admin flag and status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_wiki_page","description":"Read a wiki page's identity and project — NOT its content.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_work_package","description":"Read one work package in full: description, dates, custom fields, parent and progress.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_work_package_git_activity","description":"Show the code behind a work package: commits, pull/merge requests and CI status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_work_package_schema","description":"Show which fields a work package of this type accepts in this project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"init_recurring_meeting_occurrence","description":"Materialize one occurrence of a series as a real meeting, copied from the template.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_attachments","description":"List the files attached to one container.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_budgets","description":"List a project's budgets — their ids and names, which is all API v3 exposes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_documents","description":"List the documents visible to you, across every project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_file_links","description":"List the external-storage files (Nextcloud, OneDrive/SharePoint) linked to a work package.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_meetings","description":"List meetings — the schedule side of a project: what is coming up, what already ran.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_memberships","description":"List who has access to which project, and with which roles.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_news","description":"List project news — the announcements a team publishes on its project overview.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_notifications","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_permissions","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_project_phase_definitions","description":"List the instance-global phase definitions — the vocabulary of the project life cycle.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_queries","description":"List the saved work-package views (queries) this user can open.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_recurring_meetings","description":"List recurring meeting series — the repetition rules, not the individual meetings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_reminders","description":"List your own upcoming work-package reminders.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_roles","description":"List the roles this instance defines, with their ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_entries","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_versions","description":"List versions (releases, milestones, sprints) you can assign work packages to.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_work_package_comments","description":"Read the comment thread and change history of a work package.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_work_packages","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"log_time","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_all_notifications_read","description":"Mark **everything** matching the filters as read — the whole inbox by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_notifications","description":"Mark specific notifications read (or unread) in one bulk request.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_work_package_watcher","description":"Unsubscribe a user from a work package's notifications.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_query","description":"Run a saved view and get its work packages — the fastest way to answer with a team's own definition of \"the sprint\" or \"our bugs\".","write_action":true,"price_micros":0,"input_schema":null},{"name":"save_query","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_principals","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_work_packages","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_project_favorite","description":"Add or remove a project from the authenticated user's favorites (OpenProject 17+).","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_work_package_reminder","description":"Set, change or clear your personal reminder on a work package.","write_action":false,"price_micros":0,"input_schema":null},{"name":"toggle_comment_reaction","description":"React to a work-package comment with an emoji, or take your reaction back.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_meeting","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_meeting_agenda_item","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_meeting_outcome","description":"Correct a recorded outcome's kind, text or linked work package.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_membership","description":"Replace the roles of an existing membership (admin-gated).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_news","description":"Correct or rewrite a published news entry.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_project","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_time_entry","description":"Correct an existing time entry.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_version","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_work_package","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_work_package_relation","description":"Change an existing relation's type, lag or description.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_attachment","description":"Attach a local file to a work package, wiki page, meeting, document, budget or comment.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wrapper","description":"","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T00:25:55.436Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:25:55.453Z","components":{"code":{"score":25,"max":25,"notes":["38 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 12 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"openproject-mcp-server","version":"0.3.0","found":true,"license":"MIT","dependencyCount":4,"publishedAt":"2026-09-07T23:19:23.736060Z","repositoryUrl":"https://github.com/kar-thik/openproject-mcp"}],"repo":{"found":true,"owner":"kar-thik","repo":"openproject-mcp","archived":false,"pushedAt":"2026-09-07T23:17:40Z","stars":2,"forks":1,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/33052075?v=4","ownerCreatedAt":"2017-10-24T07:18:35Z","license":"MIT"},"icon":{"url":"https://raw.githubusercontent.com/kar-thik/openproject-mcp/main/assets/icon-512.png","source":"registry","width":512,"height":512},"presence":{"stars":2,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-07T23:17:40.000Z","score":23}}}},"grade_history":[],"reviews":[]}