Skip to content

New metadata for tools#2540

Merged
neelneelneel merged 15 commits intodevfrom
tool-meta
Jan 27, 2026
Merged

New metadata for tools#2540
neelneelneel merged 15 commits intodevfrom
tool-meta

Conversation

@tevanburen
Copy link
Copy Markdown
Contributor

@tevanburen tevanburen commented Jan 20, 2026

Description

Goes with SEMOSS/Semoss#1983

  • Update useLoadingMessage to take an array of custom options
  • For auto-executing tools, receive custom loading messages
  • When rendering tool UIs, now receive URLs

Changes Made

  • Allow useLoadingMessage to use custom messages
  • Receive path from portals to display UI for tools
    • If SMSS_MCP_UI is not passed, then preserve legacy logic
  • Add displayLocation to SMSS_MCP_UI

How to Test

Test old mcp json

  1. Have an mcp json without any SMSS_MCP_UI field
  2. Have a custom UI by creating an index.html in /portals
  3. Prompt playground for the tool
  4. Verify that the custom UI renders
  5. Delete index.html and republish
  6. Prompt playground for the tool
  7. Verify that the default UI renders

Test new mcp json

  1. Run Make[Python/Pixel/Engine]MCP
  2. Verify that the new MCP json has SMSS_MCP_UI for each tool
  3. Prompt playground for the tool
  4. Verify that playground renders the default UI, regardless of the presence of index.html
  5. For Python add @mcp_ui({ "resourceURI": "/", "loadingMessage": "Custom loading message...", "displayLocation": "sidebar" }) to a function and run MakePythonMCP, or for java pass mcpMetadata=[{ "SMSS_MCP_UI": { "resourceURI": "/", "loadingMessage": "Custom loading message..." } }] to Make[Pixel/Engine]MCP. Try different combinations of each
  6. Verify that the new MCP json has SMSS_MCP_UI for each tool with the correct data
  7. Prompt playground for a tool with a custom loading message set to auto-execute. Verify that the custom loading message appears
  8. Prompt playground for a tool with a custom UI, verify that the custom UI appears
  9. Prompt playground for a tool without a custom UI, verify that the default UI appears

Notes

Python decorator:

@mcp_ui({
  "loadingMessage": string;
  "resourceURI": string; // right now, just a path relative to /portal
  "displayLocation": "inline" | "sidebar" | "hidden"; // default is sidebar
})

Pixel arg:

mcpMetadata=[{
  "loadingMessage": string;
  "resourceURI": string; // right now, just a path relative to /portal
  "displayLocation": "inline" | "sidebar" | "hidden"; // default is sidebar
}]

@tevanburen tevanburen marked this pull request as ready for review January 23, 2026 21:58
@tevanburen tevanburen requested a review from a team as a code owner January 23, 2026 21:58
@tevanburen tevanburen linked an issue Jan 26, 2026 that may be closed by this pull request
@neelneelneel neelneelneel merged commit 61a83c1 into dev Jan 27, 2026
3 checks passed
@neelneelneel neelneelneel deleted the tool-meta branch January 27, 2026 15:51
@github-actions
Copy link
Copy Markdown

@CodiumAI-Agent /update_changelog

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.

Add fields to mcp json meta to control UI and loading message

3 participants