{"_id":"@butterfly-liu/gitlab-mcp","_rev":"6-a106488b1f00eee3a16d5189599b903f","name":"@butterfly-liu/gitlab-mcp","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","_id":"@butterfly-liu/gitlab-mcp@1.0.0","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"bin":{"gitlab-mcp":"server.js"},"dist":{"shasum":"93a328ff6d3e04992bd4894c759a1771250f0bfa","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.0.tgz","fileCount":3,"integrity":"sha512-gBU7T7NPwob9kn0Y9C0uDYe7b4Y17s1qN2T1j8M0NK8PTRDFQ2NlS0xMx1ZWaZpPYp7ojmHlZgphL9/6tLKpLA==","signatures":[{"sig":"MEUCIBkmVAGeMz/pny5qGbc2Mlt1hdCDzjB7RsCYGIoacRPSAiEA6aTZgsHIdWS7/iuiAh/seccmi38AtUfSyPz6C9IamhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8873},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"4147ff8edf2a5fb19388309c25a781f400ab3692","scripts":{"start":"node server.js"},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"repository":{"url":"git+https://github.com/9527crazy/gitlab-mcp.git","type":"git"},"_npmVersion":"10.5.0","description":"MCP (Model Context Protocol) server for GitLab: list projects, commits, files, merge requests, and issues.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"axios":"^1.13.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp_1.0.0_1773115333490_0.6984459179585651","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","_id":"@butterfly-liu/gitlab-mcp@1.0.1","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"bin":{"gitlab-mcp":"server.js"},"dist":{"shasum":"1db934fbabf0fd7c90ed46d3678c675f4ab9a2a7","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.1.tgz","fileCount":3,"integrity":"sha512-SxTknHbFfrr9jO5NqpK6YAEDBfkyH7r6+o4g9A09ZV+GhF2108Z06NDNsXL+vkVYe6AuEVdTZLK8BUHEMt+vzw==","signatures":[{"sig":"MEUCIQDvbbG87LU1AnCpon4JVUS3lavafbcyWsum1J4fyqa/twIgQmbLkGkHVdH1CxKWgHl4ahGohp1tQZqBaBLFp5c32cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8926},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"338e3eb4d67359190be81ce96e27c8c2f1d39944","scripts":{"start":"node server.js"},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"repository":{"url":"git+https://github.com/9527crazy/gitlab-mcp.git","type":"git"},"_npmVersion":"10.5.0","description":"MCP (Model Context Protocol) server for GitLab: list projects, commits, files, merge requests, and issues.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"axios":"^1.13.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp_1.0.1_1773115504056_0.9131778359184315","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","_id":"@butterfly-liu/gitlab-mcp@1.0.2","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"bin":{"gitlab-mcp":"server.js"},"dist":{"shasum":"cdca88bbef14aba9078b6e5bd0f2bc283e127595","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.2.tgz","fileCount":3,"integrity":"sha512-9C/xyM2SwZwzXw2pbpFTtAzGlg9jExMtTsKHN/VVdKeSjG/q1k1hxbRMfJRqiEmR4QYgHrRQ3g+1jVEAq4mNiQ==","signatures":[{"sig":"MEQCIEeTcngy1V2+CmuSoEFBIa0uoux6xflG2TG6qOD3MR+CAiBrLb5Z8PVPp4ztFBBL8Vi9Y5iMUW9QLP7mgkhx5ls0Nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15659},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"c776de6c420cf332d4f70d97b6a058d61e9b3e02","scripts":{"start":"node server.js"},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"repository":{"url":"git+https://github.com/9527crazy/gitlab-mcp.git","type":"git"},"_npmVersion":"10.5.0","description":"MCP (Model Context Protocol) server for GitLab: list projects, commits, files, merge requests; list/create/update/delete issues and add or list issue notes.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"axios":"^1.13.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp_1.0.2_1773126758939_0.8602906711304539","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","_id":"@butterfly-liu/gitlab-mcp@1.0.3","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"bin":{"gitlab-mcp":"server.js"},"dist":{"shasum":"b3dfc0b322ef103d7a1578147ff17b1de75d8e40","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.3.tgz","fileCount":3,"integrity":"sha512-l5rwIXI0qyOZ+7PlAubio1XS4BVNzBtiKEzZbNshtGJrc/+XlAzrj2GOfeRa20n0U/Ss3aFAcmuhvrsY4oA1lA==","signatures":[{"sig":"MEUCIQCGJ/0g2tIQycY8yUaF8rTBgiV7eRIv1bASoLuob3RspQIgIuSDS9lcjAvTtnxoKiu271lBgNIYX0lOnuJ+Fqh86lE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20002},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"e1480e9e55cc4a3a2c3c858ada0e09904d02ca8c","scripts":{"start":"node server.js"},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"repository":{"url":"git+https://github.com/9527crazy/gitlab-mcp.git","type":"git"},"_npmVersion":"10.5.0","description":"MCP (Model Context Protocol) server for GitLab: list projects, commits, files, merge requests; list/create/update/delete issues and issue notes; list/get/create/update/delete wiki pages.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"axios":"^1.13.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp_1.0.3_1773303179672_0.28116624492315156","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.4","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","_id":"@butterfly-liu/gitlab-mcp@1.0.4","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"bin":{"gitlab-mcp":"server.js"},"dist":{"shasum":"cd3802812f31457e81327db1c649c631c892c0a0","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.4.tgz","fileCount":3,"integrity":"sha512-IY4ITwbSNakgbcmW0SqRqMOhmfEu15xmPekxq3Datj6V/y3ULGh2Q5yG0gc+X/W+XS5AwZOqw4nmppMZ8e6hDw==","signatures":[{"sig":"MEYCIQD2+9WB7VTBo+mDyMRn19HLXa6c2AokCpYSG+IxRF+m6gIhAN9dYSQmqLwpYdbq822UyEb+R9HsrI/EMOs4WTURQYKw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25177},"main":"server.js","type":"module","engines":{"node":">=18"},"gitHead":"1a3f8e0b7cac2c7d8f051f4b20c1c796a00b3999","scripts":{"start":"node server.js"},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"repository":{"url":"git+https://github.com/9527crazy/gitlab-mcp.git","type":"git"},"_npmVersion":"10.5.0","description":"MCP (Model Context Protocol) server for GitLab: list projects, commits, files, merge requests; list/create/update/delete issues and issue notes; list/get/create/update/delete wiki pages.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"axios":"^1.13.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp_1.0.4_1777537377347_0.9969258786972479","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@butterfly-liu/gitlab-mcp","version":"1.0.5","description":"MCP (Model Context Protocol) server for GitLab: list/create/update projects, commits, files; list/create/update/merge merge requests and notes; list/create/update/delete issues and issue notes; list/get/create/update/delete wiki pages.","type":"module","main":"server.js","bin":{"gitlab-mcp":"server.js"},"scripts":{"start":"node server.js"},"keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/9527crazy/gitlab-mcp.git"},"bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"homepage":"https://github.com/9527crazy/gitlab-mcp#readme","engines":{"node":">=18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","axios":"^1.13.6"},"_id":"@butterfly-liu/gitlab-mcp@1.0.5","gitHead":"49b7ddb57695ed5694dcf79d4e8bec040a4255a2","_nodeVersion":"21.7.3","_npmVersion":"10.5.0","dist":{"integrity":"sha512-MV9OHWMB6TDRbHA692H1ko6VshQQuO2MMEa1i/vAg7t4h9iFXkAddb88SnTS4jTloneQALIgNlL97Uf8BbOYBg==","shasum":"6efa29c506753b5475a8db78bb21ba3f53b75d54","tarball":"https://registry.npmjs.org/@butterfly-liu/gitlab-mcp/-/gitlab-mcp-1.0.5.tgz","fileCount":3,"unpackedSize":36764,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDaOBRncnc8u6/kRHf3iZht99XTiJuu+F0cOmur2/RMVAiEAiQSqbqcDkeB+anE+9Q6Y03aGuZt3dlHMvAEPTCf/HRc="}]},"_npmUser":{"name":"butterfly-liu","email":"2840161508@qq.com"},"directories":{},"maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gitlab-mcp_1.0.5_1780555540147_0.6173552690906106"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T04:02:13.369Z","modified":"2026-06-04T06:45:40.395Z","1.0.0":"2026-03-10T04:02:13.653Z","1.0.1":"2026-03-10T04:05:04.199Z","1.0.2":"2026-03-10T07:12:39.071Z","1.0.3":"2026-03-12T08:12:59.802Z","1.0.4":"2026-04-30T08:22:57.520Z","1.0.5":"2026-06-04T06:45:40.284Z"},"bugs":{"url":"https://github.com/9527crazy/gitlab-mcp/issues"},"author":{"name":"liu2840161508@gmail.com"},"license":"ISC","homepage":"https://github.com/9527crazy/gitlab-mcp#readme","keywords":["mcp","model-context-protocol","gitlab","cursor","claude","api"],"repository":{"type":"git","url":"git+https://github.com/9527crazy/gitlab-mcp.git"},"description":"MCP (Model Context Protocol) server for GitLab: list/create/update projects, commits, files; list/create/update/merge merge requests and notes; list/create/update/delete issues and issue notes; list/get/create/update/delete wiki pages.","maintainers":[{"name":"butterfly-liu","email":"2840161508@qq.com"}],"readme":"# GitLab MCP\n\n[Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for GitLab. Exposes GitLab projects, commits, files, merge requests, issues, and wiki pages as MCP tools for use in Cursor, Claude Desktop, or other MCP clients.\n\n## Features\n\n- **list_projects** — List all GitLab projects (membership-based, up to 100)\n- **create_project** — Create a new GitLab project\n- **update_project** — Update an existing GitLab project\n- **list_commits** — List repository commits for a project\n- **get_contribution_activity** — Get a user's contribution heatmap activity aggregated by day\n- **get_file** — Get file content from a project at a given ref (branch/tag/commit)\n- **list_merge_requests** — List merge requests for a project\n- **create_merge_request** — Create/submit a merge request\n- **get_merge_request** — Get a single merge request by project and MR IID\n- **update_merge_request** — Update a merge request\n- **merge_merge_request** — Accept/merge a merge request\n- **add_merge_request_note** — Add a comment/note to a merge request\n- **list_merge_request_notes** — List notes/comments of a merge request\n- **list_issues** — List issues for a project (optional: state, labels, iids)\n- **create_issue** — Create an issue in a project\n- **get_issue** — Get a single issue by project and issue IID\n- **update_issue** — Update an issue (title, description, state_event, labels, assignees, etc.)\n- **delete_issue** — Delete an issue from a project\n- **add_issue_note** — Add a comment/note to an issue\n- **list_issue_notes** — List notes/comments of an issue\n- **list_wiki_pages** — List all wiki pages of a project\n- **get_wiki_page** — Get a single wiki page by slug\n- **create_wiki_page** — Create a new wiki page\n- **update_wiki_page** — Update an existing wiki page\n- **delete_wiki_page** — Delete a wiki page\n\n## Requirements\n\n- Node.js 18+\n- GitLab instance (self-hosted or GitLab.com)\n- GitLab [Personal Access Token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) or [Project/Group Access Token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) with `read_api` for read operations, `read_user` or `api` for contribution activity, and `api` for creating/updating projects (Maintainer+ on the target namespace or project), creating/updating/merging merge requests, creating/updating/deleting issues, adding notes, and managing wiki pages\n\n## Installation\n\nFrom npm :\n\n```bash\nnpm install -g @butterfly-liu/gitlab-mcp\n# or as project dependency\nnpm install @butterfly-liu/gitlab-mcp\n```\n\nOr clone and install locally:\n\n```bash\ngit clone https://github.com/9527crazy/gitlab-mcp.git && cd gitlab-mcp && npm install\n```\n\n## Configuration\n\n**Required:** Set `GITLAB_TOKEN` in your environment or MCP client config. The server will exit with an error if it is missing.\n\n| Variable       | Description                         | Default           |\n|----------------|-------------------------------------|-------------------|\n| `GITLAB_URL`   | GitLab base URL (no trailing slash) | `https://gitlab.com` |\n| `GITLAB_TOKEN` | API token (e.g. `glpat-xxxx`)       | *required*        |\n\nExample:\n\n```bash\nexport GITLAB_URL=\"https://gitlab.com\"\nexport GITLAB_TOKEN=\"glpat-your-token-here\"\n```\n\n**Security:** Do not commit real tokens. Use environment variables or a secrets manager.\n\n## Usage\n\n### Run directly\n\n```bash\nnode server.js\n# or if installed globally\ngitlab-mcp\n```\n\nOr in a project with `npm start` or `npx gitlab-mcp`.\n\nThe server uses stdio transport and is intended to be launched by an MCP client (e.g. Cursor MCP settings).\n\n### Cursor configuration\n\nAdd to Cursor MCP settings (e.g. `~/.cursor/mcp.json` or project MCP config).\n\nWhen installed from npm (global or local `node_modules`):\n\n```json\n{\n  \"mcpServers\": {\n    \"gitlab\": {\n      \"command\": \"npx\",\n      \"args\": [\"@butterfly-liu/gitlab-mcp\"],\n      \"env\": {\n        \"GITLAB_URL\": \"https://gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\"\n      }\n    }\n  }\n}\n```\n\nOr with explicit path to `server.js`:\n\n```json\n{\n  \"mcpServers\": {\n    \"gitlab\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/gitlab-mcp/server.js\"],\n      \"env\": {\n        \"GITLAB_URL\": \"https://gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\"\n      }\n    }\n  }\n}\n```\n\n## Tools Reference\n\n| Tool                   | Parameters                                      | Description |\n|------------------------|--------------------------------------------------|-------------|\n| `list_projects`        | —                                               | List projects (membership, per_page=100) |\n| `create_project`       | `name`, *optional:* `path`, `namespace_id`, `description`, `visibility`, `initialize_with_readme`, `default_branch`, `topics`, `import_url` | Create a new project. Do not set `import_url` and `initialize_with_readme` together |\n| `update_project`       | `project_id` (number or path), *optional:* `name`, `path`, `description`, `visibility`, `default_branch`, `topics`, `archived` | Update a project (at least one optional field). Requires Maintainer or Owner |\n| `list_commits`         | `project_id` (number)                            | List commits for project |\n| `get_contribution_activity` | *optional:* `user_id`, `after`, `before`, `action`, `target_type`, `include_events`, `max_pages` | Get contribution heatmap activity aggregated by day. Defaults to the authenticated user and the last 12 months |\n| `get_file`             | `project_id`, `file_path`, `ref`                 | Get file content at ref |\n| `list_merge_requests`  | `project_id` (number), *optional:* `state`, `source_branch`, `target_branch`, `author_id`, `assignee_id`, `reviewer_id`, `labels`, `search`, `iids` | List MRs for project |\n| `create_merge_request` | `project_id`, `source_branch`, `target_branch`, `title`, *optional:* `description`, `target_project_id`, `assignee_id`, `assignee_ids`, `reviewer_ids`, `labels`, `milestone_id`, `remove_source_branch`, `squash`, `allow_collaboration`, `draft` | Create/submit a merge request |\n| `get_merge_request`    | `project_id`, `merge_request_iid`                 | Get a single MR |\n| `update_merge_request` | `project_id`, `merge_request_iid`, *optional:* `target_branch`, `title`, `description`, `state_event`, `assignee_id`, `assignee_ids`, `reviewer_ids`, `labels`, `add_labels`, `remove_labels`, `milestone_id`, `remove_source_branch`, `squash`, `discussion_locked`, `allow_collaboration` | Update an MR |\n| `merge_merge_request`  | `project_id`, `merge_request_iid`, *optional:* `merge_commit_message`, `squash_commit_message`, `squash`, `should_remove_source_branch`, `auto_merge`, `merge_when_pipeline_succeeds`, `sha` | Accept/merge an MR. `merge_when_pipeline_succeeds` is deprecated by GitLab 17.11; prefer `auto_merge` on newer GitLab versions |\n| `add_merge_request_note` | `project_id`, `merge_request_iid`, `body`       | Add a comment/note to an MR |\n| `list_merge_request_notes` | `project_id`, `merge_request_iid`             | List notes/comments of an MR |\n| `list_issues`          | `project_id` (number), *optional:* `state`, `labels`, `iids` | List issues for project |\n| `create_issue`         | `project_id`, `title`, *optional:* `description`, `labels`, `assignee_ids`, `due_date`, `confidential`, `issue_type` | Create an issue |\n| `get_issue`            | `project_id`, `issue_iid`                        | Get a single issue |\n| `update_issue`         | `project_id`, `issue_iid`, *optional:* `title`, `description`, `state_event`, `labels`, `add_labels`, `remove_labels`, `assignee_ids`, `due_date`, `milestone_id`, `confidential`, `discussion_locked`, `issue_type` | Update an issue |\n| `delete_issue`         | `project_id`, `issue_iid`                        | Delete an issue |\n| `add_issue_note`       | `project_id`, `issue_iid`, `body`                | Add a comment/note to an issue |\n| `list_issue_notes`     | `project_id`, `issue_iid`                        | List notes/comments of an issue |\n| `list_wiki_pages`      | `project_id` (number), *optional:* `with_content` | List all wiki pages of a project |\n| `get_wiki_page`        | `project_id`, `slug`, *optional:* `render_html`, `version` | Get a single wiki page by slug |\n| `create_wiki_page`     | `project_id`, `title`, `content`, *optional:* `format` | Create a new wiki page |\n| `update_wiki_page`     | `project_id`, `slug`, *optional:* `title`, `content`, `format` | Update an existing wiki page (at least title or content) |\n| `delete_wiki_page`     | `project_id`, `slug`                             | Delete a wiki page |\n\nProject IDs are numeric. Wiki page slug is the URL-friendly identifier (e.g. from title; use the slug returned by create/list/get). Issue IID and merge request IID are project-internal numbers (e.g. issue `#3` -> `issue_iid: 3`, MR `!7` -> `merge_request_iid: 7`).\n\n---\n\n## Publishing to npm (maintainers)\n\n**Note:** The unscoped name `gitlab-mcp` is already taken on npm. Publish under a scoped name, e.g. `@butterfly-liu/gitlab-mcp`.\n\nBefore first publish:\n\n1. **Set package name** in `package.json`: Package name is `@butterfly-liu/gitlab-mcp` (use your npm username as scope if different).\n2. **Fill repo URLs** in `package.json`: Replace `your-username` in `repository`, `bugs`, and `homepage` with your GitHub/GitLab username or org.\n3. **Login**: `npm login` (create account at [npmjs.com](https://www.npmjs.com/) if needed).\n4. **Preview tarball**: `npm pack --dry-run` — only `server.js` and `README.md` are included (see `files` in package.json).\n5. **Publish**: `npm publish --access public` (required for scoped packages to be installable by everyone).\n\nAfter code changes: bump `version` (e.g. `npm version patch`) then `npm publish --access public`.\n\n## License\n\nISC\n","readmeFilename":"README.md"}