mirror of
https://github.com/tiennm99/litellm.git
synced 2026-08-24 00:28:32 +00:00
* feat(ui): group MCP tools by CRUD risk category in tool permission panels Adds a CRUD-classification layer to the MCP tool allowlist UI so admins can allow/block an entire risk category (Read / Create / Update / Delete) with a single toggle instead of managing a flat list of individual tools. - New `mcpToolCrudClassification.ts` utility: regex-based classifier that buckets tool names/descriptions into read/create/update/delete/unknown - New `McpCrudPermissionPanel` component: collapsible sections per CRUD group, group-level Switch toggle, individual tool checkboxes, risk badges (green Safe / yellow Medium / red High Risk) - `mcp_tool_configuration.tsx`: adds "Risk Groups / Flat List" radio toggle; defaults to the CRUD-grouped view, flat list is still accessible - `MCPToolPermissions.tsx` (key/team assignment): replaces flat checkboxes with the CRUD panel; adds per-server view toggle; delete tools are blocked by default for newly-added servers (safer default for key/team scoping) No backend or schema changes — uses existing `allowed_tools` and `mcp_tool_permissions` fields. * fix(mcp): OAuth2 chat connect - tools fetch, auth flow, and status fixes - schema.prisma: add missing MCP table fields (approval_status, submitted_by, submitted_at, reviewed_at, review_notes) to prevent destructive migrations - rest_endpoints.py: inject user OAuth token via extra_headers for OAuth2 servers so tools list is populated; add server name->UUID resolution so MCPConnectPicker name lookups work - mcp_registry.json: fix Atlassian defaults (transport: http, url: .../v1/mcp) - ChatPage.tsx: read mcpOauthReturn param to init sidebarView="apps" on OAuth return, clean up param after mount - MCPAppsPanel.tsx: auto-add OAuth2 servers to selectedServers when credential detected; onConnect also enables server for chat; disconnect removes from selectedServers - mcp_servers.tsx: sort servers by created_at DESC - useUserMcpOAuthFlow.tsx: append mcpOauthReturn=apps to return URL so Apps panel is mounted on return * fix(mcp-crud-ui): address greptile review feedback - use Checkbox (not Switch) for group toggle so indeterminate works - add toolPermissionsRef to avoid stale closure race on concurrent server fetches - remove unused blockDeleteByDefault prop from McpCrudPermissionPanel - classify tools by name first; fall back to description only when name yields no match - add Risk Groups / Flat List toggle to mcp_tool_configuration.tsx * fix(mcp-crud-ui): address greptile 3/5 review - remove non-functional XIcon remove-server button (no onRemoveServer prop wired) - fix stale closure in MCPAppsPanel auto-enable effect: use serversRef/selectedServersRef - remove utility re-export from McpCrudPermissionPanel (classifyToolOp, groupToolsByCrud) - remove redundant selectedTools.length === 0 guard (always true when !toolPermissions[id]) * fix(mcp-crud-ui): address greptile 3/5 review round 2 - check READ_RE before DELETE_RE in classifyToolOp so tools like get_removed_entries are not silently blocked by delete-by-default - expand undefined (allow-all) to full tool name list instead of collapsing to [] (allow-none) in MCPToolPermissions and mcp_tool_configuration - log OAuth credential fetch failures instead of silently swallowing them * fix: cursor-pointer on read-only rows, stable sort, simplify handleCrudPanelChange * fix: sanitize user_id/server_id in log to prevent log injection * fix: add OAuth headers to call_tool_rest_api, fix stale accessToken closure, fix group toggle on filtered subset * fix: batch OAuth creds query, hide empty CRUD groups on search, onChange stability * fix: double-add race, conditional bulk query, narrow DELETE_RE, hoist search input * fix(mcp): clear oauthConnected on deselect; null guard on allowedTools prop * fix(mcp): remove user-provided values from debug log to fix log-injection lint * fix(mcp): fix allowedTools undefined semantics; remove unused import and color field