feat: add installation configuration support with pythonIndexUrl in settings (#67)

This commit is contained in:
samanhappy
2025-05-10 21:33:35 +08:00
committed by GitHub
parent 7c43ca359e
commit 7af3c8a2ba
9 changed files with 183 additions and 15 deletions

View File

@@ -247,9 +247,10 @@ export const toggleServer = async (req: Request, res: Response): Promise<void> =
export const updateSystemConfig = (req: Request, res: Response): void => {
try {
const { routing } = req.body;
const { routing, install } = req.body;
if (!routing || (typeof routing.enableGlobalRoute !== 'boolean' && typeof routing.enableGroupNameRoute !== 'boolean')) {
if ((!routing || (typeof routing.enableGlobalRoute !== 'boolean' && typeof routing.enableGroupNameRoute !== 'boolean'))
&& (!install || typeof install.pythonIndexUrl !== 'string')) {
res.status(400).json({
success: false,
message: 'Invalid system configuration provided',
@@ -263,6 +264,9 @@ export const updateSystemConfig = (req: Request, res: Response): void => {
routing: {
enableGlobalRoute: true,
enableGroupNameRoute: true
},
install: {
pythonIndexUrl: ''
}
};
}
@@ -274,12 +278,26 @@ export const updateSystemConfig = (req: Request, res: Response): void => {
};
}
if (typeof routing.enableGlobalRoute === 'boolean') {
settings.systemConfig.routing.enableGlobalRoute = routing.enableGlobalRoute;
if (!settings.systemConfig.install) {
settings.systemConfig.install = {
pythonIndexUrl: ''
};
}
if (typeof routing.enableGroupNameRoute === 'boolean') {
settings.systemConfig.routing.enableGroupNameRoute = routing.enableGroupNameRoute;
if (routing) {
if (typeof routing.enableGlobalRoute === 'boolean') {
settings.systemConfig.routing.enableGlobalRoute = routing.enableGlobalRoute;
}
if (typeof routing.enableGroupNameRoute === 'boolean') {
settings.systemConfig.routing.enableGroupNameRoute = routing.enableGroupNameRoute;
}
}
if (install) {
if (typeof install.pythonIndexUrl === 'string') {
settings.systemConfig.install.pythonIndexUrl = install.pythonIndexUrl;
}
}
if (saveSettings(settings)) {

View File

@@ -79,6 +79,13 @@ export const initializeClientsFromSettings = (isInit: boolean): ServerInfo[] =>
} else if (conf.command && conf.args) {
const env: Record<string, string> = conf.env || {};
env['PATH'] = expandEnvVars(process.env.PATH as string) || '';
// Add UV_DEFAULT_INDEX from settings if available (for Python packages)
const settings = loadSettings();
if (settings.systemConfig?.install?.pythonIndexUrl && conf.command === 'uvx') {
env['UV_DEFAULT_INDEX'] = settings.systemConfig.install.pythonIndexUrl;
}
transport = new StdioClientTransport({
command: conf.command,
args: conf.args,

View File

@@ -83,6 +83,9 @@ export interface McpSettings {
enableGlobalRoute?: boolean; // Controls whether the /sse endpoint without group is enabled
enableGroupNameRoute?: boolean; // Controls whether group routing by name is allowed
};
install?: {
pythonIndexUrl?: string; // Python package repository URL (UV_DEFAULT_INDEX)
};
// Add other system configuration sections here in the future
};
}