报错日志
docker启动日志报错
hermes-agent | WARNING hermes_plugins.raft_platform.adapter: [raft] raft CLI not found in PATH — install from https://raft.build
hermes-agent | HERMES_DASHBOARD_READY port=9119
hermes-agent | Hermes Web UI → http://0.0.0.0:9119
hermes-agent | ERROR mcp.client.stdio: Failed to parse JSONRPC message from server
hermes-agent | Traceback (most recent call last):
hermes-agent | File "/opt/hermes/.venv/lib/python3.13/site-packages/mcp/client/stdio/__init__.py", line 155, in stdout_reader
hermes-agent | message = types.JSONRPCMessage.model_validate_json(line)
hermes-agent | File "/opt/hermes/.venv/lib/python3.13/site-packages/pydantic/main.py", line 782, in model_validate_json
hermes-agent | return cls.__pydantic_validator__.validate_json(
hermes-agent | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
hermes-agent | json_data, strict=strict, extra=extra, context=context, by_alias=by_alias, by_name=by_name
hermes-agent | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hermes-agent | )
hermes-agent | ^
hermes-agent | pydantic_core._pydantic_core.ValidationError: 1 validation error for JSONRPCMessage
hermes-agent | Invalid JSON: expected value at line 1 column 2 [type=json_invalid, input_value='[dotenv@17.2.3] injectin...https://dotenvx.com/ops', input_type=str]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/json_invalid
hermes-agent | 💾 Self-improvement review: Patched SKILL.md in skill 'native-mcp' (1 replacement).
异常分析
问题根因总结:
层 原因
──────── ───────────────────────────────────────────────────────────────────────────────────────
直接原因 trilium-mcp 使用 dotenv@17.2.3,该版本在 dotenv.config() 成功时调用 console.log() 打印推广消息到 stdout(MCP 协议要求 stdout 纯 JSON-RPC)
代码路径 main.js:305-320 — `if (debug \
修复 1 配置文件加 DOTENV_CONFIG_QUIET: true → dotenv 读到环境变量,跳过 stdout 消息
修复 2 源码 dist/index.js:13 改 dotenv.config({ quiet: true }) → 从 API 参数层面彻底关掉 故障反复
hermes-agent | WARNING hermes_plugins.raft_platform.adapter: [raft] raft CLI not found in PATH — install from https://raft.build
hermes-agent | HERMES_DASHBOARD_READY port=9119
hermes-agent | Hermes Web UI → http://0.0.0.0:9119
hermes-agent | WARNING tools.mcp_tool: MCP server 'trilium' initial connection failed (attempt 1/3), retrying in 1s: 1 validation error for StdioServerParameters
hermes-agent | env.DOTENV_CONFIG_QUIET
hermes-agent | Input should be a valid string [type=string_type, input_value=True, input_type=bool]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/string_type
hermes-agent | WARNING tools.mcp_tool: MCP server 'trilium' initial connection failed (attempt 2/3), retrying in 2s: 1 validation error for StdioServerParameters
hermes-agent | env.DOTENV_CONFIG_QUIET
hermes-agent | Input should be a valid string [type=string_type, input_value=True, input_type=bool]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/string_type
hermes-agent | WARNING tools.mcp_tool: MCP server 'trilium' initial connection failed (attempt 3/3), retrying in 4s: 1 validation error for StdioServerParameters
hermes-agent | env.DOTENV_CONFIG_QUIET
hermes-agent | Input should be a valid string [type=string_type, input_value=True, input_type=bool]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/string_type
hermes-agent | WARNING tools.mcp_tool: MCP server 'trilium' failed initial connection after 3 attempts, giving up: 1 validation error for StdioServerParameters
hermes-agent | env.DOTENV_CONFIG_QUIET
hermes-agent | Input should be a valid string [type=string_type, input_value=True, input_type=bool]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/string_type
hermes-agent | WARNING tools.mcp_tool: Failed to connect to MCP server 'trilium' (command=node): 1 validation error for StdioServerParameters
hermes-agent | env.DOTENV_CONFIG_QUIET
hermes-agent | Input should be a valid string [type=string_type, input_value=True, input_type=bool]
hermes-agent | For further information visit https://errors.pydantic.dev/2.13/v/string_type故障分析
Pydantic 要求 env 值是 string 类型,但 YAML true 被解析成了 Python boolean。需要用引号确保 YAML 存为字符串:
YAML 直写成功,DOTENV_CONFIG_QUIET: 'true' 现在是一个 YAML 字符串。唯一的代价是丢失了原文件的注释(不影响语义)。