diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/appleServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/appleServer.ts index 8372ec032..68d7aa4da 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/appleServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/appleServer.ts @@ -1209,40 +1209,70 @@ export class AppleServer { { name: 'calendar', description: 'Search, create, and open calendar events in Apple Calendar app', - inputSchema: zodToJsonSchema(CalendarArgsSchema) + inputSchema: zodToJsonSchema(CalendarArgsSchema), + annotations: { + title: 'Apple Calendar', + destructiveHint: false + } }, { name: 'contacts', description: 'Search and retrieve contacts from Apple Contacts app', - inputSchema: zodToJsonSchema(ContactsArgsSchema) + inputSchema: zodToJsonSchema(ContactsArgsSchema), + annotations: { + title: 'Apple Contacts', + readOnlyHint: true + } }, { name: 'mail', description: 'Interact with Apple Mail app - read unread emails, search emails, and send emails', - inputSchema: zodToJsonSchema(MailArgsSchema) + inputSchema: zodToJsonSchema(MailArgsSchema), + annotations: { + title: 'Apple Mail', + destructiveHint: false, + openWorldHint: true + } }, { name: 'maps', description: 'Search locations, manage guides, save favorites, and get directions using Apple Maps', - inputSchema: zodToJsonSchema(MapsArgsSchema) + inputSchema: zodToJsonSchema(MapsArgsSchema), + annotations: { + title: 'Apple Maps', + destructiveHint: false + } }, { name: 'messages', description: 'Interact with Apple Messages app - send, read, schedule messages and check unread messages', - inputSchema: zodToJsonSchema(MessagesArgsSchema) + inputSchema: zodToJsonSchema(MessagesArgsSchema), + annotations: { + title: 'Apple Messages', + destructiveHint: false, + openWorldHint: true + } }, { name: 'notes', description: 'Search, retrieve and create notes in Apple Notes app', - inputSchema: zodToJsonSchema(NotesArgsSchema) + inputSchema: zodToJsonSchema(NotesArgsSchema), + annotations: { + title: 'Apple Notes', + destructiveHint: false + } }, { name: 'reminders', description: 'Search, create, and open reminders in Apple Reminders app', - inputSchema: zodToJsonSchema(RemindersArgsSchema) + inputSchema: zodToJsonSchema(RemindersArgsSchema), + annotations: { + title: 'Apple Reminders', + destructiveHint: false + } } ] })) diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/artifactsServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/artifactsServer.ts index 69fd5b6db..eae8d4cc1 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/artifactsServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/artifactsServer.ts @@ -580,7 +580,11 @@ export class ArtifactsServer { 'Do not call this function repeatedly if instructions or definitions for the requested artifact type are already available in the current context. ' + 'Specify the desired artifact category through the type parameter: code, documents, html, svg, mermaid, or react. ' + 'After obtaining the instructions, use them appropriately and avoid duplicate calls for the same type.', - inputSchema: zodToJsonSchema(GetArtifactInstructionsArgsSchema) + inputSchema: zodToJsonSchema(GetArtifactInstructionsArgsSchema), + annotations: { + title: 'Get Artifact Instructions', + readOnlyHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/autoPromptingServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/autoPromptingServer.ts index 100e77b61..390ec8a66 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/autoPromptingServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/autoPromptingServer.ts @@ -111,17 +111,29 @@ export class AutoPromptingServer { { name: 'list_all_prompt_template_names', description: '获取所有可用提示词模板的名称列表。', - inputSchema: zodToJsonSchema(z.object({})) // 无需参数 + inputSchema: zodToJsonSchema(z.object({})), // 无需参数 + annotations: { + title: 'List Prompt Template Names', + readOnlyHint: true + } }, { name: 'get_prompt_template_parameters', description: '根据提示词模板名称获取其所需的参数列表和描述。', - inputSchema: GetTemplateParametersArgsJsonSchema + inputSchema: GetTemplateParametersArgsJsonSchema, + annotations: { + title: 'Get Template Parameters', + readOnlyHint: true + } }, { name: 'fill_prompt_template', description: '根据提示词模板名称和参数,填充模板内容并生成最终的Prompt。', - inputSchema: FillTemplateArgsJsonSchema + inputSchema: FillTemplateArgsJsonSchema, + annotations: { + title: 'Fill Prompt Template', + readOnlyHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/bochaSearchServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/bochaSearchServer.ts index b42408a0b..328080e0c 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/bochaSearchServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/bochaSearchServer.ts @@ -131,13 +131,23 @@ export class BochaSearchServer { name: 'bocha_web_search', description: 'Search with Bocha Web Search and get enhanced search details from billions of web documents, including page titles, urls, summaries, site names, site icons, publication dates, image links, and more.', // 官方描述 - inputSchema: zodToJsonSchema(BochaWebSearchArgsSchema) + inputSchema: zodToJsonSchema(BochaWebSearchArgsSchema), + annotations: { + title: 'Bocha Web Search', + readOnlyHint: true, + openWorldHint: true + } }, { name: 'bocha_ai_search', description: 'Search with Bocha AI Search, recognizes the semantics of search terms and additionally returns structured modal cards with content from vertical domains.', // 官方描述 - inputSchema: zodToJsonSchema(BochaAiSearchArgsSchema) + inputSchema: zodToJsonSchema(BochaAiSearchArgsSchema), + annotations: { + title: 'Bocha AI Search', + readOnlyHint: true, + openWorldHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/braveSearchServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/braveSearchServer.ts index 7f5a1c8ad..65ca39bf4 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/braveSearchServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/braveSearchServer.ts @@ -312,7 +312,12 @@ export class BraveSearchServer { 'Use this for broad information gathering, recent events, or when you need diverse web sources. ' + 'Supports pagination, content filtering, and freshness controls. ' + 'Maximum 20 results per request, with offset for pagination. ', - inputSchema: zodToJsonSchema(BraveWebSearchArgsSchema) + inputSchema: zodToJsonSchema(BraveWebSearchArgsSchema), + annotations: { + title: 'Brave Web Search', + readOnlyHint: true, + openWorldHint: true + } }, { name: 'brave_local_search', @@ -325,7 +330,12 @@ export class BraveSearchServer { '- Phone numbers and opening hours\n' + "Use this when the query implies 'near me' or mentions specific locations. " + 'Automatically falls back to web search if no local results are found.', - inputSchema: zodToJsonSchema(BraveLocalSearchArgsSchema) + inputSchema: zodToJsonSchema(BraveLocalSearchArgsSchema), + annotations: { + title: 'Brave Local Search', + readOnlyHint: true, + openWorldHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/builtinKnowledgeServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/builtinKnowledgeServer.ts index 487cfd9d6..89def00f2 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/builtinKnowledgeServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/builtinKnowledgeServer.ts @@ -57,7 +57,11 @@ export class BuiltinKnowledgeServer { return { name: `builtin_knowledge_search${suffix}`, description: config.description, - inputSchema: zodToJsonSchema(BuiltinKnowledgeSearchArgsSchema) + inputSchema: zodToJsonSchema(BuiltinKnowledgeSearchArgsSchema), + annotations: { + title: 'Builtin Knowledge Search', + readOnlyHint: true + } } }) return { tools } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/conversationSearchServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/conversationSearchServer.ts index d5c79bbf2..6d1d6316c 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/conversationSearchServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/conversationSearchServer.ts @@ -482,29 +482,49 @@ export class ConversationSearchServer { name: 'search_conversations', description: 'Search historical conversation records, supports title and content search', - inputSchema: zodToJsonSchema(SearchConversationsArgsSchema) + inputSchema: zodToJsonSchema(SearchConversationsArgsSchema), + annotations: { + title: 'Search Conversations', + readOnlyHint: true + } }, { name: 'search_messages', description: 'Search historical message records, supports filtering by conversation ID, role and other conditions', - inputSchema: zodToJsonSchema(SearchMessagesArgsSchema) + inputSchema: zodToJsonSchema(SearchMessagesArgsSchema), + annotations: { + title: 'Search Messages', + readOnlyHint: true + } }, { name: 'get_conversation_history', description: 'Get complete history of a specific conversation', - inputSchema: zodToJsonSchema(GetConversationHistoryArgsSchema) + inputSchema: zodToJsonSchema(GetConversationHistoryArgsSchema), + annotations: { + title: 'Get Conversation History', + readOnlyHint: true + } }, { name: 'get_conversation_stats', description: 'Get conversation statistics including totals, recent activity and more', - inputSchema: zodToJsonSchema(GetConversationStatsArgsSchema) + inputSchema: zodToJsonSchema(GetConversationStatsArgsSchema), + annotations: { + title: 'Get Conversation Stats', + readOnlyHint: true + } }, { name: 'create_new_tab', description: 'Creates a new tab. If userInput is provided, it also creates a new chat session and sends the input as the first message, then returns tabId and threadId.', - inputSchema: zodToJsonSchema(CreateNewTabArgsSchema) + inputSchema: zodToJsonSchema(CreateNewTabArgsSchema), + annotations: { + title: 'Create New Tab', + destructiveHint: false + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/deepResearchServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/deepResearchServer.ts index 318e8fbbd..5db63005f 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/deepResearchServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/deepResearchServer.ts @@ -282,27 +282,48 @@ export class DeepResearchServer { { name: 'start_deep_research', description: '启动一个新的深度研究会话。返回 session_id 用于后续操作。', - inputSchema: zodToJsonSchema(StartDeepResearchArgsSchema) + inputSchema: zodToJsonSchema(StartDeepResearchArgsSchema), + annotations: { + title: 'Start Deep Research', + destructiveHint: false + } }, { name: 'execute_single_web_search', description: '在研究会话内执行一次网页搜索。', - inputSchema: zodToJsonSchema(SingleWebSearchArgsSchema) + inputSchema: zodToJsonSchema(SingleWebSearchArgsSchema), + annotations: { + title: 'Execute Web Search', + readOnlyHint: false, + openWorldHint: true + } }, { name: 'request_research_data', description: '请求当前会话中新增的搜索结果和研究背景,供 LLM 反思。', - inputSchema: zodToJsonSchema(RequestResearchDataArgsSchema) + inputSchema: zodToJsonSchema(RequestResearchDataArgsSchema), + annotations: { + title: 'Request Research Data', + readOnlyHint: true + } }, { name: 'submit_reflection_results', description: 'LLM 提交其对研究数据的反思结果(如是否需更多研究、建议查询等)。', - inputSchema: zodToJsonSchema(SubmitReflectionResultsArgsSchema) + inputSchema: zodToJsonSchema(SubmitReflectionResultsArgsSchema), + annotations: { + title: 'Submit Reflection Results', + destructiveHint: false + } }, { name: 'generate_final_answer', description: '根据累积研究生成最终答案,并清理会话数据。', - inputSchema: zodToJsonSchema(GenerateFinalAnswerArgsSchema) + inputSchema: zodToJsonSchema(GenerateFinalAnswerArgsSchema), + annotations: { + title: 'Generate Final Answer', + destructiveHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/difyKnowledgeServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/difyKnowledgeServer.ts index 2e44ab9e6..5a7632501 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/difyKnowledgeServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/difyKnowledgeServer.ts @@ -132,7 +132,12 @@ export class DifyKnowledgeServer { return { name: `dify_knowledge_search${suffix}`, description: config.description, - inputSchema: zodToJsonSchema(DifyKnowledgeSearchArgsSchema) + inputSchema: zodToJsonSchema(DifyKnowledgeSearchArgsSchema), + annotations: { + title: 'Dify Knowledge Search', + readOnlyHint: true, + openWorldHint: true + } } }) diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/fastGptKnowledgeServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/fastGptKnowledgeServer.ts index 7038ddc11..06bd259df 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/fastGptKnowledgeServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/fastGptKnowledgeServer.ts @@ -121,7 +121,12 @@ export class FastGptKnowledgeServer { return { name: `fastgpt_knowledge_search${suffix}`, description: config.description, - inputSchema: zodToJsonSchema(FastGptKnowledgeSearchArgsSchema) + inputSchema: zodToJsonSchema(FastGptKnowledgeSearchArgsSchema), + annotations: { + title: 'FastGPT Knowledge Search', + readOnlyHint: true, + openWorldHint: true + } } }) return { tools } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/imageServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/imageServer.ts index 0be93e63e..aaee81edb 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/imageServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/imageServer.ts @@ -196,43 +196,76 @@ export class ImageServer { name: 'read_image_base64', description: 'Reads an image file from the specified path and returns its base64 encoded content.', - inputSchema: zodToJsonSchema(ReadImageBase64ArgsSchema) + inputSchema: zodToJsonSchema(ReadImageBase64ArgsSchema), + annotations: { + title: 'Read Image Base64', + readOnlyHint: true + } }, { name: 'upload_image', description: 'Uploads an image file from the specified path to a hosting service and returns the public URL.', - inputSchema: zodToJsonSchema(UploadImageArgsSchema) + inputSchema: zodToJsonSchema(UploadImageArgsSchema), + annotations: { + title: 'Upload Image', + destructiveHint: false, + openWorldHint: true + } }, { name: 'read_multiple_images_base64', description: 'Reads multiple image files from the specified paths and returns their base64 encoded content.', - inputSchema: zodToJsonSchema(ReadMultipleImagesBase64ArgsSchema) + inputSchema: zodToJsonSchema(ReadMultipleImagesBase64ArgsSchema), + annotations: { + title: 'Read Multiple Images Base64', + readOnlyHint: true + } }, { name: 'upload_multiple_images', description: 'Uploads multiple image files from the specified paths to a hosting service and returns their public URLs.', - inputSchema: zodToJsonSchema(UploadMultipleImagesArgsSchema) + inputSchema: zodToJsonSchema(UploadMultipleImagesArgsSchema), + annotations: { + title: 'Upload Multiple Images', + destructiveHint: false, + openWorldHint: true + } }, { name: 'describe_image', description: 'Uses a multimodal model to simply describe the image at the specified path.', - inputSchema: zodToJsonSchema(DescribeImageArgsSchema) + inputSchema: zodToJsonSchema(DescribeImageArgsSchema), + annotations: { + title: 'Describe Image', + readOnlyHint: true, + openWorldHint: true + } }, { name: 'query_image_with_prompt', description: 'Uses a multimodal model to answer a query (prompt) about the image at the specified path.', - inputSchema: zodToJsonSchema(QueryImageWithPromptArgsSchema) + inputSchema: zodToJsonSchema(QueryImageWithPromptArgsSchema), + annotations: { + title: 'Query Image with Prompt', + readOnlyHint: true, + openWorldHint: true + } }, { name: 'ocr_image', description: 'Performs Optical Character Recognition (OCR) on the image at the specified path and returns the extracted text.', - inputSchema: zodToJsonSchema(OcrImageArgsSchema) + inputSchema: zodToJsonSchema(OcrImageArgsSchema), + annotations: { + title: 'OCR Image', + readOnlyHint: true, + openWorldHint: true + } } ] } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/meetingServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/meetingServer.ts index b5b0f2a10..af8dec4f9 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/meetingServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/meetingServer.ts @@ -159,7 +159,11 @@ export class MeetingServer { name: 'start_meeting', description: '启动并主持一个由多个Tab(参会者)参与的关于特定主题的讨论会议。如果你当前已经是某个会议的参与者,请勿调用!', - inputSchema: zodToJsonSchema(StartMeetingArgsSchema) + inputSchema: zodToJsonSchema(StartMeetingArgsSchema), + annotations: { + title: 'Start Meeting', + destructiveHint: false + } } ] })) diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/powerpackServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/powerpackServer.ts index 9fbcc0a0c..c0ad83515 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/powerpackServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/powerpackServer.ts @@ -439,7 +439,11 @@ export class PowerpackServer { 'Get formatted time with specified offset from current time. Calculate any time point relative to the current time. ' + "For example, get current time, yesterday's time, tomorrow's time, etc. " + 'Use the offset parameter (milliseconds) to specify the offset relative to the current time, positive for future, negative for past.', - inputSchema: zodToJsonSchema(GetTimeArgsSchema) + inputSchema: zodToJsonSchema(GetTimeArgsSchema), + annotations: { + title: 'Get Time', + readOnlyHint: true + } }, { name: 'get_web_info', @@ -447,7 +451,12 @@ export class PowerpackServer { 'Get detailed content information from a specified webpage. Extract title, description, main content, and other information. ' + 'This tool is useful for analyzing webpage content, obtaining article summaries or details. ' + 'Just provide a valid HTTP or HTTPS URL to get complete webpage content analysis.', - inputSchema: zodToJsonSchema(GetWebInfoArgsSchema) + inputSchema: zodToJsonSchema(GetWebInfoArgsSchema), + annotations: { + title: 'Get Web Info', + readOnlyHint: true, + openWorldHint: true + } }, { name: 'run_shell_command', @@ -455,7 +464,11 @@ export class PowerpackServer { `${this.shellEnvironment.promptHint} ` + 'Use this tool for day-to-day automation, file inspection, networking, and scripting. ' + 'Provide a full shell command string; output includes stdout and stderr. ', - inputSchema: zodToJsonSchema(RunShellCommandArgsSchema) + inputSchema: zodToJsonSchema(RunShellCommandArgsSchema), + annotations: { + title: 'Run Shell Command', + destructiveHint: true + } } ] @@ -469,7 +482,12 @@ export class PowerpackServer { 'The code will be executed in an isolated environment with full Python ecosystem support. ' + 'This is safer than local execution as it runs in a controlled cloud sandbox. ' + 'Perfect for data analysis, calculations, visualizations, and any Python programming tasks.', - inputSchema: zodToJsonSchema(E2BRunCodeArgsSchema) + inputSchema: zodToJsonSchema(E2BRunCodeArgsSchema), + annotations: { + title: 'Run Code (E2B)', + readOnlyHint: false, + openWorldHint: true + } }) } else { // 使用本地运行时执行代码 @@ -487,7 +505,11 @@ export class PowerpackServer { 'For security reasons, the code cannot perform file operations, modify system settings, spawn child processes, or execute external code from network. ' + 'Code execution has a timeout limit, default is 5 seconds, you can adjust it based on the estimated time of the code, generally not recommended to exceed 2 minutes. ' + 'When a problem can be solved by a simple and secure JavaScript/TypeScript code or you have generated a simple code for the user and want to execute it, please use this tool, providing more reliable information to the user.', - inputSchema: zodToJsonSchema(RunNodeCodeArgsSchema) + inputSchema: zodToJsonSchema(RunNodeCodeArgsSchema), + annotations: { + title: 'Run Node.js Code', + destructiveHint: false + } }) } } diff --git a/src/main/presenter/mcpPresenter/inMemoryServers/ragflowKnowledgeServer.ts b/src/main/presenter/mcpPresenter/inMemoryServers/ragflowKnowledgeServer.ts index 9a7550c64..1f07d8e2d 100644 --- a/src/main/presenter/mcpPresenter/inMemoryServers/ragflowKnowledgeServer.ts +++ b/src/main/presenter/mcpPresenter/inMemoryServers/ragflowKnowledgeServer.ts @@ -128,7 +128,12 @@ export class RagflowKnowledgeServer { return { name: `ragflow_knowledge_search${suffix}`, description: config.description, - inputSchema: zodToJsonSchema(RagflowKnowledgeSearchArgsSchema) + inputSchema: zodToJsonSchema(RagflowKnowledgeSearchArgsSchema), + annotations: { + title: 'RAGFlow Knowledge Search', + readOnlyHint: true, + openWorldHint: true + } } }) return { tools }