mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-28 05:11:24 +08:00
- Updated logging statements across various modules to provide more structured and detailed information. - Changed log levels from info to debug for less critical messages to reduce log clutter. - Enhanced error logging to include relevant context such as agentId, sessionId, and model details. - Standardized log messages to follow a consistent format, improving readability and maintainability.
156 lines
4.3 KiB
TypeScript
156 lines
4.3 KiB
TypeScript
import express, { Request, Response } from 'express'
|
|
|
|
import { loggerService } from '../../services/LoggerService'
|
|
import { mcpApiService } from '../services/mcp'
|
|
|
|
const logger = loggerService.withContext('ApiServerMCPRoutes')
|
|
|
|
const router = express.Router()
|
|
|
|
/**
|
|
* @swagger
|
|
* /v1/mcps:
|
|
* get:
|
|
* summary: List MCP servers
|
|
* description: Get a list of all configured Model Context Protocol servers
|
|
* tags: [MCP]
|
|
* responses:
|
|
* 200:
|
|
* description: List of MCP servers
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* success:
|
|
* type: boolean
|
|
* data:
|
|
* type: array
|
|
* items:
|
|
* $ref: '#/components/schemas/MCPServer'
|
|
* 503:
|
|
* description: Service unavailable
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* success:
|
|
* type: boolean
|
|
* example: false
|
|
* error:
|
|
* $ref: '#/components/schemas/Error'
|
|
*/
|
|
router.get('/', async (req: Request, res: Response) => {
|
|
try {
|
|
logger.debug('Listing MCP servers')
|
|
const servers = await mcpApiService.getAllServers(req)
|
|
return res.json({
|
|
success: true,
|
|
data: servers
|
|
})
|
|
} catch (error: any) {
|
|
logger.error('Error fetching MCP servers', { error })
|
|
return res.status(503).json({
|
|
success: false,
|
|
error: {
|
|
message: `Failed to retrieve MCP servers: ${error.message}`,
|
|
type: 'service_unavailable',
|
|
code: 'servers_unavailable'
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
/**
|
|
* @swagger
|
|
* /v1/mcps/{server_id}:
|
|
* get:
|
|
* summary: Get MCP server info
|
|
* description: Get detailed information about a specific MCP server
|
|
* tags: [MCP]
|
|
* parameters:
|
|
* - in: path
|
|
* name: server_id
|
|
* required: true
|
|
* schema:
|
|
* type: string
|
|
* description: MCP server ID
|
|
* responses:
|
|
* 200:
|
|
* description: MCP server information
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* success:
|
|
* type: boolean
|
|
* data:
|
|
* $ref: '#/components/schemas/MCPServer'
|
|
* 404:
|
|
* description: MCP server not found
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* success:
|
|
* type: boolean
|
|
* example: false
|
|
* error:
|
|
* $ref: '#/components/schemas/Error'
|
|
*/
|
|
router.get('/:server_id', async (req: Request, res: Response) => {
|
|
try {
|
|
logger.debug('Get MCP server info request received', {
|
|
serverId: req.params.server_id
|
|
})
|
|
const server = await mcpApiService.getServerInfo(req.params.server_id)
|
|
if (!server) {
|
|
logger.warn('MCP server not found', { serverId: req.params.server_id })
|
|
return res.status(404).json({
|
|
success: false,
|
|
error: {
|
|
message: 'MCP server not found',
|
|
type: 'not_found',
|
|
code: 'server_not_found'
|
|
}
|
|
})
|
|
}
|
|
return res.json({
|
|
success: true,
|
|
data: server
|
|
})
|
|
} catch (error: any) {
|
|
logger.error('Error fetching MCP server info', { error, serverId: req.params.server_id })
|
|
return res.status(503).json({
|
|
success: false,
|
|
error: {
|
|
message: `Failed to retrieve MCP server info: ${error.message}`,
|
|
type: 'service_unavailable',
|
|
code: 'server_info_unavailable'
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
// Connect to MCP server
|
|
router.all('/:server_id/mcp', async (req: Request, res: Response) => {
|
|
const server = await mcpApiService.getServerById(req.params.server_id)
|
|
if (!server) {
|
|
logger.warn('MCP server not found', { serverId: req.params.server_id })
|
|
return res.status(404).json({
|
|
success: false,
|
|
error: {
|
|
message: 'MCP server not found',
|
|
type: 'not_found',
|
|
code: 'server_not_found'
|
|
}
|
|
})
|
|
}
|
|
return await mcpApiService.handleRequest(req, res, server)
|
|
})
|
|
|
|
export { router as mcpRoutes }
|