From 2c94b396f28ab96dbb5944595d638270ff6eefe2 Mon Sep 17 00:00:00 2001 From: Tim Pearson Date: Thu, 21 May 2026 16:45:14 -0400 Subject: [PATCH] feat: enable write access in MCPB bundle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Claude Desktop / MCPB bundle now exposes a single GITLAB_TOKEN field instead of GITLAB_READ_TOKEN, letting users pick the PAT scope themselves — read_api for read-only, api for read+write. Drops the 'read-only' qualifier from the display name and description. Existing installs will prompt to re-enter the PAT on upgrade because the user_config field was renamed gitlab_read_token → gitlab_token. --- .claude-plugin/plugin.json | 2 +- .github/workflows/release.yml | 2 +- CHANGELOG.md | 12 ++++++++++++ README.md | 10 +++++----- mcpb/manifest.template.json | 12 ++++++------ package-lock.json | 4 ++-- package.json | 2 +- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 897b516..9d15a17 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "gitlab-mcp", "description": "GitLab MCP server with GraphQL discovery and team activity tools", - "version": "1.16.0", + "version": "1.17.0", "icon": "assets/logo.svg", "author": { "name": "Tim Pearson" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8236360..45f78eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,7 +41,7 @@ jobs: VERSION="${GITHUB_REF_NAME#v}" gh release create "${GITHUB_REF_NAME}" \ --generate-notes \ - "gitlab-mcp-community-${VERSION}.mcpb#GitLab (community, read-only) — Claude Desktop / MCPB bundle" + "gitlab-mcp-community-${VERSION}.mcpb#GitLab (community) — Claude Desktop / MCPB bundle" docker: name: Build and push container image diff --git a/CHANGELOG.md b/CHANGELOG.md index 135ffa8..4c9d708 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.17.0] - 2026-05-21 + +### Changed +- MCPB (Claude Desktop) bundle now allows write access. The single PAT + field is mapped to `GITLAB_TOKEN`, so users can supply a `read_api`-scoped + token for read-only access or an `api`-scoped token to enable writes + (`create_issue`, `create_merge_request`, etc.). Bundle display name + changed from "GitLab (community, read-only)" to "GitLab (community)" and + the manifest `user_config` field was renamed `gitlab_read_token` → + `gitlab_token`. Existing installs will prompt to re-enter the PAT on + upgrade because of the renamed config key. + ## [1.16.0] - 2026-05-21 ### Added diff --git a/README.md b/README.md index 96a2383..055e632 100644 --- a/README.md +++ b/README.md @@ -74,15 +74,15 @@ npm install -g @ttpears/gitlab-mcp-server ### Claude Desktop -**Option A — MCPB one-click install (read-only):** download +**Option A — MCPB one-click install:** download `gitlab-mcp-community-${VERSION}.mcpb` from the [latest GitHub Release](https://github.com/ttpears/gitlab-mcp/releases/latest) and drag it onto the Claude Desktop window. Fill in your GitLab URL and a -read-only PAT (`read_api` scope) when prompted; the token is stored in your -OS keychain. This bundle is intentionally read-only — use Option B if you need -to create/update issues or MRs. +Personal Access Token when prompted; the token is stored in your OS keychain. +Use a `read_api`-scoped PAT for read-only access, or an `api`-scoped PAT to +also allow writes (create_issue, create_merge_request, etc.). -**Option B — manual config (read or write):** add to `claude_desktop_config.json`: +**Option B — manual config:** add to `claude_desktop_config.json`: ```json { diff --git a/mcpb/manifest.template.json b/mcpb/manifest.template.json index f83e177..0ededee 100644 --- a/mcpb/manifest.template.json +++ b/mcpb/manifest.template.json @@ -1,9 +1,9 @@ { "manifest_version": "0.3", "name": "gitlab-mcp-community", - "display_name": "GitLab (community, read-only)", + "display_name": "GitLab (community)", "version": "__VERSION__", - "description": "Community GitLab MCP server with GraphQL discovery and team-activity analytics. Read-only build. Not affiliated with GitLab Inc.'s first-party MCP server.", + "description": "Community GitLab MCP server with GraphQL discovery and team-activity analytics. Not affiliated with GitLab Inc.'s first-party MCP server.", "author": { "name": "Tim Pearson", "url": "https://github.com/ttpears/gitlab-mcp" @@ -25,7 +25,7 @@ ], "env": { "GITLAB_URL": "${user_config.gitlab_url}", - "GITLAB_READ_TOKEN": "${user_config.gitlab_read_token}" + "GITLAB_TOKEN": "${user_config.gitlab_token}" } } }, @@ -37,10 +37,10 @@ "default": "https://gitlab.com", "required": true }, - "gitlab_read_token": { + "gitlab_token": { "type": "string", - "title": "GitLab Read-Only PAT", - "description": "Personal access token with read_api scope. Stored in your OS keychain. Writes (create_issue, create_merge_request, etc.) will be rejected by this bundle — install via npm/GHCR if you need write access.", + "title": "GitLab Personal Access Token", + "description": "Personal access token. Use a read_api-scoped PAT for read-only access, or an api-scoped PAT to also allow writes (create_issue, create_merge_request, etc.). Stored in your OS keychain.", "sensitive": true, "required": true } diff --git a/package-lock.json b/package-lock.json index 4ca5fbe..deaa3ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ttpears/gitlab-mcp-server", - "version": "1.16.0", + "version": "1.17.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ttpears/gitlab-mcp-server", - "version": "1.16.0", + "version": "1.17.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.26.0", diff --git a/package.json b/package.json index 532a2c9..1b83cc7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ttpears/gitlab-mcp-server", - "version": "1.16.0", + "version": "1.17.0", "description": "GitLab MCP Server with GraphQL discovery", "main": "dist/index.js", "module": "./src/index.ts",