MCPcopy
hub / github.com/upstash/context7 / removeTomlServer

Function removeTomlServer

packages/cli/src/setup/mcp-writer.ts:301–340  ·  view source on GitHub ↗
(
  filePath: string,
  serverName: string
)

Source from the content-addressed store, hash-verified

299}
300
301export async function removeTomlServer(
302 filePath: string,
303 serverName: string
304): Promise<{ removed: boolean }> {
305 let existing = "";
306 try {
307 existing = await readFile(filePath, "utf-8");
308 } catch {
309 return { removed: false };
310 }
311
312 const sectionHeader = `[mcp_servers.${serverName}]`;
313 const startIdx = existing.indexOf(sectionHeader);
314 if (startIdx === -1) {
315 return { removed: false };
316 }
317
318 const subPrefix = `[mcp_servers.${serverName}.`;
319 const rest = existing.slice(startIdx + sectionHeader.length);
320
321 let endOffset = rest.length;
322 const re = /^\[/gm;
323 let match: RegExpExecArray | null;
324 while ((match = re.exec(rest)) !== null) {
325 const lineEnd = rest.indexOf("\n", match.index);
326 const line = rest.slice(match.index, lineEnd === -1 ? undefined : lineEnd);
327 if (!line.startsWith(subPrefix)) {
328 endOffset = match.index;
329 break;
330 }
331 }
332
333 const rawBefore = existing.slice(0, startIdx).replace(/\n+$/, "");
334 const rawAfter = existing.slice(startIdx + sectionHeader.length + endOffset).replace(/^\n+/, "");
335 const content = [rawBefore, rawAfter].filter(Boolean).join("\n\n");
336
337 await mkdir(dirname(filePath), { recursive: true });
338 await writeFile(filePath, content.length > 0 ? `${content}\n` : "", "utf-8");
339 return { removed: true };
340}

Callers 2

uninstallMcpFunction · 0.85
setup.test.tsFile · 0.85

Calls 1

execMethod · 0.45

Tested by

no test coverage detected