Compare commits
5 Commits
v1.0.57
...
fix/get_is
Author | SHA1 | Date | |
---|---|---|---|
66d53f508c | |||
8cb7703aa1 | |||
5e254836e8 | |||
93710f2846 | |||
f3854126ac |
@ -84,7 +84,7 @@ docker run -i --rm \
|
|||||||
-e USE_PIPELINE=true \
|
-e USE_PIPELINE=true \
|
||||||
-e SSE=true \
|
-e SSE=true \
|
||||||
-p 3333:3002 \
|
-p 3333:3002 \
|
||||||
gitlab-mcp
|
iwakitakuma/gitlab-mcp
|
||||||
```
|
```
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
27
index.ts
27
index.ts
@ -171,6 +171,7 @@ import {
|
|||||||
GitLabCompareResult,
|
GitLabCompareResult,
|
||||||
GitLabCompareResultSchema,
|
GitLabCompareResultSchema,
|
||||||
GetBranchDiffsSchema,
|
GetBranchDiffsSchema,
|
||||||
|
ListWikiPagesOptions,
|
||||||
} from "./schemas.js";
|
} from "./schemas.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -906,13 +907,17 @@ async function listIssues(
|
|||||||
// Add all query parameters
|
// Add all query parameters
|
||||||
Object.entries(options).forEach(([key, value]) => {
|
Object.entries(options).forEach(([key, value]) => {
|
||||||
if (value !== undefined) {
|
if (value !== undefined) {
|
||||||
if (key === "labels" && Array.isArray(value)) {
|
if (key === "labels" ) {
|
||||||
// Handle array of labels
|
if (Array.isArray(value)) {
|
||||||
value.forEach(label => {
|
// Handle array of labels
|
||||||
url.searchParams.append("labels[]", label.toString());
|
value.forEach(label => {
|
||||||
});
|
url.searchParams.append("labels[]", label.toString());
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
url.searchParams.append("labels[]", value.toString());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
url.searchParams.append("labels[]", value.toString());
|
url.searchParams.append(key, value.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -2376,12 +2381,14 @@ async function listGroupProjects(
|
|||||||
*/
|
*/
|
||||||
async function listWikiPages(
|
async function listWikiPages(
|
||||||
projectId: string,
|
projectId: string,
|
||||||
options: Omit<z.infer<typeof ListWikiPagesSchema>, "project_id"> = {}
|
options: Omit<ListWikiPagesOptions, "project_id"> = {}
|
||||||
): Promise<GitLabWikiPage[]> {
|
): Promise<GitLabWikiPage[]> {
|
||||||
projectId = decodeURIComponent(projectId); // Decode project ID
|
projectId = decodeURIComponent(projectId); // Decode project ID
|
||||||
const url = new URL(`${GITLAB_API_URL}/projects/${encodeURIComponent(projectId)}/wikis`);
|
const url = new URL(`${GITLAB_API_URL}/projects/${encodeURIComponent(projectId)}/wikis`);
|
||||||
if (options.page) url.searchParams.append("page", options.page.toString());
|
if (options.page) url.searchParams.append("page", options.page.toString());
|
||||||
if (options.per_page) url.searchParams.append("per_page", options.per_page.toString());
|
if (options.per_page) url.searchParams.append("per_page", options.per_page.toString());
|
||||||
|
if (options.with_content)
|
||||||
|
url.searchParams.append("with_content", options.with_content.toString());
|
||||||
const response = await fetch(url.toString(), {
|
const response = await fetch(url.toString(), {
|
||||||
...DEFAULT_FETCH_CONFIG,
|
...DEFAULT_FETCH_CONFIG,
|
||||||
});
|
});
|
||||||
@ -3597,8 +3604,10 @@ server.setRequestHandler(CallToolRequestSchema, async request => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "list_wiki_pages": {
|
case "list_wiki_pages": {
|
||||||
const { project_id, page, per_page } = ListWikiPagesSchema.parse(request.params.arguments);
|
const { project_id, page, per_page, with_content } = ListWikiPagesSchema.parse(
|
||||||
const wikiPages = await listWikiPages(project_id, { page, per_page });
|
request.params.arguments
|
||||||
|
);
|
||||||
|
const wikiPages = await listWikiPages(project_id, { page, per_page, with_content });
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: JSON.stringify(wikiPages, null, 2) }],
|
content: [{ type: "text", text: JSON.stringify(wikiPages, null, 2) }],
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@zereight/mcp-gitlab",
|
"name": "@zereight/mcp-gitlab",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "MCP server for using the GitLab API",
|
"description": "MCP server for using the GitLab API",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"author": "zereight",
|
"author": "zereight",
|
||||||
|
@ -916,7 +916,7 @@ export const CreateNoteSchema = z.object({
|
|||||||
export const ListIssuesSchema = z.object({
|
export const ListIssuesSchema = z.object({
|
||||||
project_id: z.string().describe("Project ID or URL-encoded path"),
|
project_id: z.string().describe("Project ID or URL-encoded path"),
|
||||||
assignee_id: z.number().optional().describe("Return issues assigned to the given user ID"),
|
assignee_id: z.number().optional().describe("Return issues assigned to the given user ID"),
|
||||||
assignee_username: z.string().optional().describe("Return issues assigned to the given username"),
|
assignee_username: z.array(z.string()).optional().describe("Return issues assigned to the given username"),
|
||||||
author_id: z.number().optional().describe("Return issues created by the given user ID"),
|
author_id: z.number().optional().describe("Return issues created by the given user ID"),
|
||||||
author_username: z.string().optional().describe("Return issues created by the given username"),
|
author_username: z.string().optional().describe("Return issues created by the given username"),
|
||||||
confidential: z.boolean().optional().describe("Filter confidential or public issues"),
|
confidential: z.boolean().optional().describe("Filter confidential or public issues"),
|
||||||
@ -1197,7 +1197,9 @@ export const ListGroupProjectsSchema = z.object({
|
|||||||
// Add wiki operation schemas
|
// Add wiki operation schemas
|
||||||
export const ListWikiPagesSchema = z.object({
|
export const ListWikiPagesSchema = z.object({
|
||||||
project_id: z.string().describe("Project ID or URL-encoded path"),
|
project_id: z.string().describe("Project ID or URL-encoded path"),
|
||||||
|
with_content: z.boolean().optional().describe("Include content of the wiki pages"),
|
||||||
}).merge(PaginationOptionsSchema);
|
}).merge(PaginationOptionsSchema);
|
||||||
|
|
||||||
export const GetWikiPageSchema = z.object({
|
export const GetWikiPageSchema = z.object({
|
||||||
project_id: z.string().describe("Project ID or URL-encoded path"),
|
project_id: z.string().describe("Project ID or URL-encoded path"),
|
||||||
slug: z.string().describe("URL-encoded slug of the wiki page"),
|
slug: z.string().describe("URL-encoded slug of the wiki page"),
|
||||||
@ -1226,7 +1228,7 @@ export const GitLabWikiPageSchema = z.object({
|
|||||||
title: z.string(),
|
title: z.string(),
|
||||||
slug: z.string(),
|
slug: z.string(),
|
||||||
format: z.string(),
|
format: z.string(),
|
||||||
content: z.string(),
|
content: z.string().optional(),
|
||||||
created_at: z.string().optional(),
|
created_at: z.string().optional(),
|
||||||
updated_at: z.string().optional(),
|
updated_at: z.string().optional(),
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user