{"_id":"@archisbhoir/gitlabmcp","_rev":"5-631a7008b671d455d50bfddccc3fdb21","name":"@archisbhoir/gitlabmcp","dist-tags":{"latest":"1.1.3"},"versions":{"0.1.0":{"name":"@archisbhoir/gitlabmcp","version":"0.1.0","keywords":["gitlab","mcp","merge-request"],"author":"","license":"MIT","_id":"@archisbhoir/gitlabmcp@0.1.0","maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"bin":{"gitlabmcp":"dist/server.js","gitlabmcp-http":"dist/server-http.js"},"dist":{"shasum":"8525e1d4626bafa8353868dd218bbef3c541ed8c","tarball":"https://registry.npmjs.org/@archisbhoir/gitlabmcp/-/gitlabmcp-0.1.0.tgz","fileCount":82,"integrity":"sha512-unzOi7uFNukbj7l5Mgjm1inSDEcjIa7S1zYXFT6yYbq63+2fUf7GpzzqqV4NZi0xLdnUxWluu44zmD+EsCDx8w==","signatures":[{"sig":"MEQCIBfrp3e//V5yaEv8RsSyTvFXFkeo7EDqdpr++8KjYk01AiA8R06M36flqe9CaXKsgd+1i6LbRpAjUTv3sKQa/SeI+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191097},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"49feb34f4316ce554ff7de0e4a8fc7bc83b80ebc","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node dist/server.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:e2e":"vitest run src/api/__tests__/e2e.test.ts","test:unit":"vitest run --exclude '**/e2e.test.ts'","typecheck":"tsc --noEmit","start:http":"node dist/server-http.js","test:watch":"vitest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"},"_npmVersion":"10.9.2","description":"GitLab Merge Request Viewer via MCP","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dotenv":"^16.4.5","express":"^4.18.2","lru-cache":"^11.0.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.4.0","eslint":"^8.56.0","vitest":"^1.2.1","prettier":"^3.2.4","typescript":"^5.3.3","@types/node":"^20.11.5","@types/express":"^4.17.21","@vitest/coverage-v8":"^1.2.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^6.19.1","@typescript-eslint/eslint-plugin":"^6.19.1"},"_npmOperationalInternal":{"tmp":"tmp/gitlabmcp_0.1.0_1763613318311_0.9491867517419064","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@archisbhoir/gitlabmcp","version":"1.0.0","keywords":["gitlab","mcp","merge-request"],"author":"","license":"MIT","_id":"@archisbhoir/gitlabmcp@1.0.0","maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"bin":{"gitlabmcp":"dist/server.js","gitlab-mcp":"dist/cli.js","gitlabmcp-http":"dist/server-http.js"},"dist":{"shasum":"9155f66c1f27662380298882c0bf30acbdc910c3","tarball":"https://registry.npmjs.org/@archisbhoir/gitlabmcp/-/gitlabmcp-1.0.0.tgz","fileCount":94,"integrity":"sha512-nKHai4qIqzUS87XIafbvdHWlJbaKgfI8zCc9vRhCGL3B6C2tYdvEWkq5CROARxBWlGDf5dhCNuyTUlavUOMhVQ==","signatures":[{"sig":"MEUCIG6TW9agwynU5MWBjZX4yTfdm3C0HIaIR4y/rGuWA0NpAiEAmtGh5PtfuGVQTIIN6+qNSgDu5dIxpbU8TOcGOBhXlKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228394},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ab8d597e68eaaec08b3ba1d9a69e248b63b95d78","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node dist/server.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:e2e":"vitest run src/api/__tests__/e2e.test.ts","test:unit":"vitest run --exclude '**/e2e.test.ts'","typecheck":"tsc --noEmit","start:http":"node dist/server-http.js","test:watch":"vitest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"},"_npmVersion":"10.9.2","description":"GitLab Merge Request Viewer via MCP","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dotenv":"^16.4.5","express":"^4.18.2","lru-cache":"^11.0.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.4.0","eslint":"^8.56.0","vitest":"^1.2.1","prettier":"^3.2.4","typescript":"^5.3.3","@types/node":"^20.11.5","@types/express":"^4.17.21","@vitest/coverage-v8":"^1.2.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^6.19.1","@typescript-eslint/eslint-plugin":"^6.19.1"},"_npmOperationalInternal":{"tmp":"tmp/gitlabmcp_1.0.0_1763697467932_0.30874212918804855","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@archisbhoir/gitlabmcp","version":"1.1.0","keywords":["gitlab","mcp","merge-request"],"author":"","license":"MIT","_id":"@archisbhoir/gitlabmcp@1.1.0","maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"bin":{"gitlabmcp":"dist/server.js","gitlab-mcp":"dist/cli.js","gitlabmcp-http":"dist/server-http.js"},"dist":{"shasum":"a30a281e2bda6d3a9f904514d2f34037ac813ada","tarball":"https://registry.npmjs.org/@archisbhoir/gitlabmcp/-/gitlabmcp-1.1.0.tgz","fileCount":98,"integrity":"sha512-3blAR2COeZyXSogqx8JqpZYgl+6qjXiq2rTqsFNNOvp174sqb0DxUTVbYwWLc44DrkMXjcawPmGikL0+CvhD7Q==","signatures":[{"sig":"MEUCIASK1oQ6AgnAtyjMm63S5FHyGvahia86PcKmVcrwrdXCAiEAwNFcQFvKEXNsdZpzBUSg6Wn2bJ64Fl23dsE9tkbgr+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238063},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d9c86c27f0d2f3e6246a5378bab698f783bf107f","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node dist/server.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:e2e":"vitest run src/api/__tests__/e2e.test.ts","test:unit":"vitest run --exclude '**/e2e.test.ts'","typecheck":"tsc --noEmit","start:http":"node dist/server-http.js","test:watch":"vitest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"},"_npmVersion":"10.9.2","description":"GitLab Merge Request Viewer via MCP","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dotenv":"^16.4.5","express":"^4.18.2","lru-cache":"^11.0.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.4.0","eslint":"^8.56.0","vitest":"^1.2.1","prettier":"^3.2.4","typescript":"^5.3.3","@types/node":"^20.11.5","@types/express":"^4.17.21","@vitest/coverage-v8":"^1.2.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^6.19.1","@typescript-eslint/eslint-plugin":"^6.19.1"},"_npmOperationalInternal":{"tmp":"tmp/gitlabmcp_1.1.0_1764130550804_0.44942045655992713","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@archisbhoir/gitlabmcp","version":"1.1.1","keywords":["gitlab","mcp","merge-request"],"author":"","license":"MIT","_id":"@archisbhoir/gitlabmcp@1.1.1","maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"bin":{"gitlabmcp":"dist/server.js","gitlab-mcp":"dist/cli.js","gitlabmcp-http":"dist/server-http.js"},"dist":{"shasum":"a48f300f94116e7817eccd4c9d10bd1af8f6e98a","tarball":"https://registry.npmjs.org/@archisbhoir/gitlabmcp/-/gitlabmcp-1.1.1.tgz","fileCount":98,"integrity":"sha512-B92GOS9YyutourW1fbGKKoqw767o55dqNLoMgszLrQZ6TdD0/yWy0GPa8ZinLFmSmOeFI+AJowzMWzZA+EbcFw==","signatures":[{"sig":"MEQCIBwkrqTtbBQcxF6e2IcLGU3/kMq/IIdLt04dCep6NNHYAiAn3aMuFkla7a4QeUO8waqSyep2n9XrxwLPm4T0v2edrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238063},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b7c7ec63649004b6ed70a6945e62263660d27e52","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node dist/server.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:e2e":"vitest run src/api/__tests__/e2e.test.ts","test:unit":"vitest run --exclude '**/e2e.test.ts'","typecheck":"tsc --noEmit","start:http":"node dist/server-http.js","test:watch":"vitest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"},"_npmVersion":"10.9.2","description":"GitLab Merge Request Viewer via MCP","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dotenv":"^16.4.5","express":"^4.18.2","lru-cache":"^11.0.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.4.0","eslint":"^8.56.0","vitest":"^1.2.1","prettier":"^3.2.4","typescript":"^5.3.3","@types/node":"^20.11.5","@types/express":"^4.17.21","@vitest/coverage-v8":"^1.2.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^6.19.1","@typescript-eslint/eslint-plugin":"^6.19.1"},"_npmOperationalInternal":{"tmp":"tmp/gitlabmcp_1.1.1_1764134414598_0.03294903885351985","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@archisbhoir/gitlabmcp","version":"1.1.3","description":"GitLab Merge Request Viewer via MCP","main":"dist/index.js","bin":{"gitlabmcp":"dist/server.js","gitlabmcp-http":"dist/server-http.js","gitlab-mcp":"dist/cli.js"},"type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","dev":"tsc --watch","start":"node dist/server.js","start:http":"node dist/server-http.js","test":"vitest","test:watch":"vitest --watch","test:e2e":"vitest run src/api/__tests__/e2e.test.ts","test:unit":"vitest run --exclude '**/e2e.test.ts'","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit"},"keywords":["gitlab","mcp","merge-request"],"author":"","license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","dotenv":"^16.4.5","express":"^4.18.2","lru-cache":"^11.0.1"},"devDependencies":{"@types/express":"^4.17.21","@types/node":"^20.11.5","@typescript-eslint/eslint-plugin":"^6.19.1","@typescript-eslint/parser":"^6.19.1","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","nock":"^13.4.0","prettier":"^3.2.4","typescript":"^5.3.3","vitest":"^1.2.1","@vitest/coverage-v8":"^1.2.1"},"_id":"@archisbhoir/gitlabmcp@1.1.3","gitHead":"640ba0f09807468f482c82f1b651a41346c2cf7d","types":"./dist/index.d.ts","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-8keuS1nTkZ4FjDBLDzNPYqG2jum9xbi2ptg9f6ljsX6dKfbvzRVVdVXr4U3H7X/xvaaSc/tl8LOVRtpM4bNyGw==","shasum":"ad8f67f53eca92b4b4639b65e168c675ef753b9b","tarball":"https://registry.npmjs.org/@archisbhoir/gitlabmcp/-/gitlabmcp-1.1.3.tgz","fileCount":98,"unpackedSize":238043,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBAfNw5jnu9SB6FViKwB9mmAUNoh7ujnZIHvcegRpXClAiBHe6WvejMo757y9S/XENHcbxm0HbUj0Wv2k4Yo88r+1Q=="}]},"_npmUser":{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"},"directories":{},"maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gitlabmcp_1.1.3_1764134988849_0.2898984116884198"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-20T04:35:18.222Z","modified":"2025-11-26T05:29:49.198Z","0.1.0":"2025-11-20T04:35:18.549Z","1.0.0":"2025-11-21T03:57:48.139Z","1.1.0":"2025-11-26T04:15:51.015Z","1.1.1":"2025-11-26T05:20:14.795Z","1.1.3":"2025-11-26T05:29:49.019Z"},"license":"MIT","keywords":["gitlab","mcp","merge-request"],"description":"GitLab Merge Request Viewer via MCP","maintainers":[{"name":"archisbhoir","email":"archisbhoir2016@gmail.com"}],"readme":"# GitLab Merge Request Viewer via MCP\n\nA GitLab Merge Request viewer that fetches MR data (commits, pipelines, approvals, diffs, discussions) using GitLab GraphQL + REST APIs.\n\n## Quick Start\n\n### Using npx\n\n```bash\n# Stdio server (for MCP clients like Claude Desktop)\nnpx @archisbhoir/gitlabmcp@latest\n\n# HTTP server (for REST API access)\nnpx -p @archisbhoir/gitlabmcp@latest node dist/server-http.js\n```\n\nSet environment variables:\n\n```bash\nexport GITLAB_BASE_URL=https://gitlab.example.com\nexport GITLAB_TOKEN=your_token_here\n```\n\n### Install from npm\n\n```bash\nnpm install -g @archisbhoir/gitlabmcp\n\n# Run stdio server\ngitlabmcp\n\n# Run HTTP server\ngitlabmcp-http\n```\n\n## Configuration\n\nCreate `.env` file or set environment variables:\n\n```bash\nGITLAB_BASE_URL=https://gitlab.example.com\nGITLAB_TOKEN=your_token_here\n```\n\n**Note:** Token needs `read_api` or `api` scope to access merge requests.\n\n## MCP Client Configuration\n\n### Stdio (Claude Desktop)\n\n```json\n{\n  \"mcpServers\": {\n    \"gitlab-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"@archisbhoir/gitlabmcp@latest\"],\n      \"env\": {\n        \"GITLAB_BASE_URL\": \"https://gitlab.example.com\",\n        \"GITLAB_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\n### HTTP\n\n```json\n{\n  \"mcpServers\": {\n    \"gitlab-mcp\": {\n      \"url\": \"http://localhost:8080/mcp\",\n      \"transport\": \"http\"\n    }\n  }\n}\n```\n\n## MCP Tools\n\n### `get_merge_request`\n\nFetch a complete merge request with all data.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path (e.g., `\"group/project\"`)\n- `iid` (required): Merge request IID (e.g., `\"123\"`)\n- `includeCommits` (optional): Include commits (default: `true`)\n- `includeDiscussions` (optional): Include discussions (default: `true`)\n- `includeDiffs` (optional): Include diffs/changes (default: `false`)\n- `includeApprovals` (optional): Include approval details (default: `false`)\n- `forceRefresh` (optional): Bypass cache (default: `false`)\n\n### `get_merge_request_commits`\n\nFetch all commits for a merge request.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path\n- `iid` (required): Merge request IID\n\n### `get_merge_request_discussions`\n\nFetch all discussions for a merge request.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path\n- `iid` (required): Merge request IID\n\n### `get_merge_request_diffs`\n\nFetch diffs/changes for a merge request.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path\n- `iid` (required): Merge request IID\n\n### `get_merge_request_approvals`\n\nFetch approval details for a merge request.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path\n- `iid` (required): Merge request IID\n\n### `get_merge_requests_by_user`\n\nFetch all merge requests for a username.\n\n**Parameters:**\n\n- `username` (required): GitLab username\n- `projectPath` (optional): Filter by project path\n- `state` (optional): Filter by state (`\"opened\"`, `\"closed\"`, `\"locked\"`, `\"merged\"`)\n\n### `create_merge_request`\n\nCreate a new merge request. Requires `api` scope in token.\n\n**Parameters:**\n\n- `projectPath` (required): Full project path\n- `sourceBranch` (required): Source branch\n- `targetBranch` (required): Target branch\n- `title` (required): Merge request title\n- `description` (optional): Description\n- `assigneeIds` (optional): Array of user IDs\n- `reviewerIds` (optional): Array of user IDs\n- `labels` (optional): Array of label names\n- `removeSourceBranch` (optional): Remove source branch when merged\n- `squash` (optional): Squash commits when merging\n\n### `health_check`\n\nCheck GitLab connectivity and version.\n\n## HTTP Server Endpoints\n\nWhen running the HTTP server (`gitlabmcp-http`):\n\n- `GET /health` - Health check\n- `POST /mcp` - MCP protocol endpoint\n- `GET /api/tools` - List available tools\n- `POST /api/tools/:toolName` - Call a tool via REST API\n\n## Library Usage\n\n```bash\nnpm install @archisbhoir/gitlabmcp\n```\n\n```typescript\nimport {\n  getMergeRequestView,\n  fetchAllCommits,\n  fetchAllDiscussions,\n  getMRChangesRest,\n  getMRApprovalsRest,\n} from '@archisbhoir/gitlabmcp';\n\n// Get complete MR view\nconst view = await getMergeRequestView('group/project', '123');\n\n// Fetch all commits\nconst commits = await fetchAllCommits('group/project', '123');\n\n// Fetch all discussions\nconst discussions = await fetchAllDiscussions('group/project', '123');\n\n// Get diffs and approvals via REST\nconst changes = await getMRChangesRest('group/project', '123');\nconst approvals = await getMRApprovalsRest('group/project', '123');\n```\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}