From 54f97c05c672f4e948f24e0a413481d48887e21a Mon Sep 17 00:00:00 2001 From: Sam Yu Date: Mon, 5 May 2025 18:33:26 +0800 Subject: [PATCH 1/3] Add await for async function call. --- JavaScript/05-headless-browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/05-headless-browser.js b/JavaScript/05-headless-browser.js index a974fa8..cbf1c12 100644 --- a/JavaScript/05-headless-browser.js +++ b/JavaScript/05-headless-browser.js @@ -161,7 +161,7 @@ async function run() { } // Browser context content - safely get page info - const pageInfo = getPageInfo(page); + const pageInfo = await getPageInfo(page); const browserContent = { text: `Current page: Title: '${pageInfo['title']}', URL: '${pageInfo['url']}'` }; printSystem(`Browser context: ${browserContent}`); From e9e3dadc422d32b28f6246ff9822fccc36e61167 Mon Sep 17 00:00:00 2001 From: Sam Yu Date: Tue, 6 May 2025 15:46:32 +0800 Subject: [PATCH 2/3] Fix the function params --- JavaScript/10-mcp-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/10-mcp-server.js b/JavaScript/10-mcp-server.js index 83935ac..8159b25 100644 --- a/JavaScript/10-mcp-server.js +++ b/JavaScript/10-mcp-server.js @@ -119,7 +119,7 @@ server.tool("writeFile", filename: z.string(), content: z.string() }, - async ({ url }) => { + async ({ filename, content }) => { try { fs.writeFileSync(`artefacts/${sessionId}/${filename}`, content, 'utf8'); return { content: [{ type: "text", text: filename }] } From 14fb7ab6dc6336e84826ead73f5c1461f3454ad8 Mon Sep 17 00:00:00 2001 From: Sam Yu Date: Tue, 6 May 2025 17:43:21 +0800 Subject: [PATCH 3/3] Fix the mcp server errors. --- JavaScript/10-mcp-server.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/JavaScript/10-mcp-server.js b/JavaScript/10-mcp-server.js index 8159b25..9fed204 100644 --- a/JavaScript/10-mcp-server.js +++ b/JavaScript/10-mcp-server.js @@ -12,7 +12,7 @@ const sessionId = randomUUID(); fs.mkdirSync(`screenshots/${sessionId}/`, { recursive: true }); fs.mkdirSync(`artefacts/${sessionId}/`, { recursive: true }); -function sleep(ms) { +async function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } @@ -65,13 +65,13 @@ server.tool("type", await page.keyboard.type(text); if (submit) { - printSystem(`Pressing Enter to submit`); + console.log(`Pressing Enter to submit`); await page.keyboard.press('Enter'); return { content: [{ type: "text", text: "submited" }] } } return { content: [{ type: "text", text: "not submited" }] } } catch (error) { - printSystem(`Error typing text: ${error}`); + console.log(`Error typing text: ${error}`); return { content: [{ type: "text", text: error.message }] } } } @@ -82,13 +82,11 @@ server.tool("click", x: z.number(), y: z.number() }, - async ({ x, y }) => { + async ({x, y}) => { await page.mouse.click(x, y); - sleep(1000); + await sleep(1000); - return { - clicked_at: { x, y } - }; + return { content: [{ type: "text", text: `clicked at ${x},${y}` }] } } ); @@ -108,7 +106,7 @@ server.tool("scroll", return { content: [{ type: "text", text: "not scrolled" }] } } - sleep(1000); + await sleep(1000); return { content: [{ type: "text", text: "scrolled" }] } } @@ -124,7 +122,7 @@ server.tool("writeFile", fs.writeFileSync(`artefacts/${sessionId}/${filename}`, content, 'utf8'); return { content: [{ type: "text", text: filename }] } } catch (error) { - printSystem(`Error writing file: ${error}`); + console.log(`Error writing file: ${error}`); return { content: [{ type: "text", text: error.message }] } } }