Commit graph

11 commits

Author SHA1 Message Date
Omar Abdelwahab
fa8d3f9ca2 test: Remove xfail marker from test_mcp_tools_in_inference
The register_tool_group() issue was due to a temporary bug in llama-stack-client-python that has been resolved. The test should now pass without issues.
2025-11-13 17:21:34 -08:00
Omar Abdelwahab
42d5547047 test: Mark test_mcp_tools_in_inference as xfail due to deprecated registration API
The test requires register_tool_group() which is deprecated. The new approach
is configuration-based registration in run.yaml files under registered_resources.tool_groups.

Example NEW approach:
  registered_resources:
    tool_groups:
      - toolgroup_id: mcp::calculator
        provider_id: model-context-protocol
        mcp_endpoint:
          uri: http://localhost:3000/sse

The old dynamic registration API (register_tool_group) is marked deprecated with
no runtime replacement yet. Test should be updated to use config-based approach.
2025-11-13 16:02:59 -08:00
Omar Abdelwahab
d913756844 updated test_tools_with_schemas 2025-11-13 11:54:09 -08:00
Omar Abdelwahab
c1b63202be Updated the test cases to support the headers for now 2025-11-13 10:35:51 -08:00
Omar Abdelwahab
1a6cb7041d precommit 2025-11-12 19:02:54 -08:00
Omar Abdelwahab
18f197763b fix(tool-runtime): Remove authorization from list_runtime_tools()
The authorization parameter should only be on invoke_tool(), not on
list_runtime_tools(). Tool listing typically doesn't require authentication,
and the client SDK doesn't have this parameter yet.

Changes:
1. Removed authorization parameter from ToolRuntime.list_runtime_tools() protocol method
2. Updated all implementations to remove the authorization parameter:
   - MCPProviderImpl.list_runtime_tools()
   - ToolRuntimeRouter.list_runtime_tools()
   - ToolGroupsRoutingTable.list_tools() and _index_tools()
3. Updated test to remove authorization from list_tools() call

This ensures compatibility with the llama-stack-client SDK which doesn't
support authorization on list_tools() yet. Only invoke_tool() requires
and accepts the authorization parameter for authenticated tool execution.
2025-11-12 16:17:53 -08:00
Omar Abdelwahab
7a823bc280 fix: remove syntax errors from test files caused by sed
Fixed syntax errors in test files that were introduced by batch sed replacement:
- test_tools_with_schemas.py: Removed leftover broken comments and closing brace
- test_mcp_json_schema.py: Removed all instances of broken comment blocks

The sed command left remnants that broke Python syntax.
2025-11-12 14:54:38 -08:00
Omar Abdelwahab
84baa5c406 feat: unify MCP authentication across Responses and Tool Runtime APIs
- Add authorization parameter to Tool Runtime API signatures (list_runtime_tools, invoke_tool)
- Update MCP provider implementation to use authorization from request body instead of provider-data
- Deprecate mcp_authorization and mcp_headers from provider-data (MCPProviderDataValidator now empty)
- Update all Tool Runtime tests to pass authorization as request body parameter
- Responses API already uses request body authorization (no changes needed)

This provides a single, consistent way to pass MCP authentication tokens across both APIs, addressing reviewer feedback about avoiding multiple configuration paths.
2025-11-12 14:41:00 -08:00
Omar Abdelwahab
735831206d fix: update tests to use new mcp_authorization field
Updates integration tests to use the new mcp_authorization field
instead of the old method of passing Authorization in mcp_headers.

Changes:
- tests/integration/tool_runtime/test_mcp.py
- tests/integration/inference/test_tools_with_schemas.py
- tests/integration/tool_runtime/test_mcp_json_schema.py (6 occurrences)

All tests now use:
  provider_data = {"mcp_authorization": {uri: AUTH_TOKEN}}

Instead of the old rejected format:
  provider_data = {"mcp_headers": {uri: {"Authorization": f"Bearer {AUTH_TOKEN}"}}}

This aligns with the security architecture that prevents
accidentally leaking inference tokens to MCP servers.
2025-11-07 14:46:30 -08:00
Ashwin Bharambe
f49cb0b717
chore: Stack server no longer depends on llama-stack-client (#4094)
This dependency has been bothering folks for a long time (cc @leseb). We
really needed it due to "library client" which is primarily used for our
tests and is not a part of the Stack server. Anyone who needs to use the
library client can certainly install `llama-stack-client` in their
environment to make that work.

Updated the notebook references to install `llama-stack-client`
additionally when setting things up.
2025-11-07 09:54:09 -08:00
Ashwin Bharambe
ef0736527d
feat(tools)!: substantial clean up of "Tool" related datatypes (#3627)
This is a sweeping change to clean up some gunk around our "Tool"
definitions.

First, we had two types `Tool` and `ToolDef`. The first of these was a
"Resource" type for the registry but we had stopped registering tools
inside the Registry long back (and only registered ToolGroups.) The
latter was for specifying tools for the Agents API. This PR removes the
former and adds an optional `toolgroup_id` field to the latter.

Secondly, as pointed out by @bbrowning in
https://github.com/llamastack/llama-stack/pull/3003#issuecomment-3245270132,
we were doing a lossy conversion from a full JSON schema from the MCP
tool specification into our ToolDefinition to send it to the model.
There is no necessity to do this -- we ourselves aren't doing any
execution at all but merely passing it to the chat completions API which
supports this. By doing this (and by doing it poorly), we encountered
limitations like not supporting array items, or not resolving $refs,
etc.

To fix this, we replaced the `parameters` field by `{ input_schema,
output_schema }` which can be full blown JSON schemas.

Finally, there were some types in our llama-related chat format
conversion which needed some cleanup. We are taking this opportunity to
clean those up.

This PR is a substantial breaking change to the API. However, given our
window for introducing breaking changes, this suits us just fine. I will
be landing a concurrent `llama-stack-client` change as well since API
shapes are changing.
2025-10-02 15:12:03 -07:00