MCPcopy
hub / github.com/codeaashu/claude-code / mcpListHandler

Function mcpListHandler

src/cli/handlers/mcp.tsx:144–190  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

142
143// mcp list (lines 4641–4688)
144export async function mcpListHandler(): Promise<void> {
145 logEvent('tengu_mcp_list', {});
146 const {
147 servers: configs
148 } = await getAllMcpConfigs();
149 if (Object.keys(configs).length === 0) {
150 // biome-ignore lint/suspicious/noConsole:: intentional console output
151 console.log('No MCP servers configured. Use `claude mcp add` to add a server.');
152 } else {
153 // biome-ignore lint/suspicious/noConsole:: intentional console output
154 console.log('Checking MCP server health...\n');
155
156 // Check servers concurrently
157 const entries = Object.entries(configs);
158 const results = await pMap(entries, async ([name, server]) => ({
159 name,
160 server,
161 status: await checkMcpServerHealth(name, server)
162 }), {
163 concurrency: getMcpServerConnectionBatchSize()
164 });
165 for (const {
166 name,
167 server,
168 status
169 } of results) {
170 // Intentionally excluding sse-ide servers here since they're internal
171 if (server.type === 'sse') {
172 // biome-ignore lint/suspicious/noConsole:: intentional console output
173 console.log(`${name}: ${server.url} (SSE) - ${status}`);
174 } else if (server.type === 'http') {
175 // biome-ignore lint/suspicious/noConsole:: intentional console output
176 console.log(`${name}: ${server.url} (HTTP) - ${status}`);
177 } else if (server.type === 'claudeai-proxy') {
178 // biome-ignore lint/suspicious/noConsole:: intentional console output
179 console.log(`${name}: ${server.url} - ${status}`);
180 } else if (!server.type || server.type === 'stdio') {
181 const args = Array.isArray(server.args) ? server.args : [];
182 // biome-ignore lint/suspicious/noConsole:: intentional console output
183 console.log(`${name}: ${server.command} ${args.join(' ')} - ${status}`);
184 }
185 }
186 }
187 // Use gracefulShutdown to properly clean up MCP server connections
188 // (process.exit bypasses cleanup handlers, leaving child processes orphaned)
189 await gracefulShutdown(0);
190}
191
192// mcp get (lines 4694–4786)
193export async function mcpGetHandler(name: string): Promise<void> {

Callers 1

runFunction · 0.85

Calls 7

logEventFunction · 0.85
getAllMcpConfigsFunction · 0.85
checkMcpServerHealthFunction · 0.85
gracefulShutdownFunction · 0.85
keysMethod · 0.80
entriesMethod · 0.80

Tested by

no test coverage detected