Skip to content

Conversation

@jottakka
Copy link
Contributor

@jottakka jottakka commented Dec 17, 2025

Note

Adds LumaApi MCP Server docs with JS/Python examples for all tools and bumps the design system to 3.26.0.

  • Docs:
    • Add comprehensive LumaApi MCP Server page app/en/mcp-servers/productivity/luma-api/page.mdx covering description, authentication, full tool catalog with parameters/secrets, reference enums, and tabbed code links.
  • Examples:
    • Add JavaScript and Python example scripts under public/examples/integrations/mcp-servers/luma_api/ demonstrating direct calls for all LumaApi tools (authorization + execute patterns).
  • Dependencies:
    • Bump @arcadeai/design-system to ^3.26.0 and update pnpm-lock.yaml.

Written by Cursor Bugbot for commit 10dfed7. This will update automatically on new commits. Configure here.

@vercel
Copy link

vercel bot commented Dec 17, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
docs Ready Ready Preview, Comment Dec 17, 2025 9:21pm

@jottakka jottakka requested review from byrro and Copilot December 17, 2025 21:09
Copy link
Contributor

Copilot AI left a 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.

Comment on lines 52 to 55
"""Read toolkit metadata from pyproject.toml.
Returns:
Tuple of (package_name, toolkit_name) where toolkit_name is from entry points.
Copy link

Copilot AI Dec 17, 2025

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).

Suggested change
"""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.

Copilot uses AI. Check for mistakes.
Comment on lines 62 to 63
package_name = None
toolkit_name = None
Copy link

Copilot AI Dec 17, 2025

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.

Copilot uses AI. Check for mistakes.
except Exception as e:

# Try multiple possible toolkit names
toolkit_names_to_try = [actual_toolkit_name, server_name]
Copy link

Copilot AI Dec 17, 2025

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.

Suggested change
toolkit_names_to_try = [actual_toolkit_name, server_name]
toolkit_names_to_try = [actual_toolkit_name]

Copilot uses AI. Check for mistakes.
Comment on lines 261 to 263
# Determine if we're running interactively
interactive = not any([toolkit_path, toolkit_name, toolkits_dir, docs_section])

Copy link

Copilot AI Dec 17, 2025

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).

Suggested change
# 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

Copilot uses AI. Check for mistakes.

# Determine if we're running interactively
interactive = not any([toolkit_path, toolkit_name, toolkits_dir, docs_section])

Copy link

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.

Fix in Cursor Fix in Web

if toolkits_dir != "Enter path manually":
save_toolkits_dir(toolkits_dir)
return toolkits_dir

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Non-interactive mode still prompts on discovery

When interactive=False, get_toolkits_dir still calls inquirer.select if multiple toolkits directories are discovered. This can hang or fail in CI/non-TTY runs where non-interactive behavior is expected.

Fix in Cursor Fix in Web

@jottakka jottakka enabled auto-merge (squash) December 17, 2025 21:24
@jottakka jottakka merged commit 66601fc into main Dec 17, 2025
5 checks passed
@jottakka jottakka deleted the francisco/luma-docs branch December 20, 2025 03:42
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.

3 participants