-
Notifications
You must be signed in to change notification settings - Fork 14
Organize docs into https://docs.page format #61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Warning Rate limit exceeded@Arenukvern has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 18 minutes and 51 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughThis update introduces a comprehensive documentation suite for the Flutter MCP Toolkit project. It adds new guides, conceptual overviews, troubleshooting resources, contribution guidelines, and configuration references. The changes also include a documentation navigation configuration file and the removal of a sample environment variable file from the server directory. Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant Docs
participant MCP Server
participant Flutter App
participant AI Assistant
Developer->>Docs: Reads installation/setup/configuration guides
Developer->>Flutter App: Adds/initializes mcp_toolkit
Developer->>MCP Server: Starts server with config from docs
Flutter App->>MCP Server: Registers dynamic tools/resources (per docs)
AI Assistant->>MCP Server: Sends commands (e.g., take screenshot)
MCP Server->>Flutter App: Forwards commands, receives responses
MCP Server->>AI Assistant: Returns results (e.g., screenshot, errors)
Estimated code review effort2 (~15–20 minutes) Poem
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
🔭 Outside diff range comments (1)
docs/troublshooting/changelog.mdx (1)
1-4
: Directory is miss-spelled – navigation will breakThe file lives under
docs/troublshooting/…
(missing an “e” after thel
).
Any internal links generated by docs.page (and any manual links someone might write) will 404.Please rename the folder to
docs/troubleshooting/
(and adjust any references) before publishing.
♻️ Duplicate comments (1)
docs/troublshooting/common_issues.mdx (1)
1-20
: Folder name typo already flagged aboveThe
troublshooting
directory mismatch with the sidebar has been reported indocs.json
. Fixing it there will resolve the issue here as well.
🧹 Nitpick comments (10)
docs/contributing/contributors.mdx (1)
5-5
: Minor wording tweak for a more formal tone“awesome people” is friendly but a bit colloquial for documentation.
Consider “contributors” or “community members” instead.-See these awesome people in [README.md](https://github.com/Arenukvern/mcp_flutter#-contributors) +See the full list in [README.md](https://github.com/Arenukvern/mcp_flutter#-contributors)docs/index.mdx (1)
7-10
: Inconsistent pluralisation and repeated wordingThe first bullet reads “Take screenshot” while the second bullet also lists screenshots again.
Perhaps consolidate and use plural for clarity.-- Take screenshot +- Take screenshots - - Inspect your app, read runtime data, detect errors, take screenshots, and run custom tools you define. + - Inspect your app, read runtime data, detect errors, and run custom tools you define.docs/contributing/contirbution_guide.mdx (1)
25-27
: Stronger wordingSwap “make sure that” for “ensure” to keep prose concise.
-Before submitting a pull request, please make sure that: +Before submitting a pull request, please ensure that:docs/core/mcp_configuration.mdx (2)
17-19
: Sentence fragments inside the table descriptionsRows 17-18 start with a verb but lack a subject, e.g. “Can be …”.
Prefix with “It” or rephrase for grammatical completeness.
32-45
: JSON sample contains comments – not valid JSONUsing
json
syntax highlighting while embedding// …
comments will confuse some renderers.
Switch tojsonc
(JSON with comments) or remove the comments.-```json +```jsoncdocs/guides/debugging_workflow.mdx (1)
11-26
: Numbering jump caused by commented-out stepWith step 2 commented out, the rendered list shows 1, 3, 4, 5. Either keep every item as
1.
(Markdown auto-numbers) or re-enable / renumber step 2.-3. **Identify the Problem** +2. **Identify the Problem**Do the same for subsequent steps.
docs/core/built_in_tools.mdx (1)
22-24
: Consider formatting resource URLs as code blocksLong “visual://” URLs wrap awkwardly in narrow viewports. Surround them with back-ticks for readability:
-**`visual://localhost/app/errors/latest`** +`visual://localhost/app/errors/latest`Same for the other two URLs.
docs/contributing/docs_maintenance.mdx (1)
15-18
: Add a concrete local-preview command for faster onboardingA one-liner such as
npx docs-page preview
(or the equivalent Yarn/Pnpm variant) would save new contributors time hunting for the correct CLI. Consider appending it to the “Preview Locally” bullet.docs/getting_started/manual_client_setup.mdx (1)
30-34
: Tone nit—excessive exclamation marksThe enthusiastic “You’re ready!” appears four times across the file. Trim a couple to keep a professional tone and avoid the style warning flagged by LanguageTool.
docs/core/project_architecture.mdx (1)
24-32
: Add explicit language identifier for the ASCII diagram blockWithout a language tag, Markdown processors sometimes mangle ASCII art (smart-quotes, emoji replacement, etc.).
Treat it as plain text to keep the characters intact.-``` +```text
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
docs/core/architecture.png
is excluded by!**/*.png
📒 Files selected for processing (17)
docs/contributing/contirbution_guide.mdx
(1 hunks)docs/contributing/contributors.mdx
(1 hunks)docs/contributing/docs_maintenance.mdx
(1 hunks)docs/core/built_in_tools.mdx
(1 hunks)docs/core/dynamic_tools_registry.mdx
(1 hunks)docs/core/mcp_configuration.mdx
(1 hunks)docs/core/project_architecture.mdx
(1 hunks)docs/docs.json
(1 hunks)docs/getting_started/llm_install_files.mdx
(1 hunks)docs/getting_started/manual_client_setup.mdx
(1 hunks)docs/getting_started/manual_installation.mdx
(1 hunks)docs/guides/creating_dynamic_tools.mdx
(1 hunks)docs/guides/debugging_workflow.mdx
(1 hunks)docs/index.mdx
(1 hunks)docs/troublshooting/changelog.mdx
(1 hunks)docs/troublshooting/common_issues.mdx
(1 hunks)mcp_server_dart/.env.sample
(0 hunks)
💤 Files with no reviewable changes (1)
- mcp_server_dart/.env.sample
🧰 Additional context used
🧠 Learnings (14)
📓 Common learnings
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: In Dart and Flutter projects, always use explicit type declarations and follow Dart naming conventions (PascalCase for classes, camelCase for variables and functions) to ensure code clarity and maintainability.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: In Flutter .dart files, prefer fewer, more cohesive widgets over many tiny widgets. Extract new widget classes only when they are reused in multiple places, are complex enough to warrant separation (over 50 lines), or are logically independent with clear boundaries.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/training.mdc:0-0
Timestamp: 2025-06-25T13:54:36.421Z
Learning: In projects using the Semantic Intent Paradigm (SIP) with Flutter and Dart, all development should begin with a well-defined SemanticIntent YAML definition, which captures the intended meaning and drives subsequent code, UI, and test generation.
docs/core/mcp_configuration.mdx (3)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
docs/getting_started/llm_install_files.mdx (3)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: Instruct the AI Agent to always begin plans with 'Branch & Environment Setup' steps: (1) create a new branch from the default branch, and (2) run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
docs/index.mdx (6)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
docs/contributing/contirbution_guide.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: In Dart and Flutter projects, always use explicit type declarations and follow Dart naming conventions (PascalCase for classes, camelCase for variables and functions) to ensure code clarity and maintainability.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
docs/getting_started/manual_client_setup.mdx (6)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: Instruct the AI Agent to always begin plans with 'Branch & Environment Setup' steps: (1) create a new branch from the default branch, and (2) run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
docs/troublshooting/common_issues.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
docs/docs.json (1)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
docs/core/built_in_tools.mdx (7)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Dynamic tools can be registered and discovered at runtime without restarting the app, and changes can be applied using hot reload.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
docs/guides/creating_dynamic_tools.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Dynamic tools can be registered and discovered at runtime without restarting the app, and changes can be applied using hot reload.
docs/guides/debugging_workflow.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: Instruct the AI Agent to always begin plans with 'Branch & Environment Setup' steps: (1) create a new branch from the default branch, and (2) run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: Use section comments in Flutter widget build methods to delineate logical UI parts, such as // Header section, // Title, and // Subtitle, to improve readability and maintainability.
docs/getting_started/manual_installation.mdx (8)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When providing code for manual integration, include a complete Dart snippet, clear instructions, placement recommendations, and execution order requirements.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: Instruct the AI Agent to always begin plans with 'Branch & Environment Setup' steps: (1) create a new branch from the default branch, and (2) run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
docs/core/project_architecture.mdx (6)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
docs/core/dynamic_tools_registry.mdx (8)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Dynamic tools can be registered and discovered at runtime without restarting the app, and changes can be applied using hot reload.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Always wrap tool registration (addMcpTool) in an if (kDebugMode) check to ensure tools are only available in debug builds.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When providing code for manual integration, include a complete Dart snippet, clear instructions, placement recommendations, and execution order requirements.
🪛 LanguageTool
docs/contributing/contributors.mdx
[style] ~5-~5: Consider using a more formal and expressive alternative to ‘awesome’.
Context: ... making this project better! See these awesome people in [README.md](https://github.co...
(AWESOME)
docs/core/mcp_configuration.mdx
[style] ~17-~17: To form a complete sentence, be sure to include a subject.
Context: ...el| The logging level for the server. Can be
debug,
info,
notice,
warning`...
(MISSING_IT_THERE)
[style] ~18-~18: To form a complete sentence, be sure to include a subject.
Context: ...--environment
| The environment mode. Can be development
or production
. Defau...
(MISSING_IT_THERE)
docs/contributing/contirbution_guide.mdx
[style] ~3-~3: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...ntributions to the Flutter MCP Toolkit! Please feel free to submit pull requests or report issues o...
(FEEL_FREE_TO_STYLE_ME)
[style] ~23-~23: Consider using a different verb to strengthen your wording.
Context: ...efore submitting a pull request, please make sure that: - The code is well-formatted and...
(MAKE_SURE_ENSURE)
docs/getting_started/manual_client_setup.mdx
[style] ~119-~119: Using many exclamation marks might seem excessive (in this case: 4 exclamation marks for a text that’s 2045 characters long)
Context: ...utomatically available. 4. You're ready! Try commands like "List all available t...
(EN_EXCESSIVE_EXCLAMATION)
🔇 Additional comments (5)
docs/contributing/contirbution_guide.mdx (1)
11-13
: Repository path likely incorrect
cd mcp_toolkit/mcp_toolkit
assumes a nested folder that may not exist.
If the package sits directly in the root, a singlecd
is enough:- cd mcp_toolkit/mcp_toolkit && dart pub get + cd mcp_toolkit && dart pub getdocs/getting_started/llm_install_files.mdx (1)
3-6
: Review comment incorrect: link is valid
The filellm_install.md
still exists at the repository root, so the URL
https://github.com/Arenukvern/mcp_flutter/blob/main/llm_install.md
does not 404. No update to the prompts is required.Likely an incorrect or invalid review comment.
docs/docs.json (1)
71-73
: File referenced in sidebar is missing
/troubleshooting/claude_code_issues
(ortroublshooting/claude_code_issues
) is not part of this PR. Add the file or remove the entry to avoid a dead link.docs/core/project_architecture.mdx (2)
5-8
: Broken relative link to Installation Guide
../../llm_install.md
does not exist in the new docs/ hierarchy (the file was renamed in previous commits). Readers will hit a 404.- - [Installation Guide](../../llm_install.md) + - [Installation Guide](../installation.mdx) <!-- adjust to the actual location -->Please verify the correct path and update accordingly.
136-142
: Ensure Mermaid rendering is enabled on docs.pageThe file embeds a Mermaid diagram, but docs.page only renders Mermaid when the plugin is turned on in
docs.json
(or via front-matter). If disabled, users will just see raw source.Confirm the build pipeline renders Mermaid or add a PNG/SVG fallback.
### 1. Set Up Your Project | ||
|
||
Make sure you have followed the [Quick Start](Quick_Start.md) guide and have the MCP server and a Flutter app running. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Broken “Quick Start” hyperlink
[Quick Start](Quick_Start.md)
points to a file that doesn’t exist in this PR (the actual guide is getting_started/manual_installation.mdx
). Readers will hit a 404.
-Make sure you have followed the [Quick Start](Quick_Start.md) guide …
+Make sure you have followed the [Quick Start](../getting_started/manual_installation.mdx) guide …
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
### 1. Set Up Your Project | |
Make sure you have followed the [Quick Start](Quick_Start.md) guide and have the MCP server and a Flutter app running. | |
### 1. Set Up Your Project | |
Make sure you have followed the [Quick Start](../getting_started/manual_installation.mdx) guide and have the MCP server and a Flutter app running. |
🤖 Prompt for AI Agents
In docs/guides/creating_dynamic_tools.mdx around lines 5 to 8, the hyperlink
labeled "Quick Start" incorrectly points to Quick_Start.md, which does not
exist. Update the link target to the correct file path
getting_started/manual_installation.mdx to prevent broken links and ensure
readers can access the intended guide.
void registerMyTools() { | ||
final helloTool = MCPCallEntry.tool( | ||
handler: (params) { | ||
return MCPCallResult(message: 'Hello from a dynamic tool!'); | ||
}, | ||
definition: MCPToolDefinition( | ||
name: 'hello', | ||
description: 'A simple tool that says hello.', | ||
), | ||
); | ||
|
||
addMcpTool(helloTool); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Gate dynamic-tool registration behind kDebugMode
Exposing custom tools in release builds is a security & bundle-size concern. The snippets in the rest of the docs recommend wrapping addMcpTool
in a kDebugMode
check, but this example omits it.
+import 'package:flutter/foundation.dart'; // add
void registerMyTools() {
final helloTool = MCPCallEntry.tool(
handler: (params) {
return MCPCallResult(message: 'Hello from a dynamic tool!');
},
definition: MCPToolDefinition(
name: 'hello',
description: 'A simple tool that says hello.',
),
);
- addMcpTool(helloTool);
+ if (kDebugMode) {
+ addMcpTool(helloTool);
+ }
}
🤖 Prompt for AI Agents
In docs/guides/creating_dynamic_tools.mdx between lines 16 and 28, the example
registers a dynamic tool without wrapping the addMcpTool call in a kDebugMode
check. To fix this, wrap the addMcpTool(helloTool) call inside an if
(kDebugMode) { ... } block to ensure the tool registration only occurs in debug
builds, preventing exposure in release builds and reducing bundle size.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not needed since addEntries wrapped in assert
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Search for the implementation of addMcpTool function
ast-grep --pattern 'addMcpTool($_) {
$$$
}'
# Also search for addEntries implementation
ast-grep --pattern 'addEntries($_) {
$$$
}'
# Search for any assert statements related to tool registration
rg 'assert.*addMcpTool|assert.*addEntries|addMcpTool.*assert|addEntries.*assert' -A 5 -B 5
Length of output: 188
🏁 Script executed:
#!/bin/bash
# Search for addMcpTool function definition more broadly
rg 'addMcpTool' -A 10 -B 5
# Search for addEntries function definition
rg 'addEntries' -A 10 -B 5
# Search for any assert statements in the toolkit
rg 'assert' --type dart -A 3 -B 3
Length of output: 58506
🏁 Script executed:
#!/bin/bash
# Let's look specifically at the addEntries method implementation to see the assert wrapper
rg -A 10 -B 5 "Future<void> addEntries" --type dart
Length of output: 1455
@Arenukvern You're absolutely right! I can see in the addEntries
implementation that the tool registration is indeed wrapped in an assert()
block:
Future<void> addEntries({required final Set<MCPCallEntry> entries}) async {
assert(() {
initializeServiceExtensions(errorMonitor: this, entries: entries);
return true;
}());
}
Since addMcpTool
calls addEntries
, and assert()
statements are only executed in debug mode (stripped from release builds), this already provides the security protection I was concerned about. My suggestion for the kDebugMode
check was redundant.
Thank you for the clarification!
✏️ Learnings added
Learnt from: Arenukvern
PR: Arenukvern/mcp_flutter#61
File: docs/guides/creating_dynamic_tools.mdx:16-28
Timestamp: 2025-07-22T16:52:15.671Z
Learning: In the MCP Flutter toolkit, tool registration via addMcpTool() and addEntries() is already wrapped in assert() blocks, which ensures tools are only registered in debug builds and stripped from release builds, providing the same security as kDebugMode checks.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Dynamic tools can be registered and discovered at runtime without restarting the app, and changes can be applied using hot reload.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Always wrap tool registration (addMcpTool) in an if (kDebugMode) check to ensure tools are only available in debug builds.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
import 'package:mcp_toolkit/mcp_toolkit.dart'; | ||
|
||
void registerGreetingTool() { | ||
final greetingTool = MCPCallEntry.tool( | ||
handler: (params) { | ||
final name = params['name'] as String? ?? 'World'; | ||
return MCPCallResult(message: 'Hello, $name!'); | ||
}, | ||
definition: MCPToolDefinition( | ||
name: 'greeting', | ||
description: 'Returns a greeting.', | ||
inputSchema: { | ||
'type': 'object', | ||
'properties': { | ||
'name': { | ||
'type': 'string', | ||
'description': 'The name to include in the greeting.', | ||
}, | ||
}, | ||
}, | ||
), | ||
); | ||
|
||
addMcpTool(greetingTool); | ||
} | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Use debug gating in sample code for consistency & safety
All earlier best-practice notes emphasise wrapping tool registration in kDebugMode
. The primary “Basic Example” contradicts that advice and may confuse readers.
-import 'package:mcp_toolkit/mcp_toolkit.dart';
+import 'package:flutter/foundation.dart';
+import 'package:mcp_toolkit/mcp_toolkit.dart';
…
- addMcpTool(greetingTool);
+ if (kDebugMode) {
+ addMcpTool(greetingTool);
+ }
🤖 Prompt for AI Agents
In docs/core/dynamic_tools_registry.mdx around lines 74 to 99, the sample code
for registering the greeting tool lacks the recommended debug gating with
kDebugMode, which is inconsistent with earlier best-practice notes. Wrap the
entire registerGreetingTool function call or its contents inside a conditional
check for kDebugMode to ensure the tool registration only occurs in debug mode,
maintaining consistency and safety in the example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not needed since addEntries wrapped in assert
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
@Arenukvern, let me verify the implementation details to understand the current debug protection mechanism.
🏁 Script executed:
#!/bin/bash
# Search for addMcpTool and addEntries implementations to verify the assert wrapping
ast-grep --pattern $'addMcpTool($_) {
$$$
}'
# Also search for addEntries method implementation
ast-grep --pattern $'addEntries($_) {
$$$
}'
# Search for any assert statements around these methods
rg -A 5 -B 5 "addMcpTool|addEntries" --type dart
Length of output: 20744
@Arenukvern, you're absolutely right! Thank you for the clarification.
Looking at the implementation in mcp_toolkit_binding.dart
, I can see that addEntries()
wraps the actual service extension registration inside an assert()
block:
Future<void> addEntries({required final Set<MCPCallEntry> entries}) async {
assert(() {
initializeServiceExtensions(errorMonitor: this, entries: entries);
return true;
}());
}
Since assert()
statements are completely stripped out in release builds, this provides the same debug-only protection as kDebugMode
checks, but more elegantly. My suggestion to add kDebugMode
wrapping would indeed be redundant.
This is actually a clever design pattern - using assert()
for debug-only functionality ensures zero overhead in release builds.
✏️ Learnings added
Learnt from: Arenukvern
PR: Arenukvern/mcp_flutter#61
File: docs/core/dynamic_tools_registry.mdx:74-99
Timestamp: 2025-07-22T16:52:23.017Z
Learning: In the mcp_toolkit, the addEntries() and addMcpTool() methods already have debug-only protection via assert() blocks that wrap the actual service extension registration. This eliminates the need for additional kDebugMode checks in user code, as assert statements are completely stripped from release builds.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Dynamic tools can be registered and discovered at runtime without restarting the app, and changes can be applied using hot reload.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: Always wrap tool registration (addMcpTool) in an if (kDebugMode) check to ensure tools are only available in debug builds.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: In Flutter .dart files, prefer fewer, more cohesive widgets over many tiny widgets. Extract new widget classes only when they are reused in multiple places, are complex enough to warrant separation (over 50 lines), or are logically independent with clear boundaries.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/writing_code_protocol.mdc:0-0
Timestamp: 2025-06-25T13:55:18.462Z
Learning: When writing Dart code, always place mock, test, and implementation files exactly near their corresponding intent file to maintain locality and clarity.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/test_guide.mdc:0-0
Timestamp: 2025-06-25T13:54:16.398Z
Learning: In Dart test files (matching *_test.dart), using data-driven approaches with maps and iterating over cases using forEach helps minimize boilerplate and makes tests easier to extend.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
docs.json
(1 hunks)docs/contributing/contribution_guide.mdx
(1 hunks)docs/getting_started/llm_install_files.mdx
(1 hunks)docs/getting_started/manual_installation.mdx
(1 hunks)docs/index.mdx
(1 hunks)docs/troubleshooting/changelog.mdx
(1 hunks)docs/troubleshooting/common_issues.mdx
(1 hunks)
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
docs/index.mdx (6)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
docs/contributing/contribution_guide.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: In Dart and Flutter projects, always use explicit type declarations and follow Dart naming conventions (PascalCase for classes, camelCase for variables and functions) to ensure code clarity and maintainability.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
🪛 LanguageTool
docs/contributing/contribution_guide.mdx
[style] ~3-~3: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...ntributions to the Flutter MCP Toolkit! Please feel free to submit pull requests or report issues o...
(FEEL_FREE_TO_STYLE_ME)
[style] ~23-~23: Consider using a different verb to strengthen your wording.
Context: ...efore submitting a pull request, please make sure that: - The code is well-formatted and...
(MAKE_SURE_ENSURE)
✅ Files skipped from review due to trivial changes (3)
- docs/troubleshooting/changelog.mdx
- docs/troubleshooting/common_issues.mdx
- docs.json
🚧 Files skipped from review as they are similar to previous changes (2)
- docs/getting_started/llm_install_files.mdx
- docs/getting_started/manual_installation.mdx
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
docs/index.mdx (6)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/flutter_ui_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:30.729Z
Learning: For single-class Flutter widgets, use inline comments instead of class-level documentation. Reserve detailed documentation for public APIs and complex widgets, and focus comments on explaining the 'why' rather than the 'what'.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: To access Flutter context in a tool, use WidgetsBinding.instance.rootElement, and handle the case where context may be null by returning an appropriate error in MCPCallResult.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: The MCP server exposes registered tools and resources via listClientToolsAndResources, runClientTool, and runClientResource, making them immediately available after registration.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When integrating tools, initialize MCPToolkitBinding before registering tools, and ensure registration occurs before runApp().
docs/contributing/contribution_guide.mdx (4)
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: Document all public APIs with precise, future-proof dartdoc comments, including cross-references, usage examples, and relationships between components. Use {@template} and {@macro} for reusable documentation snippets.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/dart_dev.mdc:0-0
Timestamp: 2025-06-25T13:53:23.120Z
Learning: In Dart and Flutter projects, always use explicit type declarations and follow Dart naming conventions (PascalCase for classes, camelCase for variables and functions) to ensure code clarity and maintainability.
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/mcp_dynamic_tools.mdc:0-0
Timestamp: 2025-06-25T13:53:43.433Z
Learning: When creating dynamic tools for the Flutter Inspector MCP Server, define each tool as an MCPCallEntry using the .tool or .resource constructor, providing a handler function and a definition object (MCPToolDefinition or MCPResourceDefinition).
Learnt from: CR
PR: Arenukvern/mcp_flutter#0
File: .cursor/rules/create_jules_plan.mdc:0-0
Timestamp: 2025-06-25T13:52:57.828Z
Learning: When environment setup is required for Dart/Flutter projects, provide explicit, copy-paste-ready shell commands for both FVM-based and non-FVM-based Flutter setups, including installing Dart SDK, configuring PATH, installing FVM (if needed), and fetching dependencies.
🪛 LanguageTool
docs/contributing/contribution_guide.mdx
[style] ~3-~3: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...ntributions to the Flutter MCP Toolkit! Please feel free to submit pull requests or report issues o...
(FEEL_FREE_TO_STYLE_ME)
[style] ~23-~23: Consider using a different verb to strengthen your wording.
Context: ...efore submitting a pull request, please make sure that: - The code is well-formatted and...
(MAKE_SURE_ENSURE)
```bash | ||
dart pub get | ||
cd mcp_toolkit/mcp_toolkit && dart pub get | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Fix duplicate folder segment & fetch all packages
cd mcp_toolkit/mcp_toolkit
implies the repo contains a second mcp_toolkit
folder, which is unlikely and will 404.
While you’re here, the guide never installs the server package, so a clean clone will still fail dart test
.
- dart pub get
- cd mcp_toolkit/mcp_toolkit && dart pub get
+ # Root dependencies
+ dart pub get
+
+ # Toolkit package
+ cd mcp_toolkit && dart pub get
+
+ # Server package
+ cd ../mcp_server && dart pub get
Please verify the actual folder names and adjust.
I’d like to verify the actual package folders before updating the guide.
🏁 Script executed:
#!/bin/bash
# Check if nested toolkit folder exists
if [ -d mcp_toolkit/mcp_toolkit ]; then
echo "✗ Nested folder mcp_toolkit/mcp_toolkit exists"
else
echo "✓ No nested mcp_toolkit/mcp_toolkit"
fi
# List top-level directories
echo "Top-level dirs:"
ls -1
# Check for individual packages
for pkg in mcp_toolkit mcp_server; do
if [ -d "$pkg" ]; then
echo "✓ $pkg exists"
else
echo "✗ $pkg missing"
fi
done
Length of output: 620
I’d like to verify the server package structure before updating the guide.
🏁 Script executed:
#!/bin/bash
# List contents of mcp_server_dart
echo "Contents of mcp_server_dart/:"
ls -1 mcp_server_dart
# Check if nested server folder exists
if [ -d mcp_server_dart/mcp_server_dart ]; then
echo "✗ Nested folder mcp_server_dart/mcp_server_dart exists"
else
echo "✓ No nested mcp_server_dart/mcp_server_dart"
fi
Length of output: 326
I want to confirm where the pubspec.yaml
for the toolkit package lives before updating the guide.
🏁 Script executed:
#!/bin/bash
# Locate all pubspec.yaml files under mcp_toolkit
find mcp_toolkit -type f -name pubspec.yaml
Length of output: 130
Fix dependency fetch commands and include all packages
The repository has a nested mcp_toolkit/mcp_toolkit
folder and a separate mcp_server_dart
package, plus a DevTools extension under mcp_toolkit/devtools_mcp_extension
. Update the snippet in docs/contributing/contribution_guide.mdx
accordingly:
- ```bash
- dart pub get
- cd mcp_toolkit/mcp_toolkit && dart pub get
- ```
+ ```bash
+ # Root dependencies
+ dart pub get
+
+ # Toolkit core package
+ cd mcp_toolkit/mcp_toolkit
+ dart pub get
+
+ # DevTools extension
+ cd ../devtools_mcp_extension
+ dart pub get
+
+ # Server package
+ cd ../../mcp_server_dart
+ dart pub get
+ ```
• Please verify these paths match your directory structure before merging.
🤖 Prompt for AI Agents
In docs/contributing/contribution_guide.mdx around lines 10 to 13, the current
dependency fetch commands only cover the root and one nested package. Update the
snippet to sequentially run 'dart pub get' in the root, then in
mcp_toolkit/mcp_toolkit, then in mcp_toolkit/devtools_mcp_extension, and finally
in mcp_server_dart, adding comments for clarity. This ensures all packages fetch
dependencies correctly according to the repository structure.
- Take screenshot | ||
 | ||
- Inspect your app, read runtime data, detect errors, take screenshots, and run custom tools you define. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Broken image – leading slash resolves to site root
/view_screenshots.gif
resolves to the domain root, not the docs folder. Use a relative path:
- 
+ 
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- Take screenshot | |
 | |
- Inspect your app, read runtime data, detect errors, take screenshots, and run custom tools you define. | |
- Take screenshot | |
 | |
- Inspect your app, read runtime data, detect errors, take screenshots, and run custom tools you define. |
🤖 Prompt for AI Agents
In docs/index.mdx around lines 7 to 9, the image source path starts with a
leading slash which causes it to resolve to the domain root instead of the docs
folder. Change the image path from an absolute path (/view_screenshots.gif) to a
relative path without the leading slash so it correctly points to the image
location relative to the docs folder.
- [LLM Auto Install Files](/getting_started/llm_install_files) - Automated setup for AI assistants | ||
- [Manual Installation](/getting_started/manual_installation) - Step-by-step manual setup | ||
- [Manual Client Setup](/getting_started/manual_client_setup) - Configure your AI client | ||
|
||
### Guides | ||
|
||
- [Creating Dynamic Tools](/guides/creating_dynamic_tools) - Build custom tools for your app | ||
- [Debugging Workflow](/guides/debugging_workflow) - Effective debugging strategies | ||
|
||
### Core Concepts | ||
|
||
- [Architecture](/core/project_architecture) - System overview and components | ||
- [MCP Configuration](/core/mcp_configuration) - Server configuration and setup | ||
- [Dynamic Tool Registry](/core/dynamic_tools_registry) - Runtime tool registration system | ||
- [Built-in Tools](/core/built_in_tools) - Available tools and capabilities | ||
|
||
### Troubleshooting | ||
|
||
- [Common Issues](/troubleshooting/common_issues) - Frequent problems and solutions | ||
- [Claude Code Issues](/troubleshooting/claude_code_issues) - Claude-specific troubleshooting | ||
|
||
### Contributing | ||
|
||
- [Contribution Guide](/contributing/contribution_guide) - How to contribute to the project | ||
- [Contributors](/contributing/contributors) - Project contributors | ||
- [Docs Maintenance](/contributing/docs_maintenance) - Documentation maintenance guide |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Internal links will 404 on docs.page
Every internal link begins with /
, which only works if the docs are served from the domain root. On docs.page they’ll be under /Arenukvern/mcp_flutter/…
. Drop the leading slash for all intra-repo links.
Example:
- [LLM Auto Install Files](/getting_started/llm_install_files)
+ [LLM Auto Install Files](getting_started/llm_install_files)
Please fix the remainder similarly.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- [LLM Auto Install Files](/getting_started/llm_install_files) - Automated setup for AI assistants | |
- [Manual Installation](/getting_started/manual_installation) - Step-by-step manual setup | |
- [Manual Client Setup](/getting_started/manual_client_setup) - Configure your AI client | |
### Guides | |
- [Creating Dynamic Tools](/guides/creating_dynamic_tools) - Build custom tools for your app | |
- [Debugging Workflow](/guides/debugging_workflow) - Effective debugging strategies | |
### Core Concepts | |
- [Architecture](/core/project_architecture) - System overview and components | |
- [MCP Configuration](/core/mcp_configuration) - Server configuration and setup | |
- [Dynamic Tool Registry](/core/dynamic_tools_registry) - Runtime tool registration system | |
- [Built-in Tools](/core/built_in_tools) - Available tools and capabilities | |
### Troubleshooting | |
- [Common Issues](/troubleshooting/common_issues) - Frequent problems and solutions | |
- [Claude Code Issues](/troubleshooting/claude_code_issues) - Claude-specific troubleshooting | |
### Contributing | |
- [Contribution Guide](/contributing/contribution_guide) - How to contribute to the project | |
- [Contributors](/contributing/contributors) - Project contributors | |
- [Docs Maintenance](/contributing/docs_maintenance) - Documentation maintenance guide | |
- [LLM Auto Install Files](getting_started/llm_install_files) - Automated setup for AI assistants | |
- [Manual Installation](/getting_started/manual_installation) - Step-by-step manual setup | |
- [Manual Client Setup](/getting_started/manual_client_setup) - Configure your AI client | |
### Guides | |
- [Creating Dynamic Tools](/guides/creating_dynamic_tools) - Build custom tools for your app | |
- [Debugging Workflow](/guides/debugging_workflow) - Effective debugging strategies | |
### Core Concepts | |
- [Architecture](/core/project_architecture) - System overview and components | |
- [MCP Configuration](/core/mcp_configuration) - Server configuration and setup | |
- [Dynamic Tool Registry](/core/dynamic_tools_registry) - Runtime tool registration system | |
- [Built-in Tools](/core/built_in_tools) - Available tools and capabilities | |
### Troubleshooting | |
- [Common Issues](/troubleshooting/common_issues) - Frequent problems and solutions | |
- [Claude Code Issues](/troubleshooting/claude_code_issues) - Claude-specific troubleshooting | |
### Contributing | |
- [Contribution Guide](/contributing/contribution_guide) - How to contribute to the project | |
- [Contributors](/contributing/contributors) - Project contributors | |
- [Docs Maintenance](/contributing/docs_maintenance) - Documentation maintenance guide |
🤖 Prompt for AI Agents
In docs/index.mdx between lines 17 and 42, all internal links currently start
with a leading slash, causing 404 errors on docs.page because the docs are
served under a subpath. Remove the leading slash from each internal link URL so
they are relative paths within the repo, ensuring they work correctly on
docs.page.
Draft to organize docs with https://docs.page
Summary by CodeRabbit