Skip to main content
Glama
README_TOOLS.md6.97 kB
# GitLab MCP Tools 这个包提供了 GitLab API 的 MCP 工具集合,可以作为 npm 包在其他项目中使用,支持 `@modelcontextprotocol/sdk` 和 `fastmcp` 两种框架。 ## 安装 ```bash npm install @zephyr-mcp/gitlab # 或 bun add @zephyr-mcp/gitlab ``` ## 使用方式 ### 1. 与 @modelcontextprotocol/sdk 配合使用 ```typescript import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { registerGitLabToolsForMcpSDK } from '@zephyr-mcp/gitlab/tools'; const server = new McpServer({ name: 'my-app', version: '1.0.0', capabilities: { tools: {} } }); // 注册所有 GitLab 工具 registerGitLabToolsForMcpSDK(server); // 或者只注册特定工具 registerGitLabToolsForMcpSDK(server, { toolFilter: { allowList: ['Gitlab_Create_MR_Tool', 'Gitlab_Search_User_Projects_Tool'] } }); ``` ### 2. 与 fastmcp 配合使用 ```typescript import { FastMCP } from 'fastmcp'; import { registerGitLabToolsForFastMCP } from '@zephyr-mcp/gitlab/tools'; const server = new FastMCP({ name: 'my-app', version: '1.0.0' }); // 注册所有 GitLab 工具 registerGitLabToolsForFastMCP(server); // 或者只注册特定工具 registerGitLabToolsForFastMCP(server, { toolFilter: { allowList: ['Gitlab_Create_MR_Tool', 'Gitlab_Search_User_Projects_Tool'] } }); ``` ## 环境变量配置 在使用工具前,需要设置以下环境变量: ```bash # 必需配置 GITLAB_API_URL=https://your-gitlab-instance.com GITLAB_TOKEN=your_access_token # 可选映射配置 GITLAB_USER_MAPPING={"username1": 123} GITLAB_PROJECT_MAPPING={"project-name": 1001} # 日志配置 ENABLE_LOGGER=true ``` ## 可用工具 ### 1. Gitlab_Search_User_Projects_Tool 搜索用户及其活跃项目。 ```typescript // 调用示例 { "tool": "Gitlab_Search_User_Projects_Tool", "arguments": { "username": "john_doe", "fields": ["id", "name", "web_url"] } } ``` ### 2. Gitlab_Get_User_Tasks_Tool 获取当前用户的待办任务。 ```typescript // 调用示例 { "tool": "Gitlab_Get_User_Tasks_Tool", "arguments": { "taskFilterType": "ASSIGNED_MRS", "fields": ["id", "title", "web_url"] } } ``` ### 3. Gitlab_Search_Project_Details_Tool 搜索项目详情。 ```typescript // 调用示例 { "tool": "Gitlab_Search_Project_Details_Tool", "arguments": { "projectName": "my-project", "fields": ["id", "name", "description", "web_url"] } } ``` ### 4. Gitlab_Create_MR_Tool 创建新的 Merge Request。 ```typescript // 调用示例 { "tool": "Gitlab_Create_MR_Tool", "arguments": { "projectId": "my-project", "sourceBranch": "feature-branch", "targetBranch": "main", "title": "Add new feature", "description": "Description of the feature", "assigneeId": "john_doe", "reviewerIds": ["jane_doe"], "labels": ["feature", "enhancement"] } } ``` ### 5. Gitlab_Update_MR_Tool 更新 Merge Request。 ```typescript // 调用示例 { "tool": "Gitlab_Update_MR_Tool", "arguments": { "projectId": "my-project", "mergeRequestId": 123, "title": "Updated title", "description": "Updated description" } } ``` ### 6. Gitlab_Accept_MR_Tool 接受并合并 Merge Request。 ```typescript // 调用示例 { "tool": "Gitlab_Accept_MR_Tool", "arguments": { "projectId": "my-project", "mergeRequestId": 123, "mergeOptions": { "squash": true, "shouldRemoveSourceBranch": true } } } ``` ### 7. Gitlab_Create_MR_Comment_Tool 为 Merge Request 添加评论。 ```typescript // 调用示例 { "tool": "Gitlab_Create_MR_Comment_Tool", "arguments": { "projectId": "my-project", "mergeRequestId": 123, "comment": "Looks good to me!" } } ``` ### 8. Gitlab_Raw_API_Tool 通用 GitLab API 调用工具。 ```typescript // 调用示例 { "tool": "Gitlab_Raw_API_Tool", "arguments": { "endpoint": "/projects", "method": "GET", "params": { "owned": true } } } ``` ## 配置选项 ### GitLabToolsRegistryOptions ```typescript interface GitLabToolsRegistryOptions { /** 过滤选项,控制注册哪些工具 */ toolFilter?: { /** 允许注册的工具列表 */ allowList?: GitLabToolName[]; /** 禁止注册的工具列表 */ blockList?: GitLabToolName[]; }; /** 是否启用日志 */ enableLogger?: boolean; } ``` ### 类型定义 ```typescript /** 可用的 GitLab 工具名称 */ type GitLabToolName = | "Gitlab_Search_User_Projects_Tool" | "Gitlab_Get_User_Tasks_Tool" | "Gitlab_Search_Project_Details_Tool" | "Gitlab_Create_MR_Tool" | "Gitlab_Update_MR_Tool" | "Gitlab_Accept_MR_Tool" | "Gitlab_Create_MR_Comment_Tool" | "Gitlab_Raw_API_Tool"; ``` ## 示例项目 ### 完整的 MCP SDK 项目示例 ```typescript #!/usr/bin/env node import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { registerGitLabTools } from '@zephyr-mcp/gitlab/tools'; const server = new McpServer({ name: 'my-gitlab-app', version: '1.0.0', capabilities: { tools: {} } }); // 注册 GitLab 工具 registerGitLabTools(server, { enableLogger: true, toolFilter: { allowList: [ 'Gitlab_Create_MR_Tool', 'Gitlab_Search_User_Projects_Tool', 'Gitlab_Get_User_Tasks_Tool' ] } }); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); } main().catch(console.error); ``` ### 完整的 FastMCP 项目示例 ```typescript #!/usr/bin/env node import { FastMCP } from 'fastmcp'; import { registerGitLabToolsForFastMCP } from '@zephyr-mcp/gitlab/tools'; const server = new FastMCP({ name: 'my-gitlab-app', version: '1.0.0' }); // 注册 GitLab 工具 registerGitLabToolsForFastMCP(server, { enableLogger: true, toolFilter: { allowList: ["Gitlab_Create_MR_Tool", "Gitlab_Search_User_Projects_Tool"] } }); // 启动服务器 server.start({ transportType: 'stdio' }); ``` ## 工具特性 1. **自动映射解析**: 自动将用户名和项目名映射为对应的 ID 2. **字段过滤**: 支持过滤 API 响应字段,优化性能 3. **错误处理**: 统一的错误处理和用户友好的错误消息 4. **类型安全**: 完整的 TypeScript 类型定义 5. **灵活配置**: 支持工具过滤和日志配置 6. **双框架支持**: 同时支持 MCP SDK 和 fastmcp 7. **简单明确**: 开发者明确选择使用哪个框架的注册函数 ## 故障排除 ### 常见问题 1. **认证失败**: 确保 `GITLAB_TOKEN` 环境变量设置正确 2. **API URL 错误**: 确保 `GITLAB_API_URL` 指向正确的 GitLab 实例 3. **权限不足**: 确保访问令牌具有足够的权限 4. **用户/项目映射失败**: 检查映射配置或使用 ID 而非名称 ### 调试 启用日志以查看详细的 API 调用信息: ```typescript registerGitLabTools(server, { enableLogger: true }); ``` ## 许可证 MIT License

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZephyrDeng/mcp-server-gitlab'

If you have feedback or need assistance with the MCP directory API, please join our Discord server