feat: MCP v2 — SSE 流式端点、独立搜索工具、移除 token 默认兜底
- GET /mcp SSE 端点:endpoint 握手 + notifications/tools/list_changed 实时推送(服务/分类增删触发),30s keepalive - tonav_search_services 独立全文搜索工具,相关度排序(name>tags>description>url),支持 tag 收窄 - TONAV_MCP_TOKEN 未设置时 MCP 端点禁用(503)+ 启动警告,不再回退到硬编码默认 token - 服务端版本号 1.0.0 -> 2.0.0 - README 同步更新(工具表 7 个、双端点说明、部署变量表)
This commit is contained in:
@@ -18,7 +18,9 @@ func main() {
|
||||
database.Seed()
|
||||
handlers.StartHealthCheck()
|
||||
handlers.StartAutoBackup()
|
||||
handlers.LoadMCPConfig()
|
||||
if err := handlers.LoadMCPConfig(); err != nil {
|
||||
log.Printf("⚠️ MCP 未启用: %v", err)
|
||||
}
|
||||
|
||||
r := gin.Default()
|
||||
store := cookie.NewStore([]byte(cfg.SecretKey))
|
||||
@@ -72,7 +74,15 @@ func main() {
|
||||
}
|
||||
|
||||
// MCP (Model Context Protocol) 端点
|
||||
r.POST("/mcp", handlers.MCPAuthRequired(), handlers.MCPHandler)
|
||||
// POST: 请求-响应模式;GET: SSE 流式(服务端主动推送 notifications/tools/list_changed)
|
||||
if handlers.MCPEnabled() {
|
||||
r.POST("/mcp", handlers.MCPAuthRequired(), handlers.MCPHandler)
|
||||
r.GET("/mcp", handlers.MCPAuthRequired(), handlers.MCPSSEHandler)
|
||||
} else {
|
||||
// 未配置 token 时仍注册端点,但返回 503 明确提示
|
||||
r.POST("/mcp", handlers.MCPHandler)
|
||||
r.GET("/mcp", handlers.MCPSSEHandler)
|
||||
}
|
||||
|
||||
log.Printf("ToNav-go 启动在端口 %s...", cfg.Port)
|
||||
r.Run(":" + cfg.Port)
|
||||
|
||||
Reference in New Issue
Block a user