UNPKG

@xiaohui-wang/mcpadvisor

Version:

MCP Advisor & Installation - Find the right MCP server for your needs

63 lines (62 loc) 1.91 kB
import express from 'express'; import { SearchService } from '../../services/searchService.js'; import logger from '../../utils/logger.js'; const router = express.Router(); /** * 验证搜索请求 */ const validateSearchRequest = (req) => { const { query } = req.body; if (!query || typeof query !== 'string' || query.trim() === '') { return { valid: false, message: 'Query parameter is required and must be a non-empty string' }; } return { valid: true }; }; /** * 处理搜索错误 */ const handleSearchError = (error, res) => { const errorMessage = error instanceof Error ? error.message : String(error); logger.error(`Search API error: ${errorMessage}`); res.status(500).json({ success: false, error: 'Internal server error', message: errorMessage }); }; /** * @route POST /api/search * @desc 搜索 MCP 服务器 * @access Public */ router.post('/', (req, res) => { (async () => { try { // 验证请求 const validation = validateSearchRequest(req); if (!validation.valid) { return res.status(400).json({ success: false, error: 'Bad Request', message: validation.message }); } // 获取请求参数 const { query, limit, minSimilarity } = req.body; logger.info(`API search request: "${query}"`); // 执行搜索 const results = await SearchService.searchGetMcp(query, { limit, minSimilarity }); // 返回结果 return res.status(200).json({ success: true, query, results, count: results.length }); } catch (error) { handleSearchError(error, res); } })(); }); export default router;