#!/usr/bin/env node
import 'dotenv/config';
import { GitLabMCPServer } from './server.js';
import { logger } from './utils/logger.js';
// 检查必需的环境变量
const requiredEnvVars = {
GITLAB_URL: process.env.GITLAB_URL,
GITLAB_PROJECT_ID: process.env.GITLAB_PROJECT_ID,
GITLAB_TOKEN: process.env.GITLAB_TOKEN
};
const missingVars = Object.entries(requiredEnvVars)
.filter(([_, value]) => !value)
.map(([key]) => key);
if (missingVars.length > 0) {
logger.error('❌ 缺少必需的环境变量:', missingVars.join(', '));
logger.error('请设置以下环境变量:');
logger.error('- GITLAB_URL: GitLab 实例的 URL');
logger.error('- GITLAB_PROJECT_ID: GitLab 项目 ID');
logger.error('- GITLAB_TOKEN: GitLab 访问令牌');
}
// 创建服务器配置
const config = {
name: 'gitlab-mcp-server',
version: '1.0.0',
gitlabUrl: requiredEnvVars.GITLAB_URL!,
gitlabProjectId: requiredEnvVars.GITLAB_PROJECT_ID!,
gitlabToken: requiredEnvVars.GITLAB_TOKEN!
};
// 启动服务器
const gitlabMcpServer = new GitLabMCPServer(config);
// 检查是否为开发环境
const isDev = process.env.NODE_ENV === 'development';
// 解析命令行参数
const mode = isDev ? 'http' : 'stdio';
const port = Number(process.env.PORT || 3300);
const host = process.env.HOST || '127.0.0.1';
if (mode === 'http') {
gitlabMcpServer.startHttp(port, host).catch(console.error);
} else {
gitlabMcpServer.startStdio().catch(console.error);
}