feat(mcp): add automatic MCP server registration for auto-install tool
- Implemented functionality to automatically register MCP servers when the '@cherry/mcp-auto-install' tool is called. - Utilized nanoid for unique server ID generation and dispatched the new server to the Redux store.
This commit is contained in:
parent
8191791036
commit
41b9f8dbd5
@ -169,13 +169,6 @@ const McpListContainer = styled(VStack)`
|
||||
height: calc(100vh - var(--navbar-height));
|
||||
`
|
||||
|
||||
const McpListHeader = styled(HStack)`
|
||||
width: 100%;
|
||||
padding: 10px 12px;
|
||||
padding-bottom: 0;
|
||||
justify-content: center;
|
||||
`
|
||||
|
||||
const McpList = styled(Scrollbar)`
|
||||
display: flex;
|
||||
flex: 1;
|
||||
|
||||
@ -15,7 +15,9 @@ import {
|
||||
SimpleStringSchema,
|
||||
Tool as geminiTool
|
||||
} from '@google/generative-ai'
|
||||
import { nanoid } from '@reduxjs/toolkit'
|
||||
import store from '@renderer/store'
|
||||
import { addMCPServer } from '@renderer/store/mcp'
|
||||
import { MCPServer, MCPTool, MCPToolResponse } from '@renderer/types'
|
||||
import { ChatCompletionMessageToolCall, ChatCompletionTool } from 'openai/resources'
|
||||
|
||||
@ -232,6 +234,24 @@ export async function callMCPTool(tool: MCPTool): Promise<any> {
|
||||
})
|
||||
|
||||
console.log(`[MCP] Tool called: ${tool.serverName} ${tool.name}`, resp)
|
||||
|
||||
if (tool.serverName === '@cherry/mcp-auto-install') {
|
||||
if (resp.data) {
|
||||
const mcpServer: MCPServer = {
|
||||
id: `f${nanoid()}`,
|
||||
name: resp.data.name,
|
||||
description: resp.data.description,
|
||||
baseUrl: resp.data.baseUrl,
|
||||
command: resp.data.command,
|
||||
args: resp.data.args,
|
||||
env: resp.data.env,
|
||||
registryUrl: '',
|
||||
isActive: false
|
||||
}
|
||||
store.dispatch(addMCPServer(mcpServer))
|
||||
}
|
||||
}
|
||||
|
||||
return resp
|
||||
} catch (e) {
|
||||
console.error(`[MCP] Error calling Tool: ${tool.serverName} ${tool.name}`, e)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user