✨ Move i18n languages to resources

issue #64
This commit is contained in:
OpenWaygate committed 2025-08-03 20:50:16 +08:00
1 parent 359528979b
commit c4df857db7
2 files changed
+38 -7

No files matched your search

+7 -4
View File
@@ -9,13 +9,16 @@ const (
short = "List YouTube i18n languages"
long = "List YouTube i18n languages' id, hl, and name"
hlUsage = "Host language"
rURI = "i18n://language"
rName = "all i18n language"
)
var (
hl string
parts []string
output string
jpath string
hl string
parts []string
output string
jpath string
defaultParts = []string{"id", "snippet"}
)
var i18nLanguageCmd = &cobra.Command{
+31 -3
View File
@@ -11,11 +11,12 @@ import (
)
func init() {
cmd.MCP.AddTool(listTool, listHandler)
// cmd.MCP.AddTool(listTool, listHandler)
cmd.MCP.AddResource(allI18nLanguages, resourceHandler)
i18nLanguageCmd.AddCommand(listCmd)
listCmd.Flags().StringVarP(&hl, "hl", "l", "", hlUsage)
listCmd.Flags().StringSliceVarP(
&parts, "parts", "p", []string{"id", "snippet"}, cmd.PartsUsage,
&parts, "parts", "p", defaultParts, cmd.PartsUsage,
)
listCmd.Flags().StringVarP(&output, "output", "o", "table", cmd.TableUsage)
listCmd.Flags().StringVarP(&jpath, "jsonpath", "j", "", cmd.JPUsage)
@@ -46,7 +47,7 @@ var listTool = mcp.NewTool(
mcp.Description(hlUsage), mcp.Required(),
),
mcp.WithArray(
"parts", mcp.DefaultArray([]string{"id", "snippet"}),
"parts", mcp.DefaultArray(defaultParts),
mcp.Items(map[string]any{"type": "string"}),
mcp.Description(cmd.PartsUsage), mcp.Required(),
),
@@ -81,6 +82,33 @@ func listHandler(
return mcp.NewToolResultText(writer.String()), nil
}
var allI18nLanguages = mcp.NewResource(
rURI, rName,
mcp.WithMIMEType("application/json"),
mcp.WithResourceDescription(long),
)
func resourceHandler(
ctx context.Context, request mcp.ReadResourceRequest,
) ([]mcp.ResourceContents, error) {
parts = defaultParts
output = "json"
var writer bytes.Buffer
err := list(&writer)
if err != nil {
return nil, err
}
contents := []mcp.ResourceContents{
mcp.TextResourceContents{
URI: rURI,
MIMEType: "application/json",
Text: writer.String(),
},
}
return contents, nil
}
func list(writer io.Writer) error {
i := i18nLanguage.NewI18nLanguage(
i18nLanguage.WithHl(hl), i18nLanguage.WithService(nil),