codex + windows 环境下使用 serena mcp
参考文献:https://qiita.com/ErrorLover/items/0a534a49d3eea8b3f2c0
启动server
cd /d "D:\soft\uv"
call myenv311\Scripts\activate.bat
serena start-mcp-server --transport streamable-http --port 9121 --context codex
condex配置
C:\Users\*****\.codex\config.toml
[mcp_servers.serena]
command = "C:/Program Files/nodejs/node.exe"
args = ["C:/Users/********/AppData/Roaming/npm/node_modules/mcp-remote/dist/proxy.js","http://localhost:9121/mcp"
]
env = { APPDATA = "C:\\Users\\******\\AppData\\Roaming", LOCALAPPDATA = "C:\\Users\\*******\\AppData\\Local", SystemRoot = "C:\\WINDOWS", COMSPEC = "C:\\WINDOWS\\system32\\cmd.exe" }
startup_timeout_ms = 20000
AGENTS.md
## 3. 工具与调研平台
### 3.0 工具矩阵概览
| 工具 | 核心职责 | Serena 联动要求 |
| --- | --- | --- |
| Serena MCP | 统一调度代码/知识工具、维护知识记忆、执行编辑操作,并提供结构化检索能力 | 所有指令由 Serena 发起并登记留痕 |
| Context7 MCP | 获取官方文档与权威资料的首选通道 | 每次检索记录关键词、版本与访问日期 |### 3.1 Serena MCP(首选代码/知识工具)
- **接入校验**:每次启动 Codex 会话先调用 `serena__activate_project`/`serena__check_onboarding_performed` 并通过 `uv run serena tools list` 或 Dashboard 交叉确认 Serena 已联通,在“前置说明”记录结果;如检测失败立即暂停任务并协调恢复方案。
- **上下文与模式策略**:依据目标选择合适的 Context/Mode(如 `codex`、`ide-assistant`、`planning`、`editing`),所有切换须在计划或知识记忆中写明动机、预期影响与回滚触发条件。
- **结构化检索主线**:执行分析与改动时严格依序使用 `serena__find_symbol` → `serena__search_for_pattern` → 编辑类工具(`serena__insert_after_symbol` 等),禁止跳过检索直接手改,必要时结合 `serena__find_referencing_symbols` 评估影响面。
- **索引维护**:首次接手项目或在大规模重构前执行 `serena project index`;结构变更后按需触发 `serena__refresh_index`,若索引失步需记录上下文并调用 `serena__clear_settings` 后重建。
- **工具巡检与扩展**:在阶段性里程碑审查 `serena tools list` 与 `--only-optional` 输出,根据任务场景启用或停用可选工具,并在计划中登记启用时机、目标与验证方式。
- **知识资产治理**:所有关键决策、验证证据通过 `serena__write_memory` 入库;周期性使用 `serena__list_memories`、`serena__think_about_collected_information` 清理过期结论,保持记忆库最新。
- **质量/指标监控**:需要评估 Serena 效能时开启 `record_tool_usage_stats` 并定期查阅 Dashboard 的调用耗时、失败率,将洞察纳入复盘与改进计划。
- **最小安全基线**:需要只读分析或外部评审时启用 `read_only: true` 限制编辑工具,结束后恢复默认并记录窗口与影响。
- **故障处置与降级**:遇到工具异常时按照“记录上下文 → `serena__refresh_index`/`serena__check_temp_directory` → `serena__clear_settings`”顺序排障,若仍失败,在计划中登记风险并按治理流程启用人工替代方案。
实战命令
一旦激活,Serena MCP 会暴露工具(如 find_symbol、insert_after_symbol、execute_shell_command),Codex 可以调用它们进行代码任务。以下是典型流程:
- 代码检索与分析:
- 提示:"Find all references to the function 'my_function' in the project."
- Serena 使用语义检索返回相关代码片段,帮助你分析依赖。
- 代码编辑与生成:
- 提示:"Add a new method 'calculate_total' after the 'init' function in main.py, using type annotations."
- 工具如 insert_after_symbol 会自动插入代码;Codex 生成后,Serena 应用变更。
- 代理式任务(Agentic Workflow):
- 提示:"Plan and implement a user authentication feature, including tests."
- 先规划(用 planning 模式),然后执行(切换到 editing 模式)。启用 execute_shell_command 运行 lint/test(需用户许可)。
- 处理大型项目:
- 先索引:"Run serena project index /path/to/project"(加速工具性能)。
- 如果上下文限制,提示:"Prepare for new conversation"(生成总结记忆)。
- 示例完整提示(在 Codex 中):
text
Using Serena, find the main entry point in the codebase, then insert a logging statement at the beginning. Ensure it handles errors.
4. 优化提示与最佳实践
- 代码库准备:从干净 Git 状态开始(git status 清空),启用 linting 和测试(Serena 依赖执行结果评估正确性)。Windows 用户设置 git config core.autocrlf true 处理换行符。
- 模式切换:用 --mode planning(规划)或 --mode interactive(交互)启动服务器;动态切换用 switch_modes 工具。
- 配置调整:编辑 ~/.serena/serena_config.yml 或项目 .serena/project.yml(e.g., read_only: true 防止意外修改)。
- 监控:用仪表盘查看日志;如果工具响应慢,检查类型注解(Serena 依赖静态分析)。
- 故障排除:
- 连接失败:确认服务器运行,端口无占用(netstat -ano | findstr :9121)。
- 权限问题:Codex 沙箱可能需手动批准 shell 执行。
- 更新:运行 uv pip install --upgrade git+https://github.com/oraios/serena 获取最新功能。