解决在windows中基于Spring AI 集成文件管理MCP服务遇到的问题
1、现象
2025-10-20T15:02:50.624+08:00 ERROR 24404 --- [spring-ai-mcp-client] [pool-3-thread-1] i.m.c.transport.StdioClientTransport : Error processing inbound message for line: Active code page: 65001com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Active': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 7]at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2590) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.JsonParser._constructReadException(JsonParser.java:2616) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.JsonParser._constructReadException(JsonParser.java:2624) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:830) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:3017) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:2051) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:780) ~[jackson-core-2.19.0.jar:2.19.0]at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:5058) ~[jackson-databind-2.19.0.jar:2.19.0]at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4961) ~[jackson-databind-2.19.0.jar:2.19.0]at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3887) ~[jackson-databind-2.19.0.jar:2.19.0]at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3870) ~[jackson-databind-2.19.0.jar:2.19.0]at io.modelcontextprotocol.spec.McpSchema.deserializeJsonRpcMessage(McpSchema.java:157) ~[mcp-0.10.0.jar:0.10.0]at io.modelcontextprotocol.client.transport.StdioClientTransport.lambda$startInboundProcessing$6(StdioClientTransport.java:260) ~[mcp-0.10.0.jar:0.10.0]at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[reactor-core-3.7.6.jar:3.7.6]at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[reactor-core-3.7.6.jar:3.7.6]at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]
如果报错第一行显示:Active code page: 65001 → 代码页污染
解决:
使用 node 直启 或 PowerShell + UTF8 设置,确保 stdout 第一行就是合法 JSON-RPC。
resources/mcp-servers.json
{"mcpServers": {"filesystem": {"command": "D:/Program Files/nodejs/node.exe","args": ["D:/Program Files/nodejs/node_global/node_modules/@modelcontextprotocol/server-filesystem/dist/index.js","D:/java_project/mcp-file-path-test"]}}
}
其中,
command的值通过where node查找:
server-filesystem/dist/index.js获取:
然后找到对应的模块具体位置。
注意:需要提前全局安装一次:npm i -g @modelcontextprotocol/server-filesystem
按照以上方式可以解决。