MCPcopy Create free account
hub / github.com/Noumena-Network/code / mcpAddJsonHandler

Function mcpAddJsonHandler

src/cli/handlers/mcp.tsx:286–314  ·  view source on GitHub ↗
(name: string, json: string, options: {
  scope?: string;
  clientSecret?: true;
})

Source from the content-addressed store, hash-verified

284
285// mcp add-json (lines 4801–4870)
286export async function mcpAddJsonHandler(name: string, json: string, options: {
287 scope?: string;
288 clientSecret?: true;
289}): Promise<void> {
290 try {
291 const scope = ensureConfigScope(options.scope);
292 const parsedJson = safeParseJSON(json);
293
294 // Read secret before writing config so cancellation doesn't leave partial state
295 const needsSecret = options.clientSecret && parsedJson && typeof parsedJson === 'object' && 'type' in parsedJson && (parsedJson.type === 'sse' || parsedJson.type === 'http') && 'url' in parsedJson && typeof parsedJson.url === 'string' && 'oauth' in parsedJson && parsedJson.oauth && typeof parsedJson.oauth === 'object' && 'clientId' in parsedJson.oauth;
296 const clientSecret = needsSecret ? await readClientSecret() : undefined;
297 await addMcpConfig(name, parsedJson, scope);
298 const transportType = parsedJson && typeof parsedJson === 'object' && 'type' in parsedJson ? String(parsedJson.type || 'stdio') : 'stdio';
299 if (clientSecret && parsedJson && typeof parsedJson === 'object' && 'type' in parsedJson && (parsedJson.type === 'sse' || parsedJson.type === 'http') && 'url' in parsedJson && typeof parsedJson.url === 'string') {
300 saveMcpClientSecret(name, {
301 type: parsedJson.type,
302 url: parsedJson.url
303 }, clientSecret);
304 }
305 logEvent('ncode_mcp_add', {
306 scope: scope as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
307 source: 'json' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
308 type: transportType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
309 });
310 cliOk(`Added ${transportType} MCP server ${name} to ${scope} config`);
311 } catch (error) {
312 cliError((error as Error).message);
313 }
314}
315
316// mcp add-from-claude-desktop (lines 4881–4927)
317export async function mcpAddFromDesktopHandler(options: {

Callers 1

runFunction · 0.85

Calls 7

ensureConfigScopeFunction · 0.85
readClientSecretFunction · 0.85
addMcpConfigFunction · 0.85
saveMcpClientSecretFunction · 0.85
cliOkFunction · 0.85
cliErrorFunction · 0.85
logEventFunction · 0.50

Tested by

no test coverage detected