{"_id":"@carmeloricarte/gitlab-mcp-server","_rev":"6-55d5aa83ef6c9b5cb9342ece7fdea0c7","name":"@carmeloricarte/gitlab-mcp-server","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","_id":"@carmeloricarte/gitlab-mcp-server@1.0.0","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"dist":{"shasum":"a7e577767c81193310c953de48211d5004c71117","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.0.0.tgz","fileCount":26,"integrity":"sha512-DwlLBMDTV2VYzbk6qgvdhBjz3n0Gej9ezz2DeWmevDjhAv4v0uYfNeZtRDbtYzLGvoXmiBHNbnU2B4Dv1Rg8pQ==","signatures":[{"sig":"MEYCIQCagvkXFOXoVxgWGl9EEdpr95TtUvx8k/T2cUSx4OzSdQIhAJga1N+aWcWUzQfunq+X/9lmkGdurd93fd8hadH1mbeT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87453},"type":"module","module":"index.ts","gitHead":"69c538e668dd818e3996c5703ba0888478f47cfa","private":false,"scripts":{"dev":"bun run --watch index.ts","test":"bun test","start":"bun run index.ts","typecheck":"tsc --noEmit","test:watch":"bun test --watch","test:coverage":"bun test --coverage"},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"repository":{"url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp-server_1.0.0_1770138069067_0.4014471055974791","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.0.1","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","_id":"@carmeloricarte/gitlab-mcp-server@1.0.1","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"bin":{"gitlab-mcp-server":"dist/index.js"},"dist":{"shasum":"325f9b416cc78b6d6a9aa03bcd6e885c0c0b232f","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.0.1.tgz","fileCount":3,"integrity":"sha512-1W7hHq7iromVwOSvZ7jBp519z+vDFBoXRzZu2oaS/xwRTnFFVZ6WmpjlDOCNPfcVNJEwnWmxdo7iG22USkzNsw==","signatures":[{"sig":"MEUCIQCmW16R7mxRBhe7eoL7Io6cCcqL17ud1wAPzS/M2mbl4wIgCV1IovxemPnrfJkFo0Kg/btDiRPzqSd7eQMDs4OffpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998068},"type":"module","module":"index.ts","gitHead":"7209de67fd5927674e7490790a68cfd59f739d65","private":false,"scripts":{"dev":"bun run --watch index.ts","test":"bun test","build":"bun build index.ts --outdir dist --target node","start":"bun run index.ts","typecheck":"tsc --noEmit","test:watch":"bun test --watch","add-shebang":"node scripts/add-shebang.js","test:coverage":"bun test --coverage","prepublishOnly":"bun run build && bun run add-shebang"},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"repository":{"url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp-server_1.0.1_1770141462341_0.6630826544761075","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.0.2","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","_id":"@carmeloricarte/gitlab-mcp-server@1.0.2","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"bin":{"gitlab-mcp-server":"dist/index.js"},"dist":{"shasum":"50f4bae1b0f99586a8a07738fc5666ab8fdf6217","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.0.2.tgz","fileCount":3,"integrity":"sha512-n3tRgFrOS3zj4QxCNv5Ol3/KVi+9lmoMzJF0o0h+ifkWhAgjSSWgxXt6vCIK9uksBup2ZclqJ1t5Z5DXzP2jQg==","signatures":[{"sig":"MEUCIGQKCLzpZ+5HmP9NWuj5zqFxqENnV7EivKWF2eGl4QeJAiEAscTdj+Px2xf/rVnRAIiL/owUMeOY6YokmS+hVzaMhBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998494},"type":"module","module":"index.ts","gitHead":"b80c3e3ae77c450285376f4a7fa6eaf5f784fccb","private":false,"scripts":{"dev":"bun run --watch index.ts","test":"bun test","build":"bun build index.ts --outdir dist --target node","start":"bun run index.ts","typecheck":"tsc --noEmit","test:watch":"bun test --watch","add-shebang":"node scripts/add-shebang.js","test:coverage":"bun test --coverage","prepublishOnly":"bun run build && bun run add-shebang"},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"repository":{"url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp-server_1.0.2_1770144428627_0.15755395312928155","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.0.3","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","_id":"@carmeloricarte/gitlab-mcp-server@1.0.3","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"bin":{"gitlab-mcp-server":"dist/index.js"},"dist":{"shasum":"f2158309de4d9efb7afcab5da1d34a845114e0db","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.0.3.tgz","fileCount":3,"integrity":"sha512-ct7Co5WgjUH0cXWjeUPdZhr04kRolqFmF82Br/rAXEfTCH7d6U9xvN0cU2FUQra3ot9Wjggq96ISWvDU8MWuQA==","signatures":[{"sig":"MEUCIQCTlC/m8VigKjc41fyMtcknfNuE0HEI1RpcRLIhBFQ4sQIgMBG6wg2d0Acm7f4YRCtMTG/EHgR0jONzPgdqAVebl4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":999986},"type":"module","module":"index.ts","gitHead":"2af4fab1f36af1f87610839d3f5e1fd8d1bbf0e0","private":false,"scripts":{"dev":"bun run --watch index.ts","lint":"biome lint .","test":"bun test","build":"bun build index.ts --outdir dist --target node","check":"biome check .","start":"bun run index.ts","format":"biome format --write .","lint:fix":"biome lint --write .","check:fix":"biome check --write .","typecheck":"tsc --noEmit","test:watch":"bun test --watch","add-shebang":"node scripts/add-shebang.js","test:coverage":"bun test --coverage","prepublishOnly":"bun run build && bun run add-shebang"},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"repository":{"url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@biomejs/biome":"^2.3.14"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp-server_1.0.3_1770287381120_0.616635243969742","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.0.4","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","_id":"@carmeloricarte/gitlab-mcp-server@1.0.4","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"bin":{"gitlab-mcp-server":"dist/index.js"},"dist":{"shasum":"bc8bb490a2407690bdeaf1121600b07dc6852aff","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.0.4.tgz","fileCount":3,"integrity":"sha512-1B9dlKveBpNCNAYXDjMkUAKpJFec9iT9YlV4Wwc0s3UYOUuVzCaTtAkBb1r8svHWnfHNQu7psHCuZO8ECHGcXw==","signatures":[{"sig":"MEUCIQDhnoQWbecCefMsI+nGZQcb8wv6zhwUlqpJKHOSy38NRAIgZjADCxeMoEQUM7AK/yRK0SNvbOf+5ybACBEwD0eYs5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1000260},"type":"module","module":"index.ts","gitHead":"063891a96e09ae02a4ef2ac930fa696af8593bc0","private":false,"scripts":{"dev":"bun run --watch index.ts","lint":"biome lint .","test":"bun test","build":"bun build index.ts --outdir dist --target node","check":"biome check .","start":"bun run index.ts","format":"biome format --write .","lint:fix":"biome lint --write .","check:fix":"biome check --write .","typecheck":"tsc --noEmit","test:watch":"bun test --watch","add-shebang":"node scripts/add-shebang.js","test:coverage":"bun test --coverage","prepublishOnly":"bun run build && bun run add-shebang"},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"repository":{"url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git","type":"git"},"_npmVersion":"11.8.0","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@biomejs/biome":"^2.3.14"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/gitlab-mcp-server_1.0.4_1770635041197_0.5489368508277801","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@carmeloricarte/gitlab-mcp-server","version":"1.1.0","description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git"},"homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"module":"index.ts","type":"module","bin":{"gitlab-mcp-server":"dist/index.js"},"private":false,"scripts":{"start":"bun run index.ts","dev":"bun run --watch index.ts","build":"bun build index.ts --outdir dist --target node","test":"bun test","typecheck":"tsc --noEmit","lint":"biome lint .","lint:fix":"biome lint --write .","format":"biome format --write .","check":"biome check .","check:fix":"biome check --write .","test:watch":"bun test --watch","test:coverage":"bun test --coverage","add-shebang":"node scripts/add-shebang.js","prepublishOnly":"bun run build && bun run add-shebang"},"devDependencies":{"@biomejs/biome":"^2.3.14","@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","zod":"^4.3.6"},"gitHead":"68eb2bfbdd906911f8b0f7e49c2f34f432adfa49","_id":"@carmeloricarte/gitlab-mcp-server@1.1.0","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-0e9sGn6QoUiX2JvkY+q0BlKBDQUd/GNfx6MFbPUjxLSinlaGd7YnjyKUnaMZpanuhuUuOEwMxvbylUHEhm6zBw==","shasum":"fc524ae82ea777341f3b76254f40849827b13fc5","tarball":"https://registry.npmjs.org/@carmeloricarte/gitlab-mcp-server/-/gitlab-mcp-server-1.1.0.tgz","fileCount":3,"unpackedSize":999641,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICFAtXmZvg+PwCsMSWIHfGAMRYsdalIC1lsAL7Ol/W1aAiEAlgmGuG9oFnXBW9nqX8nLLvTux9g3MJUFR8ehEaZ6xj0="}]},"_npmUser":{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"},"directories":{},"maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gitlab-mcp-server_1.1.0_1771583203109_0.3274421799608882"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-03T17:01:08.864Z","modified":"2026-02-20T10:26:43.432Z","1.0.0":"2026-02-03T17:01:09.222Z","1.0.1":"2026-02-03T17:57:42.551Z","1.0.2":"2026-02-03T18:47:08.771Z","1.0.3":"2026-02-05T10:29:41.334Z","1.0.4":"2026-02-09T11:04:01.409Z","1.1.0":"2026-02-20T10:26:43.325Z"},"bugs":{"url":"https://github.com/CarmeloRicarte/gitlab-mcp-server/issues"},"author":{"name":"Carmelo Ricarte Rocamora"},"license":"MIT","homepage":"https://github.com/CarmeloRicarte/gitlab-mcp-server#readme","keywords":["mcp","model-context-protocol","gitlab","claude","claude-code","ai","llm","anthropic","devops","git","merge-requests","issues","pipelines","ci-cd","api","integration","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/CarmeloRicarte/gitlab-mcp-server.git"},"description":"Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants. Provides tools to interact with GitLab API: manage issues, merge requests, pipelines, projects and repositories.","maintainers":[{"name":"carmeloricarte","email":"carmeloricarterocamora@gmail.com"}],"readme":"# GitLab MCP Server\n\n[![npm version](https://img.shields.io/npm/v/@carmeloricarte/gitlab-mcp-server.svg)](https://www.npmjs.com/package/@carmeloricarte/gitlab-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Model Context Protocol (MCP) server for GitLab integration with Claude Code and AI assistants.\n\n## Features\n\n- **Projects**: List and get project details\n- **Branches**: List and create branches\n- **Issues**: Create and list issues\n- **Merge Requests**: Create and list MRs\n- **Files**: Read and write repository files\n- **Search**: Search code in repositories\n\n## Requirements\n\n- [Bun](https://bun.sh/) >= 1.0 **or** [Node.js](https://nodejs.org/) >= 18\n- GitLab Personal Access Token with `api` scope\n\n## Installation\n\nThe server is published on npm and can be run directly:\n\n```bash\n# Using Bun (recommended)\nbunx @carmeloricarte/gitlab-mcp-server\n\n# Using Node.js\nnpx @carmeloricarte/gitlab-mcp-server\n```\n\nNo need to clone the repository or install dependencies manually.\n\n## Configuration\n\nSet the following environment variables:\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `GITLAB_TOKEN` | Yes | - | GitLab Personal Access Token |\n| `GITLAB_HOST` | No | `https://gitlab.com` | GitLab instance URL |\n\nFor self-hosted GitLab with self-signed certificates:\n```bash\nexport NODE_TLS_REJECT_UNAUTHORIZED=0\n```\n\n## Environment Variables Setup\n\nThere are two approaches to configure credentials:\n\n### Option A: Variables in MCP Config (Simplest)\n\nPass all variables directly in the MCP configuration. Easiest for quick setup on new machines.\n\n> ⚠️ **Note**: Token is stored in the config file (local, private). Acceptable for personal use.\n\n### Option B: System Environment Variables (More Secure)\n\nKeep sensitive tokens at system/user level, only pass non-sensitive values in MCP config.\n\n<details>\n<summary><strong>Windows (PowerShell)</strong></summary>\n\n```powershell\n# Set permanently for current user\n[Environment]::SetEnvironmentVariable(\"GITLAB_TOKEN\", \"glpat-your-token\", \"User\")\n[Environment]::SetEnvironmentVariable(\"GITLAB_HOST\", \"https://your-gitlab.com\", \"User\")\n\n# Verify\n[Environment]::GetEnvironmentVariable(\"GITLAB_TOKEN\", \"User\")\n```\n\n> Restart your terminal/IDE after setting variables.\n\n</details>\n\n<details>\n<summary><strong>macOS / Linux</strong></summary>\n\n```bash\n# Add to ~/.zshrc (macOS) or ~/.bashrc (Linux)\necho 'export GITLAB_TOKEN=\"glpat-your-token\"' >> ~/.zshrc\necho 'export GITLAB_HOST=\"https://your-gitlab.com\"' >> ~/.zshrc\n\n# Reload\nsource ~/.zshrc\n\n# Verify\necho $GITLAB_TOKEN\n```\n\n</details>\n\n---\n\n## IDE / Tool Configuration\n\n> 💡 **Tip**: Use `bunx` if you have Bun installed, or `npx` for Node.js. Both work identically.\n\n> ⚠️ **Important**: `${VARIABLE}` syntax does NOT work in most MCP configs - values are treated as literal strings, not resolved. Use Option A (hardcoded values) or Option B (system variables that the server reads from `process.env`).\n\n### ⚠️ Windows Configuration\n\nOn Windows, you must wrap `npx` or `bunx` commands with `cmd /c`. Use this format:\n\n```json\n{\n  \"command\": \"cmd\",\n  \"args\": [\"/c\", \"npx\", \"-y\", \"@carmeloricarte/gitlab-mcp-server\"]\n}\n```\n\nOr with Bun:\n\n```json\n{\n  \"command\": \"cmd\",\n  \"args\": [\"/c\", \"bunx\", \"@carmeloricarte/gitlab-mcp-server\"]\n}\n```\n\n> **Important:** The package name must always be the **last argument** in the args array.\n\n---\n\n### Claude Code CLI\n\n<details>\n<summary><strong>Option A: All variables in config</strong></summary>\n\n```bash\nclaude mcp add-json GitLab '{\n  \"type\": \"stdio\",\n  \"command\": \"bunx\",\n  \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n  \"env\": {\n    \"GITLAB_HOST\": \"https://your-gitlab.com\",\n    \"GITLAB_TOKEN\": \"glpat-your-token\",\n    \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n  }\n}'\n```\n\n</details>\n\n<details>\n<summary><strong>Option B: Token from system env</strong></summary>\n\nSet `GITLAB_TOKEN` as system variable (see above), then:\n\n```bash\nclaude mcp add-json GitLab '{\n  \"type\": \"stdio\",\n  \"command\": \"bunx\",\n  \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n  \"env\": {\n    \"GITLAB_HOST\": \"https://your-gitlab.com\",\n    \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n  }\n}'\n```\n\n</details>\n\n**Verify:**\n```bash\nclaude mcp list\n# Expected: GitLab: bunx ... - ✓ Connected\n```\n\n---\n\n### VS Code (with MCP extension)\n\nEdit `~/.vscode/mcp.json` or `.vscode/mcp.json` in your project:\n\n```json\n{\n  \"servers\": {\n    \"GitLab\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n      \"env\": {\n        \"GITLAB_HOST\": \"https://your-gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\",\n        \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Cursor\n\nEdit `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"GitLab\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n      \"env\": {\n        \"GITLAB_HOST\": \"https://your-gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\",\n        \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Zed\n\nEdit `~/.config/zed/settings.json` (macOS/Linux) or `%APPDATA%\\Zed\\settings.json` (Windows):\n\n```json\n{\n  \"context_servers\": {\n    \"GitLab\": {\n      \"command\": {\n        \"path\": \"bunx\",\n        \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n        \"env\": {\n          \"GITLAB_HOST\": \"https://your-gitlab.com\",\n          \"GITLAB_TOKEN\": \"glpat-your-token\",\n          \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n        }\n      }\n    }\n  }\n}\n```\n\n---\n\n### OpenCode\n\nEdit `~/.config/opencode/config.json`:\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"GitLab\": {\n        \"type\": \"stdio\",\n        \"command\": \"bunx\",\n        \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n        \"env\": {\n          \"GITLAB_HOST\": \"https://your-gitlab.com\",\n          \"GITLAB_TOKEN\": \"glpat-your-token\",\n          \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n        }\n      }\n    }\n  }\n}\n```\n\n---\n\n### Codex (OpenAI CLI)\n\nEdit `~/.codex/config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"GitLab\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n      \"env\": {\n        \"GITLAB_HOST\": \"https://your-gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\",\n        \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Windsurf\n\nEdit `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"GitLab\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n      \"env\": {\n        \"GITLAB_HOST\": \"https://your-gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\",\n        \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Claude Desktop\n\nEdit the Claude Desktop config file:\n\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"GitLab\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@carmeloricarte/gitlab-mcp-server\"],\n      \"env\": {\n        \"GITLAB_HOST\": \"https://your-gitlab.com\",\n        \"GITLAB_TOKEN\": \"glpat-your-token\",\n        \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools\n\n### Projects\n- `list_projects` - List accessible GitLab projects\n- `get_project` - Get details of a specific project\n\n### Branches\n- `list_branches` - List branches in a project\n- `create_branch` - Create a new branch\n\n### Issues\n- `create_issue` - Create a new issue\n- `list_issues` - List issues in a project\n\n### Merge Requests\n- `create_merge_request` - Create a merge request\n- `list_merge_requests` - List merge requests\n\n### Files\n- `get_file` - Get file contents from repository\n- `create_or_update_file` - Create or update a file\n\n### Search\n- `search_code` - Search for code in a project\n\n## Development\n\nIf you want to contribute or run the server locally for development:\n\n### Clone and Install\n\n```bash\ngit clone https://github.com/CarmeloRicarte/gitlab-mcp-server.git\ncd gitlab-mcp-server\nbun install\n```\n\n### Project Structure\n\n```\nsrc/\n├── index.ts              # Entry point\n├── server.ts             # MCP server setup\n├── config.ts             # Environment configuration\n├── client/\n│   └── gitlab-client.ts  # GitLab API client\n├── tools/\n│   ├── index.ts          # Tool registration\n│   ├── projects.ts\n│   ├── branches.ts\n│   ├── issues.ts\n│   ├── merge-requests.ts\n│   ├── files.ts\n│   └── search.ts\n└── types/\n    └── gitlab.ts         # TypeScript types\nscripts/\n└── add-shebang.js        # Adds Node shebang to compiled output\ntests/\n├── setup.ts              # Test utilities & mocks\n├── client/\n│   └── gitlab-client.test.ts\n└── tools/\n    └── *.test.ts\n```\n\n### Run Server\n\n```bash\nbun run start\n# or with hot reload\nbun run dev\n```\n\n### Run Tests\n\n```bash\n# Run all tests\nbun test\n\n# Run with watch mode\nbun test:watch\n\n# Run with coverage\nbun test:coverage\n```\n\n### Type Check\n\n```bash\nbun run typecheck\n```\n\n### Build\n\n```bash\n# Build for production (compiles to dist/index.js with Node.js compatibility)\nbun run build\n\n# Add shebang to compiled output (done automatically on publish)\nbun run add-shebang\n```\n\n### Publish\n\nPublishing to npm is automated via `prepublishOnly`:\n\n```bash\nnpm version patch  # or minor/major\nnpm publish\n```\n\nThis automatically:\n1. Compiles TypeScript to JavaScript (`bun run build`)\n2. Adds `#!/usr/bin/env node` shebang (`bun run add-shebang`)\n\n## Architecture\n\nThe server uses dependency injection for the GitLab client, making it easy to mock in tests:\n\n```typescript\nimport { GitLabClient } from \"./src/client/gitlab-client\";\nimport { createServer } from \"./src/server\";\n\n// For testing with a mock client\nconst mockClient = new GitLabClient({\n  apiBase: \"https://mock.gitlab.com/api/v4\",\n  token: \"test-token\",\n});\nconst server = createServer(mockClient);\n```\n\n## Contributing\n\nContributions are welcome! Feel free to open issues and pull requests.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'feat: add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nPlease make sure to:\n- Follow the existing code style\n- Add tests for new features\n- Update documentation as needed\n\n## License\n\nMIT\n","readmeFilename":"README.md"}