gitlab_create_snippet
Create and share reusable code snippets in GitLab for saving solutions, documenting examples, and sharing code with customizable visibility settings.
Instructions
Create a new code snippet Creates: New snippet with specified content and metadata Use when: Saving reusable code, sharing solutions, documenting examples Required: title, file_name, content Optional: description, visibility
Example usage: { "title": "Docker Compose Template", "file_name": "docker-compose.yml", "content": "version: '3.8'\nservices:\n app:\n image: nginx", "description": "Basic Docker Compose setup", "visibility": "internal" }
Returns: Created snippet with ID and URLs
Related tools:
gitlab_update_snippet: Modify after creation
gitlab_list_snippets: View created snippets
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project identifier (auto-detected if not provided) Type: integer OR string Format: numeric ID or 'namespace/project' Optional: Yes - auto-detects from current git repository Examples: - 12345 (numeric ID) - 'gitlab-org/gitlab' (namespace/project path) - 'my-group/my-subgroup/my-project' (nested groups) Note: If in a git repo with GitLab remote, this can be omitted | |
| title | Yes | Snippet title Type: string Format: Descriptive title for the snippet Example: 'Database migration script' Note: Required when creating snippets | |
| file_name | Yes | Snippet file name Type: string Format: File name with extension Example: 'migration.sql', 'helper.py', 'config.yaml' Note: Used for syntax highlighting and display | |
| content | Yes | Snippet content Type: string Format: Raw text content of the snippet Example: 'console.log("Hello World");' Note: Can be code, text, or any content type | |
| description | No | Snippet description Type: string Format: Optional description of the snippet Example: 'Helper script for database migrations' Note: Provides context about the snippet's purpose | |
| visibility | No | Snippet visibility Type: string Format: Visibility level for the snippet Options: 'private' | 'internal' | 'public' Default: 'private' Examples: - 'private' (only visible to author) - 'internal' (visible to authenticated users) - 'public' (visible to everyone) | private |
Implementation Reference
- src/mcp_gitlab/tool_handlers.py:550-567 (handler)Handler function that implements the core logic for the gitlab_create_snippet tool. Extracts parameters using helper functions and delegates to GitLabClient.create_snippet()def handle_create_snippet(client: GitLabClient, arguments: Optional[Dict[str, Any]]) -> Dict[str, Any]: """Handle creating a snippet""" project_id = require_project_id(client, arguments) title = require_argument(arguments, "title") file_name = require_argument(arguments, "file_name") content = require_argument(arguments, "content") description = get_argument(arguments, "description") visibility = get_argument(arguments, "visibility", "private") return client.create_snippet( project_id=project_id, title=title, file_name=file_name, content=content, description=description, visibility=visibility )
- MCP Tool definition including name, description, and input schema validation for gitlab_create_snippettypes.Tool( name=TOOL_CREATE_SNIPPET, description=desc.DESC_CREATE_SNIPPET, inputSchema={ "type": "object", "properties": { "project_id": {"type": "string", "description": desc.DESC_PROJECT_ID}, "title": {"type": "string", "description": desc.DESC_SNIPPET_TITLE}, "file_name": {"type": "string", "description": desc.DESC_SNIPPET_FILE_NAME}, "content": {"type": "string", "description": desc.DESC_SNIPPET_CONTENT}, "description": {"type": "string", "description": desc.DESC_SNIPPET_DESCRIPTION}, "visibility": {"type": "string", "description": desc.DESC_SNIPPET_VISIBILITY, "enum": ["private", "internal", "public"], "default": "private"} }, "required": ["title", "file_name", "content"] } ),
- src/mcp_gitlab/tool_handlers.py:1041-1041 (registration)Registration of the handler function in the TOOL_HANDLERS dictionary used by the MCP server to dispatch tool callsTOOL_CREATE_SNIPPET: handle_create_snippet,
- src/mcp_gitlab/constants.py:207-207 (helper)Constant defining the tool name for consistent usage across the codebaseTOOL_CREATE_SNIPPET = "gitlab_create_snippet"