go-common中增加mcp抽离成通用方法(编排由业务方自行处理)
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
commonhttp "git.toowon.com/jimmy/go-common/http"
|
||||
"git.toowon.com/jimmy/go-common/i18n"
|
||||
"git.toowon.com/jimmy/go-common/logger"
|
||||
"git.toowon.com/jimmy/go-common/mcp"
|
||||
"git.toowon.com/jimmy/go-common/middleware"
|
||||
"git.toowon.com/jimmy/go-common/migration"
|
||||
"git.toowon.com/jimmy/go-common/sms"
|
||||
@@ -40,6 +41,7 @@ type Factory struct {
|
||||
redis *redis.Client
|
||||
i18n *i18n.I18n
|
||||
chain *middleware.Chain
|
||||
mcp mcp.Manager
|
||||
|
||||
mu sync.Mutex
|
||||
}
|
||||
@@ -412,6 +414,29 @@ func (f *Factory) getI18nUnlocked() (*i18n.I18n, error) {
|
||||
return i, nil
|
||||
}
|
||||
|
||||
func (f *Factory) getMCP() (mcp.Manager, error) {
|
||||
if f.mcp != nil {
|
||||
return f.mcp, nil
|
||||
}
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
if f.mcp != nil {
|
||||
return f.mcp, nil
|
||||
}
|
||||
if f.cfg == nil || f.cfg.MCP == nil {
|
||||
return nil, fmt.Errorf("mcp config is nil")
|
||||
}
|
||||
l, _ := f.getLoggerUnlocked()
|
||||
f.mcp = mcp.NewManager(l, f.cfg.MCP)
|
||||
return f.mcp, nil
|
||||
}
|
||||
|
||||
// MCP 获取 MCP 工具子系统对象(ListTools / CallTool)。
|
||||
// 本库只做 MCP Client(发现+调用工具);路由/抽参/编排逻辑由业务侧基于此对象实现。
|
||||
func (f *Factory) MCP() (mcp.Manager, error) {
|
||||
return f.getMCP()
|
||||
}
|
||||
|
||||
// Migrator 创建迁移器并加载指定目录下的 SQL 文件
|
||||
func (f *Factory) Migrator(migrationsDir string) (*migration.Migrator, error) {
|
||||
db, err := f.getDatabase()
|
||||
|
||||
Reference in New Issue
Block a user