[feat/pipeline-support] feat: add USE_PIPELINE environment variable for conditional pipeline feature activation
✨ Breaking Changes: - Pipeline features are now opt-in via USE_PIPELINE environment variable 📝 Details: - Pipeline 관련 도구들을 USE_PIPELINE 환경 변수로 제어 가능하도록 변경 - USE_GITLAB_WIKI, USE_MILESTONE과 동일한 패턴으로 구현 - 기본값은 false로 설정되어 pipeline 기능은 명시적으로 활성화해야 함 - README에 USE_PIPELINE 환경 변수 설명 추가
This commit is contained in:
@ -27,7 +27,8 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
||||
"GITLAB_API_URL": "your_gitlab_api_url",
|
||||
"GITLAB_READ_ONLY_MODE": "false",
|
||||
"USE_GITLAB_WIKI": "false", // use wiki api?
|
||||
"USE_MILESTONE": "false" // use milestone api?
|
||||
"USE_MILESTONE": "false", // use milestone api?
|
||||
"USE_PIPELINE": "false" // use pipeline api?
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -55,6 +56,8 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
||||
"USE_GITLAB_WIKI",
|
||||
"-e",
|
||||
"USE_MILESTONE",
|
||||
"-e",
|
||||
"USE_PIPELINE",
|
||||
"iwakitakuma/gitlab-mcp"
|
||||
],
|
||||
"env": {
|
||||
@ -62,7 +65,8 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
||||
"GITLAB_API_URL": "https://gitlab.com/api/v4", // Optional, for self-hosted GitLab
|
||||
"GITLAB_READ_ONLY_MODE": "false",
|
||||
"USE_GITLAB_WIKI": "true",
|
||||
"USE_MILESTONE": "true"
|
||||
"USE_MILESTONE": "true",
|
||||
"USE_PIPELINE": "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -82,6 +86,7 @@ $ sh scripts/image_push.sh docker_user_name
|
||||
- `GITLAB_READ_ONLY_MODE`: When set to 'true', restricts the server to only expose read-only operations. Useful for enhanced security or when write access is not needed. Also useful for using with Cursor and it's 40 tool limit.
|
||||
- `USE_GITLAB_WIKI`: When set to 'true', enables the wiki-related tools (list_wiki_pages, get_wiki_page, create_wiki_page, update_wiki_page, delete_wiki_page). By default, wiki features are disabled.
|
||||
- `USE_MILESTONE`: When set to 'true', enables the milestone-related tools (list_milestones, get_milestone, create_milestone, edit_milestone, delete_milestone, get_milestone_issue, get_milestone_merge_requests, promote_milestone, get_milestone_burndown_events). By default, milestone features are disabled.
|
||||
- `USE_PIPELINE`: When set to 'true', enables the pipeline-related tools (list_pipelines, get_pipeline, list_pipeline_jobs, get_pipeline_job, get_pipeline_job_output, create_pipeline, retry_pipeline, cancel_pipeline). By default, pipeline features are disabled.
|
||||
|
||||
## Tools 🛠️
|
||||
|
||||
|
19
index.ts
19
index.ts
@ -192,6 +192,7 @@ const GITLAB_PERSONAL_ACCESS_TOKEN = process.env.GITLAB_PERSONAL_ACCESS_TOKEN;
|
||||
const GITLAB_READ_ONLY_MODE = process.env.GITLAB_READ_ONLY_MODE === "true";
|
||||
const USE_GITLAB_WIKI = process.env.USE_GITLAB_WIKI === "true";
|
||||
const USE_MILESTONE = process.env.USE_MILESTONE === "true";
|
||||
const USE_PIPELINE = process.env.USE_PIPELINE === "true";
|
||||
|
||||
// Add proxy configuration
|
||||
const HTTP_PROXY = process.env.HTTP_PROXY;
|
||||
@ -614,6 +615,18 @@ const milestoneToolNames = [
|
||||
"get_milestone_burndown_events",
|
||||
];
|
||||
|
||||
// Define which tools are related to pipelines and can be toggled by USE_PIPELINE
|
||||
const pipelineToolNames = [
|
||||
"list_pipelines",
|
||||
"get_pipeline",
|
||||
"list_pipeline_jobs",
|
||||
"get_pipeline_job",
|
||||
"get_pipeline_job_output",
|
||||
"create_pipeline",
|
||||
"retry_pipeline",
|
||||
"cancel_pipeline",
|
||||
];
|
||||
|
||||
/**
|
||||
* Smart URL handling for GitLab API
|
||||
*
|
||||
@ -2852,9 +2865,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
? tools0
|
||||
: tools0.filter(tool => !wikiToolNames.includes(tool.name));
|
||||
// Toggle milestone tools by USE_MILESTONE flag
|
||||
let tools = USE_MILESTONE
|
||||
const tools2 = USE_MILESTONE
|
||||
? tools1
|
||||
: tools1.filter(tool => !milestoneToolNames.includes(tool.name));
|
||||
// Toggle pipeline tools by USE_PIPELINE flag
|
||||
let tools = USE_PIPELINE
|
||||
? tools2
|
||||
: tools2.filter(tool => !pipelineToolNames.includes(tool.name));
|
||||
|
||||
// <<< START: Gemini 호환성을 위해 $schema 제거 >>>
|
||||
tools = tools.map(tool => {
|
||||
|
Reference in New Issue
Block a user