refactor(mcp): consolidate MCP implementation into internal package
Build and Deploy / build-and-push (push) Successful in 54s

- Move MCP tools registration to internal/mcp
- cmd/mcp now only contains CLI entry logic
- Support env vars TASKPOOL_URL/TASKPOOL_TOKEN for stdio mode
- Remove duplicate client.go from cmd/mcp
This commit is contained in:
2026-07-27 02:43:01 +08:00
parent 066383de83
commit f3a44a901e
4 changed files with 130 additions and 773 deletions
+27 -8
View File
@@ -7,6 +7,7 @@ import (
"io"
"net/http"
"net/url"
"os"
"strings"
"sync"
"time"
@@ -21,18 +22,36 @@ var (
openAPIClientOnce sync.Once
)
// GetOpenAPIClient 获取内部 OpenAPI 客户端(单例)
// 使用当前服务器的地址和系统设置中的 OpenAPI Token
// GetOpenAPIClient 获取 OpenAPI 客户端(单例)
// 优先使用环境变量 TASKPOOL_URL 和 TASKPOOL_TOKEN
// 否则使用本地服务器地址和系统设置中的 OpenAPI Token
func GetOpenAPIClient() *Client {
openAPIClientOnce.Do(func() {
cfg := services.GetConfig()
baseURL := fmt.Sprintf("http://127.0.0.1:%d", cfg.Server.Port)
if cfg.Server.URLPrefix != "" {
baseURL += cfg.Server.URLPrefix
// 优先从环境变量读取(支持 stdio 模式连接远程服务器)
envURL := strings.TrimSpace(os.Getenv("TASKPOOL_URL"))
envToken := strings.TrimSpace(os.Getenv("TASKPOOL_TOKEN"))
if envURL == "" {
envURL = strings.TrimSpace(os.Getenv("BAIHU_URL"))
}
if envToken == "" {
envToken = strings.TrimSpace(os.Getenv("BAIHU_TOKEN"))
}
settingsSvc := services.NewSettingsService()
token := getOpenAPIToken(settingsSvc)
var baseURL, token string
if envURL != "" && envToken != "" {
// 使用环境变量配置
baseURL = envURL
token = envToken
} else {
// 使用本地服务器配置
cfg := services.GetConfig()
baseURL = fmt.Sprintf("http://127.0.0.1:%d", cfg.Server.Port)
if cfg.Server.URLPrefix != "" {
baseURL += cfg.Server.URLPrefix
}
settingsSvc := services.NewSettingsService()
token = getOpenAPIToken(settingsSvc)
}
openAPIClient = NewClient(baseURL, token)
})