@@ -71,42 +71,63 @@ export async function getMcpServersSection(
7171
7272 const filteredServers = memoizeFilteredServers ( mcpHub , mcpIncludedList )
7373
74- const connectedServers =
75- filteredServers . length > 0
76- ? `${ filteredServers
77- . map ( ( server ) => {
78- const tools = server . tools
74+ let connectedServers : string
75+
76+ if ( filteredServers . length > 0 ) {
77+ connectedServers = `${ filteredServers
78+ . map ( ( server ) => {
79+ const tools = server . tools
7980 ?. filter ( ( tool ) => tool . enabledForPrompt !== false )
80- ?. map ( ( tool ) => {
81- const schemaStr = tool . inputSchema
82- ? ` Input Schema:
83- ${ JSON . stringify ( tool . inputSchema , null , 2 ) . split ( "\n" ) . join ( "\n " ) } `
84- : ""
85-
86- return `- ${ tool . name } : ${ tool . description } \n${ schemaStr } `
87- } )
88- . join ( "\n\n" )
89-
90- const templates = server . resourceTemplates
91- ?. map ( ( template ) => `- ${ template . uriTemplate } (${ template . name } ): ${ template . description } ` )
92- . join ( "\n" )
93-
94- const resources = server . resources
95- ?. map ( ( resource ) => `- ${ resource . uri } (${ resource . name } ): ${ resource . description } ` )
96- . join ( "\n" )
97-
98- const config = JSON . parse ( server . config )
99-
100- return (
101- `## ${ server . name } ${ config . command ? ` (\`${ config . command } ${ config . args && Array . isArray ( config . args ) ? ` ${ config . args . join ( " " ) } ` : "" } \`)` : "" } ` +
102- ( server . instructions ? `\n\n### Instructions\n${ server . instructions } ` : "" ) +
103- ( tools ? `\n\n### Available Tools\n${ tools } ` : "" ) +
104- ( templates ? `\n\n### Resource Templates\n${ templates } ` : "" ) +
105- ( resources ? `\n\n### Direct Resources\n${ resources } ` : "" )
106- )
81+ ?. map ( ( tool ) => {
82+ const schemaStr = tool . inputSchema
83+ ? ` Input Schema:
84+ ${ JSON . stringify ( tool . inputSchema , null , 2 ) . split ( "\n" ) . join ( "\n " ) } `
85+ : ""
86+
87+ return `- ${ tool . name } : ${ tool . description } \n${ schemaStr } `
10788 } )
108- . join ( "\n\n" ) } `
109- : "(No MCP servers currently connected)"
89+ . join ( "\n\n" )
90+
91+ const templates = server . resourceTemplates
92+ ?. map ( ( template ) => `- ${ template . uriTemplate } (${ template . name } ): ${ template . description } ` )
93+ . join ( "\n" )
94+
95+ const resources = server . resources
96+ ?. map ( ( resource ) => `- ${ resource . uri } (${ resource . name } ): ${ resource . description } ` )
97+ . join ( "\n" )
98+
99+ const config = JSON . parse ( server . config )
100+
101+ return (
102+ `## ${ server . name } ${ config . command ? ` (\`${ config . command } ${ config . args && Array . isArray ( config . args ) ? ` ${ config . args . join ( " " ) } ` : "" } \`)` : "" } ` +
103+ ( server . instructions ? `\n\n### Instructions\n${ server . instructions } ` : "" ) +
104+ ( tools ? `\n\n### Available Tools\n${ tools } ` : "" ) +
105+ ( templates ? `\n\n### Resource Templates\n${ templates } ` : "" ) +
106+ ( resources ? `\n\n### Direct Resources\n${ resources } ` : "" )
107+ )
108+ } )
109+ . join ( "\n\n" ) } `
110+ } else if ( mcpIncludedList && mcpIncludedList . length > 0 ) {
111+ const allServers = mcpHub . getAllServers ( )
112+ const disconnectedServers = mcpIncludedList
113+ . map ( ( name ) => {
114+ const server = allServers . find ( ( s ) => s . name === name )
115+ if ( server && server . status !== "connected" ) {
116+ return `- ${ server . name } (${ server . status } )`
117+ }
118+ if ( ! server ) {
119+ return `- ${ name } (not found)`
120+ }
121+ return null
122+ } )
123+ . filter ( Boolean )
124+ . join ( "\n" )
125+ connectedServers = `(Configured MCP servers are not currently connected)${
126+ disconnectedServers ? `\n\nConfigured but disconnected servers:\n${ disconnectedServers } ` : ""
127+ } `
128+ } else {
129+ connectedServers = "(No MCP servers currently connected)"
130+ }
110131
111132 const baseSection = `MCP SERVERS
112133
0 commit comments