Skip to content

[Refactor] MCP: flatten to mcp_server package (drop src layout)#1584

Merged
CREDO23 merged 1 commit into
MODSetter:mainfrom
CREDO23:refactor-mcp-package-layout
Jul 7, 2026
Merged

[Refactor] MCP: flatten to mcp_server package (drop src layout)#1584
CREDO23 merged 1 commit into
MODSetter:mainfrom
CREDO23:refactor-mcp-package-layout

Conversation

@CREDO23

@CREDO23 CREDO23 commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Rename the import package surfsense_mcpmcp_server and remove the src/ layer, so the project mirrors the backend's shape (project folder ≠ package name, like surfsense_backend/app). Removes the surfsense_mcp/src/surfsense_mcp redundancy.
  • Distribution name and console command (surfsense-mcp) are unchanged — only python -m and internal import paths move to mcp_server.
  • Dockerfile CMD → python -m mcp_server; no PYTHONPATH added since the editable install already makes the package importable.

Test plan

  • uv run python -m mcp_server.selfcheck18 tools registered
  • uv run pytest41 passed

High-level PR Summary

This PR refactors the MCP server package structure by renaming the import package from surfsense_mcp to mcp_server and removing the redundant src/ layer. The distribution name and console command (surfsense-mcp) remain unchanged, but all internal imports and the module invocation command now use mcp_server. This aligns the project structure with the backend's pattern where the project folder name differs from the package name. The changes include updating the pyproject.toml build configuration, Dockerfile CMD, test imports, and all documentation references across README files, the web documentation, and client configuration examples.

⏱️ Estimated Review Time: 5-15 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_mcp/pyproject.toml
2 surfsense_mcp/Dockerfile
3 surfsense_mcp/mcp_server/__init__.py
4 surfsense_mcp/mcp_server/__main__.py
5 surfsense_mcp/mcp_server/config.py
6 surfsense_mcp/mcp_server/server.py
7 surfsense_mcp/mcp_server/selfcheck.py
8 surfsense_mcp/tests/test_auth_headers.py
9 surfsense_mcp/tests/test_client_errors.py
10 surfsense_mcp/tests/test_client_params.py
11 surfsense_mcp/tests/test_note_ingestion.py
12 surfsense_mcp/tests/test_rendering.py
13 surfsense_mcp/tests/test_request_auth.py
14 surfsense_mcp/tests/test_workspace_context.py
15 surfsense_mcp/README.md
16 surfsense_web/content/docs/how-to/mcp-server.mdx
17 surfsense_web/lib/mcp/clients.ts
18 surfsense_mcp/mcp_server/core/__init__.py
19 surfsense_mcp/mcp_server/core/auth/__init__.py
20 surfsense_mcp/mcp_server/core/auth/headers.py
21 surfsense_mcp/mcp_server/core/auth/identity.py
22 surfsense_mcp/mcp_server/core/auth/middleware.py
23 surfsense_mcp/mcp_server/core/client.py
24 surfsense_mcp/mcp_server/core/errors.py
25 surfsense_mcp/mcp_server/core/rendering.py
26 surfsense_mcp/mcp_server/core/transport/__init__.py
27 surfsense_mcp/mcp_server/core/transport/http.py
28 surfsense_mcp/mcp_server/core/workspace_context.py
29 surfsense_mcp/mcp_server/core/workspace_matching.py
30 surfsense_mcp/mcp_server/features/__init__.py
31 surfsense_mcp/mcp_server/features/knowledge_base/__init__.py
32 surfsense_mcp/mcp_server/features/knowledge_base/annotations.py
33 surfsense_mcp/mcp_server/features/knowledge_base/document_tools.py
34 surfsense_mcp/mcp_server/features/knowledge_base/note_ingestion.py
35 surfsense_mcp/mcp_server/features/knowledge_base/search_tools.py
36 surfsense_mcp/mcp_server/features/scrapers/__init__.py
37 surfsense_mcp/mcp_server/features/scrapers/annotations.py
38 surfsense_mcp/mcp_server/features/scrapers/capability.py
39 surfsense_mcp/mcp_server/features/scrapers/platforms/__init__.py
40 surfsense_mcp/mcp_server/features/scrapers/platforms/google_maps.py
41 surfsense_mcp/mcp_server/features/scrapers/platforms/google_search.py
42 surfsense_mcp/mcp_server/features/scrapers/platforms/reddit.py
43 surfsense_mcp/mcp_server/features/scrapers/platforms/web.py
44 surfsense_mcp/mcp_server/features/scrapers/platforms/youtube.py
45 surfsense_mcp/mcp_server/features/scrapers/run_history.py
46 surfsense_mcp/mcp_server/features/workspaces/__init__.py

Need help? Join our Discord

Summary by CodeRabbit

  • Bug Fixes
    • Updated the app’s startup and setup instructions to use the current server launch command.
    • Aligned self-hosted integration examples and verification steps across documentation and generated snippets.
    • Kept runtime behavior and configuration values unchanged aside from the launch entrypoint.

Rename the import package surfsense_mcp -> mcp_server and remove the
src/ layer so the project mirrors the backend's shape (project folder
!= package name, e.g. surfsense_backend/app). Kills the redundant
surfsense_mcp/src/surfsense_mcp nesting.

Distribution name and console command (surfsense-mcp) are unchanged;
only python -m and internal import paths move to mcp_server. Dockerfile
CMD updated; no PYTHONPATH added since the editable install already
makes the package importable.
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

@CREDO23 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c20fd81c-0703-4dc5-a160-d3b60ec6cb4c

📥 Commits

Reviewing files that changed from the base of the PR and between 70a56b9 and 116291a.

📒 Files selected for processing (46)
  • surfsense_mcp/Dockerfile
  • surfsense_mcp/README.md
  • surfsense_mcp/mcp_server/__init__.py
  • surfsense_mcp/mcp_server/__main__.py
  • surfsense_mcp/mcp_server/config.py
  • surfsense_mcp/mcp_server/core/__init__.py
  • surfsense_mcp/mcp_server/core/auth/__init__.py
  • surfsense_mcp/mcp_server/core/auth/headers.py
  • surfsense_mcp/mcp_server/core/auth/identity.py
  • surfsense_mcp/mcp_server/core/auth/middleware.py
  • surfsense_mcp/mcp_server/core/client.py
  • surfsense_mcp/mcp_server/core/errors.py
  • surfsense_mcp/mcp_server/core/rendering.py
  • surfsense_mcp/mcp_server/core/transport/__init__.py
  • surfsense_mcp/mcp_server/core/transport/http.py
  • surfsense_mcp/mcp_server/core/workspace_context.py
  • surfsense_mcp/mcp_server/core/workspace_matching.py
  • surfsense_mcp/mcp_server/features/__init__.py
  • surfsense_mcp/mcp_server/features/knowledge_base/__init__.py
  • surfsense_mcp/mcp_server/features/knowledge_base/annotations.py
  • surfsense_mcp/mcp_server/features/knowledge_base/document_tools.py
  • surfsense_mcp/mcp_server/features/knowledge_base/note_ingestion.py
  • surfsense_mcp/mcp_server/features/knowledge_base/search_tools.py
  • surfsense_mcp/mcp_server/features/scrapers/__init__.py
  • surfsense_mcp/mcp_server/features/scrapers/annotations.py
  • surfsense_mcp/mcp_server/features/scrapers/capability.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/__init__.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/google_maps.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/google_search.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/reddit.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/web.py
  • surfsense_mcp/mcp_server/features/scrapers/platforms/youtube.py
  • surfsense_mcp/mcp_server/features/scrapers/run_history.py
  • surfsense_mcp/mcp_server/features/workspaces/__init__.py
  • surfsense_mcp/mcp_server/selfcheck.py
  • surfsense_mcp/mcp_server/server.py
  • surfsense_mcp/pyproject.toml
  • surfsense_mcp/tests/test_auth_headers.py
  • surfsense_mcp/tests/test_client_errors.py
  • surfsense_mcp/tests/test_client_params.py
  • surfsense_mcp/tests/test_note_ingestion.py
  • surfsense_mcp/tests/test_rendering.py
  • surfsense_mcp/tests/test_request_auth.py
  • surfsense_mcp/tests/test_workspace_context.py
  • surfsense_web/content/docs/how-to/mcp-server.mdx
  • surfsense_web/lib/mcp/clients.ts

📝 Walkthrough

Walkthrough

The surfsense_mcp Python module was renamed to mcp_server. Changes update the Dockerfile CMD, pyproject.toml entrypoint and packaging path, all test imports, README setup instructions, documentation for MCP client integrations, and generated client command snippets to reference the new module name.

Changes

Module rename from surfsense_mcp to mcp_server

Layer / File(s) Summary
Packaging and container entrypoint
surfsense_mcp/pyproject.toml, surfsense_mcp/Dockerfile
Console script entrypoint, wheel packages path, and Docker CMD updated to reference mcp_server instead of surfsense_mcp.
Test import updates
surfsense_mcp/tests/*.py
All test module imports switched from surfsense_mcp.core.* / surfsense_mcp.features.* to corresponding mcp_server.* paths.
Package README setup instructions
surfsense_mcp/README.md
Selfcheck and Cursor/Claude Code startup command examples updated to use python -m mcp_server.
Docs site client integration guide
surfsense_web/content/docs/how-to/mcp-server.mdx
Stdio launch commands for Claude Code, Codex, OpenCode, Cursor, Claude Desktop, VS Code, Windsurf, Gemini CLI, and the troubleshooting selfcheck command updated to python -m mcp_server.
Generated client snippets
surfsense_web/lib/mcp/clients.ts
serverArgs helper and Claude Code/Codex snippet text updated to emit python -m mcp_server commands.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Estimated code review effort: 1 (Trivial) | ~5 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: renaming the MCP import package to mcp_server and removing the src layout.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Tools execution failed with the following error:

Failed to run tools: 13 INTERNAL: Received RST_STREAM with code 2 (Internal server error)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@CREDO23 CREDO23 merged commit ac856ca into MODSetter:main Jul 7, 2026
3 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant