Compare commits

...

4 Commits

Author SHA1 Message Date
4bff22d321 FEAT: custom ssl option 2025-05-31 12:36:20 +09:00
3613596cd7 FEAT: multi platform 2025-05-31 11:51:54 +09:00
fcb71e293e [main] chore: bump version to v1.0.53 2025-05-30 12:39:00 +09:00
cb36c007cb [main] fix: make old_line and new_line optional for image diff discussions
Image files in GitLab MR discussions use x/y coordinates instead of line numbers. This fix allows proper handling of image diff comments.

Co-authored-by: Peter Xu <px.peter.xu@gmail.com>
2025-05-30 12:38:14 +09:00
6 changed files with 28 additions and 14 deletions

View File

@ -34,5 +34,6 @@ jobs:
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
context: . context: .
platforms: linux/amd64,linux/arm64
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}

View File

@ -1,6 +1,6 @@
{ {
"action": "published", "action": "published",
"release": { "release": {
"tag_name": "v1.0.52" "tag_name": "v1.0.53"
} }
} }

View File

@ -16,6 +16,7 @@ import fs from "fs";
import path from "path"; import path from "path";
// Add type imports for proxy agents // Add type imports for proxy agents
import { Agent } from "http"; import { Agent } from "http";
import { Agent as HttpsAgent } from 'https';
import { URL } from "url"; import { URL } from "url";
import { import {
@ -197,6 +198,16 @@ const USE_PIPELINE = process.env.USE_PIPELINE === "true";
// Add proxy configuration // Add proxy configuration
const HTTP_PROXY = process.env.HTTP_PROXY; const HTTP_PROXY = process.env.HTTP_PROXY;
const HTTPS_PROXY = process.env.HTTPS_PROXY; const HTTPS_PROXY = process.env.HTTPS_PROXY;
const NODE_TLS_REJECT_UNAUTHORIZED = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
const GITLAB_CA_CERT_PATH = process.env.GITLAB_CA_CERT_PATH;
let sslOptions= undefined;
if (NODE_TLS_REJECT_UNAUTHORIZED === '0') {
sslOptions = { rejectUnauthorized: false };
} else if (GITLAB_CA_CERT_PATH) {
const ca = fs.readFileSync(GITLAB_CA_CERT_PATH);
sslOptions = { ca };
}
// Configure proxy agents if proxies are set // Configure proxy agents if proxies are set
let httpAgent: Agent | undefined = undefined; let httpAgent: Agent | undefined = undefined;
@ -213,9 +224,11 @@ if (HTTPS_PROXY) {
if (HTTPS_PROXY.startsWith("socks")) { if (HTTPS_PROXY.startsWith("socks")) {
httpsAgent = new SocksProxyAgent(HTTPS_PROXY); httpsAgent = new SocksProxyAgent(HTTPS_PROXY);
} else { } else {
httpsAgent = new HttpsProxyAgent(HTTPS_PROXY); httpsAgent = new HttpsProxyAgent(HTTPS_PROXY, sslOptions);
} }
} }
httpsAgent = httpsAgent || new HttpsAgent(sslOptions);
httpAgent = httpAgent || new Agent();
// Modify DEFAULT_HEADERS to include agent configuration // Modify DEFAULT_HEADERS to include agent configuration
const DEFAULT_HEADERS = { const DEFAULT_HEADERS = {

View File

@ -1,6 +1,6 @@
{ {
"name": "@zereight/mcp-gitlab", "name": "@zereight/mcp-gitlab",
"version": "1.0.52", "version": "1.0.53",
"description": "MCP server for using the GitLab API", "description": "MCP server for using the GitLab API",
"license": "MIT", "license": "MIT",
"author": "zereight", "author": "zereight",

View File

@ -618,21 +618,21 @@ export const GitLabDiscussionNoteSchema = z.object({
old_path: z.string(), old_path: z.string(),
new_path: z.string(), new_path: z.string(),
position_type: z.enum(["text", "image", "file"]), position_type: z.enum(["text", "image", "file"]),
old_line: z.number().nullable(), old_line: z.number().nullish(), // This is missing for image diffs
new_line: z.number().nullable(), new_line: z.number().nullish(), // This is missing for image diffs
line_range: z line_range: z
.object({ .object({
start: z.object({ start: z.object({
line_code: z.string(), line_code: z.string(),
type: z.enum(["new", "old", "expanded"]), type: z.enum(["new", "old", "expanded"]),
old_line: z.number().nullable(), old_line: z.number().nullish(), // This is missing for image diffs
new_line: z.number().nullable(), new_line: z.number().nullish(), // This is missing for image diffs
}), }),
end: z.object({ end: z.object({
line_code: z.string(), line_code: z.string(),
type: z.enum(["new", "old", "expanded"]), type: z.enum(["new", "old", "expanded"]),
old_line: z.number().nullable(), old_line: z.number().nullish(), // This is missing for image diffs
new_line: z.number().nullable(), new_line: z.number().nullish(), // This is missing for image diffs
}), }),
}) })
.nullable() .nullable()

View File

@ -10,9 +10,9 @@ IMAGE_NAME=gitlab-mcp
IMAGE_VERSION=$(jq -r '.version' package.json) IMAGE_VERSION=$(jq -r '.version' package.json)
echo "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_VERSION}" echo "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_VERSION}"
docker build --platform=linux/arm64 -t "${DOCKER_USER}/${IMAGE_NAME}:latest" .
docker tag "${DOCKER_USER}/${IMAGE_NAME}:latest" "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_VERSION}" docker buildx build --platform linux/arm64,linux/amd64 \
-t "${DOCKER_USER}/${IMAGE_NAME}:latest" \
docker push "${DOCKER_USER}/${IMAGE_NAME}:latest" -t "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_VERSION}" \
docker push "${DOCKER_USER}/${IMAGE_NAME}:${IMAGE_VERSION}" --push \
.