feat(mcp): annotate local tools with requires_client_filesystem#1052
Conversation
All 12 tools in the local module now declare @mcp_tool(requires_client_filesystem=True). When hosted with MCP_NO_CLIENT_FILESYSTEM=1, the standard filter in fastmcp-extensions hides these tools automatically. Co-Authored-By: AJ Steers <aj@airbyte.io>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksTesting This PyAirbyte VersionYou can test this version of PyAirbyte using the following: # Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1782756593-requires-client-filesystem' pyairbyte --help
# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1782756593-requires-client-filesystem'PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful ResourcesCommunity SupportQuestions? Join the #pyairbyte channel in our Slack workspace. |
Code Coverage OverviewLanguages: Python Python / code-coverage/pytest-fastThe overall coverage in the branch is 67%. The coverage in the branch is 65%. Show a code coverage summary of the most impacted files.
Python / code-coverage/pytest-no-credsThe overall coverage in the branch is 67%. The coverage in the branch is 65%. Show a code coverage summary of the most impacted files.
Python / code-coverage/pytestThe overall coverage in the branch is 72%. The coverage in the branch is 71%. Show a code coverage summary of the most impacted files.
Updated |
📝 WalkthroughWalkthroughThe PR raises the ChangesLocal MCP Tool Filesystem Capability Flag
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Pull request overview
This PR annotates the MCP “local” tool surface so hosted MCP deployments can automatically hide tools that depend on a client-side filesystem (e.g., Docker, local cache, local .env, local git checkout), using the requires_client_filesystem tool annotation.
Changes:
- Added
requires_client_filesystem=Trueto the@mcp_tool(...)decorator for all tools inairbyte/mcp/local.py. - Enables
fastmcp-extensionsfiltering (e.g., whenMCP_NO_CLIENT_FILESYSTEM=1) to omit these tools fromtools/listwithout changing server registration logic.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
v0.7.0 adds the requires_client_filesystem parameter to mcp_tool(). Co-Authored-By: AJ Steers <aj@airbyte.io>
Summary
All 12 tools in
airbyte/mcp/local.pynow declare@mcp_tool(requires_client_filesystem=True). These tools require Docker, local DuckDB cache, local.envfiles, or a local git checkout — none of which are available in a hosted MCP environment.When the server runs with
MCP_NO_CLIENT_FILESYSTEM=1(e.g., Cloud Run), the standardno_client_filesystem_filterinfastmcp-extensionsautomatically hides these tools fromtools/list. No changes toserver.pyor the existingAIRBYTE_MCP_DOMAINS_DISABLED=localmechanism — this annotation adds a complementary, tool-level signal.Depends on: airbytehq/fastmcp-extensions#62
Link to Devin session: https://app.devin.ai/sessions/44011da412754582858f85b6e6574316
Requested by: Aaron ("AJ") Steers (@aaronsteers)
Summary by CodeRabbit
fastmcp-extensionsdependency to a newer version within the same major release range.Important
Auto-merge enabled.
This PR is set to merge automatically when all requirements are met.