mirror of
https://github.com/samanhappy/mcphub.git
synced 2025-12-24 02:39:19 -05:00
refactor: update server removal logic to return detailed status; enhance conditional JSON parsing middleware
This commit is contained in:
17
src/index.ts
17
src/index.ts
@@ -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' });
|
||||
|
||||
@@ -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 };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user