mirror of
https://github.com/Mintplex-Labs/anything-llm
synced 2026-04-25 17:15:37 +02:00
* MCP tool manager * Mcp tool manager i18 (#5231) i18n translations for MCP manager changes connect #5230 * fix bad i18n key
128 lines
3.5 KiB
JavaScript
128 lines
3.5 KiB
JavaScript
const { reqBody } = require("../utils/http");
|
|
const MCPCompatibilityLayer = require("../utils/MCP");
|
|
const {
|
|
flexUserRoleValid,
|
|
ROLES,
|
|
} = require("../utils/middleware/multiUserProtected");
|
|
const { validatedRequest } = require("../utils/middleware/validatedRequest");
|
|
|
|
function mcpServersEndpoints(app) {
|
|
if (!app) return;
|
|
|
|
app.get(
|
|
"/mcp-servers/force-reload",
|
|
[validatedRequest, flexUserRoleValid([ROLES.admin])],
|
|
async (_request, response) => {
|
|
try {
|
|
const mcp = new MCPCompatibilityLayer();
|
|
await mcp.reloadMCPServers();
|
|
return response.status(200).json({
|
|
success: true,
|
|
error: null,
|
|
servers: await mcp.servers(),
|
|
});
|
|
} catch (error) {
|
|
console.error("Error force reloading MCP servers:", error);
|
|
return response.status(500).json({
|
|
success: false,
|
|
error: error.message,
|
|
servers: [],
|
|
});
|
|
}
|
|
}
|
|
);
|
|
|
|
app.get(
|
|
"/mcp-servers/list",
|
|
[validatedRequest, flexUserRoleValid([ROLES.admin])],
|
|
async (_request, response) => {
|
|
try {
|
|
const servers = await new MCPCompatibilityLayer().servers();
|
|
return response.status(200).json({
|
|
success: true,
|
|
servers,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error listing MCP servers:", error);
|
|
return response.status(500).json({
|
|
success: false,
|
|
error: error.message,
|
|
});
|
|
}
|
|
}
|
|
);
|
|
|
|
app.post(
|
|
"/mcp-servers/toggle",
|
|
[validatedRequest, flexUserRoleValid([ROLES.admin])],
|
|
async (request, response) => {
|
|
try {
|
|
const { name } = reqBody(request);
|
|
const result = await new MCPCompatibilityLayer().toggleServerStatus(
|
|
name
|
|
);
|
|
return response.status(200).json({
|
|
success: result.success,
|
|
error: result.error,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error toggling MCP server:", error);
|
|
return response.status(500).json({
|
|
success: false,
|
|
error: error.message,
|
|
});
|
|
}
|
|
}
|
|
);
|
|
|
|
app.post(
|
|
"/mcp-servers/delete",
|
|
[validatedRequest, flexUserRoleValid([ROLES.admin])],
|
|
async (request, response) => {
|
|
try {
|
|
const { name } = reqBody(request);
|
|
const result = await new MCPCompatibilityLayer().deleteServer(name);
|
|
return response.status(200).json({
|
|
success: result.success,
|
|
error: result.error,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error deleting MCP server:", error);
|
|
return response.status(500).json({
|
|
success: false,
|
|
error: error.message,
|
|
});
|
|
}
|
|
}
|
|
);
|
|
|
|
app.post(
|
|
"/mcp-servers/toggle-tool",
|
|
[validatedRequest, flexUserRoleValid([ROLES.admin])],
|
|
async (request, response) => {
|
|
try {
|
|
const { serverName, toolName, enabled } = reqBody(request);
|
|
const result = await new MCPCompatibilityLayer().toggleToolSuppression(
|
|
serverName,
|
|
toolName,
|
|
enabled
|
|
);
|
|
return response.status(200).json({
|
|
success: result.success,
|
|
error: result.error,
|
|
suppressedTools: result.suppressedTools,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error toggling MCP tool:", error);
|
|
return response.status(500).json({
|
|
success: false,
|
|
error: error.message,
|
|
suppressedTools: [],
|
|
});
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
module.exports = { mcpServersEndpoints };
|