diff --git a/mcp-run-python/deno.json b/mcp-run-python/deno.json index 32892264a5..ea639c9de4 100644 --- a/mcp-run-python/deno.json +++ b/mcp-run-python/deno.json @@ -16,8 +16,7 @@ "@modelcontextprotocol/sdk": "npm:@modelcontextprotocol/sdk@^1.17.4", "@std/cli": "jsr:@std/cli@^1.0.15", "@std/path": "jsr:@std/path@^1.0.8", - // do NOT upgrade above this version until there is a workaround for https://github.com/pyodide/pyodide/pull/5621 - "pyodide": "npm:pyodide@0.27.6", + "pyodide": "npm:pyodide@0.28.2", "zod": "npm:zod@^3.24.2" }, "fmt": { diff --git a/mcp-run-python/deno.lock b/mcp-run-python/deno.lock index 1aa7ea5fea..4c76b79f5b 100644 --- a/mcp-run-python/deno.lock +++ b/mcp-run-python/deno.lock @@ -1,22 +1,27 @@ { "version": "5", "specifiers": { - "jsr:@std/cli@*": "1.0.15", - "jsr:@std/cli@^1.0.15": "1.0.15", - "jsr:@std/path@*": "1.0.8", - "jsr:@std/path@^1.0.8": "1.0.8", + "jsr:@std/cli@^1.0.15": "1.0.21", + "jsr:@std/internal@^1.0.10": "1.0.10", + "jsr:@std/path@^1.0.8": "1.1.2", "npm:@modelcontextprotocol/sdk@^1.17.4": "1.17.4_express@5.1.0_zod@3.25.76", - "npm:@types/node@*": "22.12.0", + "npm:@types/node@*": "24.2.0", "npm:@types/node@22.12.0": "22.12.0", - "npm:pyodide@0.27.6": "0.27.6", + "npm:pyodide@0.28.2": "0.28.2", "npm:zod@^3.24.2": "3.25.76" }, "jsr": { - "@std/cli@1.0.15": { - "integrity": "e79ba3272ec710ca44d8342a7688e6288b0b88802703f3264184b52893d5e93f" + "@std/cli@1.0.21": { + "integrity": "cd25b050bdf6282e321854e3822bee624f07aca7636a3a76d95f77a3a919ca2a" }, - "@std/path@1.0.8": { - "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" + "@std/internal@1.0.10": { + "integrity": "e3be62ce42cab0e177c27698e5d9800122f67b766a0bea6ca4867886cbde8cf7" + }, + "@std/path@1.1.2": { + "integrity": "c0b13b97dfe06546d5e16bf3966b1cadf92e1cc83e56ba5476ad8b498d9e3038", + "dependencies": [ + "jsr:@std/internal" + ] } }, "npm": { @@ -40,7 +45,13 @@ "@types/node@22.12.0": { "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dependencies": [ - "undici-types" + "undici-types@6.20.0" + ] + }, + "@types/node@24.2.0": { + "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", + "dependencies": [ + "undici-types@7.10.0" ] }, "accepts@2.0.0": { @@ -363,8 +374,8 @@ "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, - "pyodide@0.27.6": { - "integrity": "sha512-ahiSHHs6iFKl2f8aO1wALINAlMNDLAtb44xCI87GQyH2tLDk8F8VWip3u1ZNIyglGSCYAOSFzWKwS1f9gBFVdg==", + "pyodide@0.28.2": { + "integrity": "sha512-2BrZHrALvhYZfIuTGDHOvyiirHNLziHfBiBb1tpBFzLgAvDBb2ACxNPFFROCOzLnqapORmgArDYY8mJmMWH1Eg==", "dependencies": [ "ws" ] @@ -496,6 +507,9 @@ "undici-types@6.20.0": { "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" }, + "undici-types@7.10.0": { + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==" + }, "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, @@ -518,8 +532,8 @@ "wrappy@1.0.2": { "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "ws@8.18.2": { - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==" + "ws@8.18.3": { + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" }, "zod-to-json-schema@3.24.6_zod@3.25.76": { "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", @@ -536,7 +550,7 @@ "jsr:@std/cli@^1.0.15", "jsr:@std/path@^1.0.8", "npm:@modelcontextprotocol/sdk@^1.17.4", - "npm:pyodide@0.27.6", + "npm:pyodide@0.28.2", "npm:zod@^3.24.2" ] } diff --git a/mcp-run-python/src/runCode.ts b/mcp-run-python/src/runCode.ts index 691c3c860e..dc067e9776 100644 --- a/mcp-run-python/src/runCode.ts +++ b/mcp-run-python/src/runCode.ts @@ -13,11 +13,6 @@ export async function runCode( files: CodeFile[], log: (level: LoggingLevel, data: string) => void, ): Promise { - // remove once we can upgrade to pyodide 0.27.7 and console.log is no longer used. - const realConsoleLog = console.log - // deno-lint-ignore no-explicit-any - console.log = (...args: any[]) => log('debug', args.join(' ')) - const output: string[] = [] const pyodide = await loadPyodide({ stdout: (msg) => { @@ -90,7 +85,6 @@ export async function runCode( } sys.stdout.flush() sys.stderr.flush() - console.log = realConsoleLog return runResult } diff --git a/mcp-run-python/test_mcp_servers.py b/mcp-run-python/test_mcp_servers.py index 3fd72927f1..3d3fb9599e 100644 --- a/mcp-run-python/test_mcp_servers.py +++ b/mcp-run-python/test_mcp_servers.py @@ -171,6 +171,8 @@ async def test_list_tools(mcp_session: ClientSession) -> None: run-error Traceback (most recent call last): + ...<9 lines>... + .run_async(globals, locals) File "main.py", line 1, in print(unknown) ^^^^^^^ @@ -225,7 +227,8 @@ async def logging_callback(params: types.LoggingMessageNotificationParams) -> No \ """ assert content.text == expected_output - assert len(logs) >= 18 + assert len(logs) >= 16 assert re.search( - r"debug: Didn't find package numpy\S+?\.whl locally, attempting to load from", '\n'.join(logs) + r"debug: loadPackage: Didn't find package numpy\S*\.whl locally, attempting to load from", + '\n'.join(logs), )