@@ -43,6 +43,24 @@ func NewToolMeta(toolset ToolsetMetadata, requiredScopes ...scopes.Scope) mcp.Me
4343 return meta
4444}
4545
46+ // NewResourceMeta creates resource template metadata with the given toolset.
47+ // Returns mcp.Meta (map[string]any) for direct use in mcp.ResourceTemplate.Meta.
48+ func NewResourceMeta (toolset ToolsetMetadata ) mcp.Meta {
49+ if toolset .ID == "" {
50+ panic ("toolset ID is required for ResourceMeta" )
51+ }
52+ return mcp.Meta {"toolset" : toolset .ID }
53+ }
54+
55+ // NewPromptMeta creates prompt metadata with the given toolset.
56+ // Returns mcp.Meta (map[string]any) for direct use in mcp.Prompt.Meta.
57+ func NewPromptMeta (toolset ToolsetMetadata ) mcp.Meta {
58+ if toolset .ID == "" {
59+ panic ("toolset ID is required for PromptMeta" )
60+ }
61+ return mcp.Meta {"toolset" : toolset .ID }
62+ }
63+
4664var (
4765 ToolsetMetadataAll = ToolsetMetadata {
4866 ID : "all" ,
@@ -318,7 +336,24 @@ func NewDefaultToolsetRegistry(getClient GetClientFn, getGQLClient GetGQLClientF
318336 // Include all available toolsets plus experiments (which has no tools but needs to exist)
319337 toolsetMetadatas := append (AvailableToolsets (), ToolsetMetadataExperiments )
320338
321- return toolsets .NewToolsetRegistry (toolsetMetadatas , tools )
339+ // Resource templates - self-describing with toolset in Meta
340+ resourceTemplates := []toolsets.ServerResourceTemplate {
341+ toolsets .NewServerResourceTemplate (GetRepositoryResourceContent (getClient , getRawClient , t )),
342+ toolsets .NewServerResourceTemplate (GetRepositoryResourceBranchContent (getClient , getRawClient , t )),
343+ toolsets .NewServerResourceTemplate (GetRepositoryResourceCommitContent (getClient , getRawClient , t )),
344+ toolsets .NewServerResourceTemplate (GetRepositoryResourceTagContent (getClient , getRawClient , t )),
345+ toolsets .NewServerResourceTemplate (GetRepositoryResourcePrContent (getClient , getRawClient , t )),
346+ }
347+
348+ // Prompts - self-describing with toolset in Meta
349+ prompts := []toolsets.ServerPrompt {
350+ toolsets .NewServerPrompt (AssignCodingAgentPrompt (t )),
351+ toolsets .NewServerPrompt (IssueToFixWorkflowPrompt (t )),
352+ }
353+
354+ return toolsets .NewToolsetRegistry (toolsetMetadatas , tools ).
355+ WithResourceTemplates (resourceTemplates ... ).
356+ WithPrompts (prompts ... )
322357}
323358
324359// DefaultToolsetGroup creates a ToolsetGroup with the default configuration.
@@ -330,37 +365,11 @@ func DefaultToolsetGroup(readOnly bool, getClient GetClientFn, getGQLClient GetG
330365 AvailableScopes : nil , // No scope filtering for backwards compatibility
331366 })
332367
333- // Add resource templates and prompts (these aren't tools, handled separately)
334- addResourceTemplatesAndPrompts (tsg , getClient , getRawClient , t )
335-
336368 tsg .AddDeprecatedToolAliases (DeprecatedToolAliases )
337369
338370 return tsg
339371}
340372
341- // addResourceTemplatesAndPrompts adds resource templates and prompts to toolsets.
342- // These are not tools and need to be added separately.
343- func addResourceTemplatesAndPrompts (tsg * toolsets.ToolsetGroup , getClient GetClientFn , getRawClient raw.GetRawClientFn , t translations.TranslationHelperFunc ) {
344- // Add repository resource templates
345- if repos , err := tsg .GetToolset (ToolsetMetadataRepos .ID ); err == nil {
346- repos .AddResourceTemplates (
347- toolsets .NewServerResourceTemplate (GetRepositoryResourceContent (getClient , getRawClient , t )),
348- toolsets .NewServerResourceTemplate (GetRepositoryResourceBranchContent (getClient , getRawClient , t )),
349- toolsets .NewServerResourceTemplate (GetRepositoryResourceCommitContent (getClient , getRawClient , t )),
350- toolsets .NewServerResourceTemplate (GetRepositoryResourceTagContent (getClient , getRawClient , t )),
351- toolsets .NewServerResourceTemplate (GetRepositoryResourcePrContent (getClient , getRawClient , t )),
352- )
353- }
354-
355- // Add issue prompts
356- if issues , err := tsg .GetToolset (ToolsetMetadataIssues .ID ); err == nil {
357- issues .AddPrompts (
358- toolsets .NewServerPrompt (AssignCodingAgentPrompt (t )),
359- toolsets .NewServerPrompt (IssueToFixWorkflowPrompt (t )),
360- )
361- }
362- }
363-
364373// InitDynamicToolset creates a dynamic toolset that can be used to enable other toolsets, and so requires the server and toolset group as arguments
365374//
366375//nolint:unused
0 commit comments