Эх сурвалжийг харах

MCP 改为监听所有网卡

旧实现沿袭 Ijs 的 super("127.0.0.1", port),只有本机进程或 adb forward
能连上。改成 super(port)(NanoHTTPD 不传 hostname 即通配地址),同网段的
AI 客户端可直接连 http://<手机 IP>:8734/mcp。

代价已在代码注释里写清楚:同网段任何人都能调用这个计算引擎。服务本身是
只读 + 求值(无文件写、无代码执行),但可以被拿来跑重计算占住那条唯一的
求值线程。要收回来改回 super("127.0.0.1", port) 即可。

真机验证(Android 14):ss 显示 *:8734,从 WSL 不经 adb forward 直连
evaluate 返回 x^3/3。

Co-Authored-By: Claude Code <noreply@anthropic.com>
nonvioce 4 долоо хоног өмнө
parent
commit
328bf756c3

+ 11 - 1
android/app/src/main/java/com/nonvioce/cal/McpServer.java

@@ -40,8 +40,18 @@ public class McpServer extends NanoHTTPD {
     private final List<String> evalHistory = java.util.Collections.synchronizedList(new ArrayList<>());
     private volatile boolean initialized = false;
 
+    /**
+     * 监听**所有网卡**(NanoHTTPD 传 port 而不传 hostname 就是通配地址)。
+     *
+     * 旧实现(Ijs)绑的是 127.0.0.1,那样只有本机进程或 adb forward 能连上。
+     * 现在改成全网卡,同网段的 AI 客户端可以直接连 `http://<手机 IP>:8734/mcp`。
+     *
+     * 代价要说清楚:**同网段的任何人都能调用这个计算引擎**。服务本身只读 + 求值
+     * (没有任何写文件或执行代码的能力),但可以被拿来跑重计算(比如难解的积分)
+     * 占住那条唯一的求值线程。要收回来就改回 super("127.0.0.1", port)。
+     */
     public McpServer(int port) {
-        super("127.0.0.1", port);
+        super(port);
     }
 
     private String sessionId = java.util.UUID.randomUUID().toString();