feat: add active MCP servers filtering to useMCPServers hook and update MCPToolsButton

- Introduced activedMcpServers to filter and expose only active MCP servers in the useMCPServers hook.
- Updated MCPToolsButton to utilize activedMcpServers, rendering null if no active servers are present.
This commit is contained in:
kangfenmao 2025-03-16 21:34:29 +08:00
parent b441d76991
commit 295454a85e
2 changed files with 7 additions and 1 deletions

View File

@ -12,6 +12,7 @@ ipcRenderer.on('mcp:servers-changed', (_event, servers) => {
export const useMCPServers = () => { export const useMCPServers = () => {
const mcpServers = useAppSelector((state) => state.mcp.servers) const mcpServers = useAppSelector((state) => state.mcp.servers)
const activedMcpServers = useAppSelector((state) => state.mcp.servers?.filter((server) => server.isActive))
const addMCPServer = async (server: MCPServer) => { const addMCPServer = async (server: MCPServer) => {
try { try {
@ -59,6 +60,7 @@ export const useMCPServers = () => {
return { return {
mcpServers, mcpServers,
activedMcpServers,
addMCPServer, addMCPServer,
updateMCPServer, updateMCPServer,
deleteMCPServer, deleteMCPServer,

View File

@ -14,7 +14,7 @@ interface Props {
} }
const MCPToolsButton: FC<Props> = ({ enabledMCPs, toggelEnableMCP, ToolbarButton }) => { const MCPToolsButton: FC<Props> = ({ enabledMCPs, toggelEnableMCP, ToolbarButton }) => {
const { mcpServers } = useMCPServers() const { mcpServers, activedMcpServers } = useMCPServers()
const [isOpen, setIsOpen] = useState(false) const [isOpen, setIsOpen] = useState(false)
const dropdownRef = useRef<any>(null) const dropdownRef = useRef<any>(null)
const menuRef = useRef<HTMLDivElement>(null) const menuRef = useRef<HTMLDivElement>(null)
@ -74,6 +74,10 @@ const MCPToolsButton: FC<Props> = ({ enabledMCPs, toggelEnableMCP, ToolbarButton
</div> </div>
) )
if (activedMcpServers.length === 0) {
return null
}
return ( return (
<Dropdown <Dropdown
dropdownRender={() => menu} dropdownRender={() => menu}