|
Migrate 3D modeling tools to standalone MCP server navi-3d
Phase 0 — Fix MCP error propagation:
- McpClient.call_tool now returns (output, is_error) tuple
- McpTool.execute sets success=False when MCP reports isError=True
- Fixes silent failures where MCP errors looked like success
Phase 1 — Create mcp-server-navi-3d:
- New standalone MCP server in mcp-servers/navi-3d/
- Tools: compile_scad, render_stl, lint_scad
- Session-scoped path resolution via SESSION_FILES_DIR env
- Anti-escape validation for security
- Includes tests/unit/test_scad_analyze.py
Phase 2 — Remove from Navi core:
- Deleted navi/tools/{model_3d,render_3d,scad_lint}.py
- Removed from registry.py builtins and navi/tools/__init__.py
- Updated pyproject.toml testpaths to exclude mcp-servers/
Phase 3 — Wire into Navi config:
- Added navi-3d block to mcp_servers.json (SSE on :8002)
- Updated modeler_3d profile: mcp_servers + updated system_prompt
- All old tool names replaced with mcp_navi-3d_* equivalents
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
|---|
|
|
| mcp-servers/navi-3d/app/__init__.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/app/config.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/app/mcp_server.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/app/model_compile.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/app/render_preview.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/app/scad_analyze.py 0 → 100644 |
|---|
| mcp-servers/navi-3d/pyproject.toml 0 → 100644 |
|---|
| mcp-servers/navi-3d/tests/unit/test_scad_analyze.py 0 → 100644 |
|---|
| mcp_servers.json |
|---|
| navi/core/registry.py |
|---|
| navi/mcp/client.py |
|---|
| navi/mcp/manager.py |
|---|
| navi/mcp/tools.py |
|---|
| navi/profiles/modeler_3d/config.json |
|---|
| navi/profiles/modeler_3d/system_prompt.txt |
|---|
| navi/tools/__init__.py |
|---|
| navi/tools/model_3d.py 100644 → 0 |
|---|
| navi/tools/render_3d.py 100644 → 0 |
|---|
| navi/tools/scad_lint.py 100644 → 0 |
|---|
| pyproject.toml |
|---|
| tests/unit/test_mcp.py |
|---|
| tests/unit/tools/test_scad_lint.py 100644 → 0 |
|---|