-
Notifications
You must be signed in to change notification settings - Fork 7
Adding Luma API docs #612
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
Adding Luma API docs #612
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Pull request overview
This PR adds comprehensive documentation for the Luma API MCP Server toolkit, including API integration examples and enhanced toolkit discovery capabilities.
Key Changes
- Added documentation generator support for non-interactive/CLI usage with command-line arguments
- Enhanced toolkit metadata reading to extract toolkit names from entry points
- Improved toolkit discovery with fallback mechanisms for loading tools directly from source files
Reviewed changes
Copilot reviewed 78 out of 79 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| app/en/mcp-servers/productivity/luma-api/page.mdx | Complete documentation for Luma API integration with 40 tools |
| public/examples/integrations/mcp-servers/luma_api/*.py | Python example files for all 40 Luma API tools |
| public/examples/integrations/mcp-servers/luma_api/*.js | JavaScript example files for all 40 Luma API tools |
| make_toolkit_docs/main.py | Added CLI arguments and non-interactive mode support for doc generation |
| make_toolkit_docs/utils.py | Enhanced toolkit metadata extraction and tool discovery with fallbacks |
| package.json | Updated design system dependency version |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
make_toolkit_docs/utils.py
Outdated
| """Read toolkit metadata from pyproject.toml. | ||
| Returns: | ||
| Tuple of (package_name, toolkit_name) where toolkit_name is from entry points. |
Copilot
AI
Dec 17, 2025
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.
The docstring should document the Args parameter 'toolkit_dir' and specify what happens when toolkit_name cannot be extracted from entry points (it falls back to package_name based on line 75).
| """Read toolkit metadata from pyproject.toml. | |
| Returns: | |
| Tuple of (package_name, toolkit_name) where toolkit_name is from entry points. | |
| """Read toolkit metadata from a toolkit's ``pyproject.toml`` file. | |
| Args: | |
| toolkit_dir: Path to the toolkit's root directory containing ``pyproject.toml``. | |
| Returns: | |
| A tuple ``(package_name, toolkit_name)`` where: | |
| - ``package_name`` is the value of ``project.name``. | |
| - ``toolkit_name`` is resolved from the ``project.entry-points.arcade_toolkits`` | |
| section when available, and falls back to ``package_name`` if it cannot be | |
| extracted from the entry points. |
make_toolkit_docs/utils.py
Outdated
| package_name = None | ||
| toolkit_name = None |
Copilot
AI
Dec 17, 2025
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.
These variables are initialized to None but could be initialized at the beginning of the function instead of in each conditional branch, reducing duplication.
make_toolkit_docs/__main__.py
Outdated
| except Exception as e: | ||
|
|
||
| # Try multiple possible toolkit names | ||
| toolkit_names_to_try = [actual_toolkit_name, server_name] |
Copilot
AI
Dec 17, 2025
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.
Line 335 already includes server_name in the list, so the conditional append on line 337 will create a duplicate. The condition on line 336 should check if actual_toolkit_name == server_name to avoid adding server_name twice, or simply remove the conditional append since server_name is already in the list.
| toolkit_names_to_try = [actual_toolkit_name, server_name] | |
| toolkit_names_to_try = [actual_toolkit_name] |
make_toolkit_docs/__main__.py
Outdated
| # Determine if we're running interactively | ||
| interactive = not any([toolkit_path, toolkit_name, toolkits_dir, docs_section]) | ||
|
|
Copilot
AI
Dec 17, 2025
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.
The interactive mode detection logic may be unclear. If a user provides only some arguments, the tool might behave unexpectedly. Consider documenting this behavior or making the logic more explicit (e.g., requiring all arguments for non-interactive mode).
| # Determine if we're running interactively | |
| interactive = not any([toolkit_path, toolkit_name, toolkits_dir, docs_section]) | |
| # Determine if we're running interactively. | |
| # Non-interactive mode is only enabled when *all* selection arguments are provided. | |
| selection_args_provided = [ | |
| toolkit_path is not None, | |
| toolkit_name is not None, | |
| toolkits_dir is not None, | |
| docs_section is not None, | |
| ] | |
| all_selection_args_provided = all(selection_args_provided) | |
| any_selection_arg_provided = any(selection_args_provided) | |
| if any_selection_arg_provided and not all_selection_args_provided: | |
| console.print( | |
| "[yellow]Some CLI arguments were provided, but not all required for " | |
| "non-interactive mode. Falling back to interactive mode.[/yellow]" | |
| ) | |
| interactive = not all_selection_args_provided |
make_toolkit_docs/__main__.py
Outdated
|
|
||
| # Determine if we're running interactively | ||
| interactive = not any([toolkit_path, toolkit_name, toolkits_dir, docs_section]) | ||
|
|
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.
Bug: Toolkits dir option disables interactive prompts
interactive is inferred as false whenever --toolkits-dir (or a few other flags) is provided, which stops prompting for missing inputs and instead errors in get_selected_toolkit unless --toolkit-name/--toolkit-path (and --docs-section) are also provided. This breaks the common “set base dir but still choose interactively” flow.
| if toolkits_dir != "Enter path manually": | ||
| save_toolkits_dir(toolkits_dir) | ||
| return toolkits_dir | ||
|
|
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.
Note
Adds LumaApi MCP Server docs with JS/Python examples for all tools and bumps the design system to 3.26.0.
app/en/mcp-servers/productivity/luma-api/page.mdxcovering description, authentication, full tool catalog with parameters/secrets, reference enums, and tabbed code links.public/examples/integrations/mcp-servers/luma_api/demonstrating direct calls for all LumaApi tools (authorization + execute patterns).@arcadeai/design-systemto^3.26.0and updatepnpm-lock.yaml.Written by Cursor Bugbot for commit 10dfed7. This will update automatically on new commits. Configure here.