This commit is contained in:
张威33321
2026-09-08 20:36:25 +08:00
parent 6296202eb0
commit 1a6ba86f04
13 changed files with 314 additions and 104 deletions

View File

@@ -0,0 +1,40 @@
package system
import (
"context"
"fmt"
"strings"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
// echoArgs 是 echo 工具的输入参数。
// json tag 决定参数名jsonschema tag 提供描述供客户端LLM理解参数。
type echoArgs struct {
Message string `json:"message" jsonschema:"要回显的文本,必填"`
Times int `json:"times,omitempty" jsonschema:"回显次数,默认 1"`
}
// registerEcho 注册 echo 工具:演示带参数的工具写法。
func registerEcho(s *mcp.Server) {
mcp.AddTool(s, &mcp.Tool{
Name: "echo",
Description: "把传入的文本原样回显指定次数,用于演示参数传递与工具调用。",
}, func(_ context.Context, _ *mcp.CallToolRequest, args echoArgs) (*mcp.CallToolResult, any, error) {
times := args.Times
if times <= 0 {
times = 1
}
// 用换行分隔,避免重复文本粘连。
line := strings.TrimRight(args.Message, "\n")
lines := make([]string, times)
for i := range lines {
lines[i] = line
}
return &mcp.CallToolResult{
Content: []mcp.Content{
&mcp.TextContent{Text: fmt.Sprintf("%s\n(共 %d 次)", strings.Join(lines, "\n"), times)},
},
}, nil, nil
})
}