Skip to main content
Glama
by Alosies
repository.ts2.99 kB
import type { GitLabClient } from "../client.js"; import type { ListProjectBranchesParams, GetProjectCommitsParams, GetCommitParams, GetCommitDiffParams, } from "../types.js"; export class RepositoryHandlers { constructor(private client: GitLabClient) {} async listProjectBranches(args: ListProjectBranchesParams) { const params = new URLSearchParams(); if (args.search) params.append("search", args.search); params.append("per_page", String(args.per_page || 20)); const data = await this.client.get( `/projects/${encodeURIComponent( args.project_id )}/repository/branches?${params.toString()}` ); return { content: [ { type: "text", text: JSON.stringify(data, null, 2), }, ], }; } async getProjectCommits(args: GetProjectCommitsParams) { const params = new URLSearchParams(); if (args.ref_name) params.append("ref_name", args.ref_name); if (args.since) params.append("since", args.since); if (args.until) params.append("until", args.until); if (args.author) params.append("author", args.author); if (args.path) params.append("path", args.path); if (args.all !== undefined) params.append("all", String(args.all)); if (args.with_stats !== undefined) params.append("with_stats", String(args.with_stats)); if (args.first_parent !== undefined) params.append("first_parent", String(args.first_parent)); if (args.order) params.append("order", args.order); if (args.trailers !== undefined) params.append("trailers", String(args.trailers)); if (args.page) params.append("page", String(args.page)); params.append("per_page", String(args.per_page || 20)); const data = await this.client.get( `/projects/${encodeURIComponent( args.project_id )}/repository/commits?${params.toString()}` ); return { content: [ { type: "text", text: JSON.stringify(data, null, 2), }, ], }; } async getCommit(args: GetCommitParams) { const params = new URLSearchParams(); if (args.stats !== undefined) params.append("stats", String(args.stats)); const queryString = params.toString(); const url = `/projects/${encodeURIComponent( args.project_id )}/repository/commits/${encodeURIComponent(args.sha)}${ queryString ? `?${queryString}` : "" }`; const data = await this.client.get(url); return { content: [ { type: "text", text: JSON.stringify(data, null, 2), }, ], }; } async getCommitDiff(args: GetCommitDiffParams) { const data = await this.client.get( `/projects/${encodeURIComponent( args.project_id )}/repository/commits/${encodeURIComponent(args.sha)}/diff` ); return { content: [ { type: "text", text: JSON.stringify(data, null, 2), }, ], }; } }

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/Alosies/gitlab-mcp-server'

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