refactor: update server removal logic to return detailed status; enhance conditional JSON parsing middleware

This commit is contained in:
samanhappy
2025-04-01 18:54:47 +08:00
parent 8a8975e57d
commit cf2cd4f4b4
2 changed files with 21 additions and 18 deletions

View File

@@ -7,7 +7,7 @@ import path from 'path';
dotenv.config();
const server = new McpServer({
let server = new McpServer({
name: 'mcphub',
version: '0.0.1',
});
@@ -21,9 +21,6 @@ const PORT = process.env.PORT || 3000;
// Serve static files from the public directory
app.use(express.static('public'));
// Remove this line
// app.use(express.json());
// Add conditional JSON parsing middleware
app.use((req, res, next) => {
if (req.path !== '/sse' && req.path !== '/messages') {
@@ -77,15 +74,21 @@ app.post('/api/servers', async (req: Request, res: Response) => {
});
// API endpoint to remove a server
app.delete('/api/servers/:name', (req: Request, res: Response) => {
app.delete('/api/servers/:name', async (req: Request, res: Response) => {
const { name } = req.params;
if (!name) {
return res.status(400).json({ success: false, message: 'Server name is required' });
}
const success = removeServer(name);
if (success) {
const result = removeServer(name);
if (result.success) {
server = new McpServer({
name: 'mcphub',
version: '0.0.1',
});
await registerAllTools(server);
res.json({ success: true, message: 'Server removed successfully' });
} else {
res.status(404).json({ success: false, message: 'Server not found or failed to remove' });

View File

@@ -201,35 +201,35 @@ export async function addServer(mcpServer: McpServer, name: string, config: { ur
}
}
// Add function to remove a server
export function removeServer(name: string): boolean {
// 修改返回类型
export function removeServer(name: string): { success: boolean; newServers?: string[]; newClients?: Client[]; newTransports?: (SSEClientTransport | StdioClientTransport)[] } {
try {
// Load current settings
const settings = loadSettings();
// Check if server exists
if (!settings.mcpServers[name]) {
return false;
return { success: false };
}
// Remove server from settings
delete settings.mcpServers[name];
// Save updated settings
if (!saveSettings(settings)) {
return false;
return { success: false };
}
// Re-initialize clients with updated settings
const result = initializeClientsFromSettings();
servers = result.servers;
clients = result.clients;
transports = result.transports;
return true;
return {
success: true,
newServers: result.servers,
newClients: result.clients,
newTransports: result.transports
};
} catch (error) {
console.error(`Failed to remove server: ${name}`, error);
return false;
return { success: false };
}
}