fix(iam-server): Use Context instead of CallToolResult for ctx parameter #1464
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1463
The IAM MCP server was incorrectly using
CallToolResult
as the type annotation for thectx
parameter in tool handlers, causing it to be exposed in the tool schema. FastMCP automatically excludesContext
typed parameters from schemas, so changing to the correct type resolves the validation errors.Problem
When clients attempted to call IAM server tools, they received validation errors:
The tool schema incorrectly included
ctx
in the required parameters, even though FastMCP is supposed to automatically inject this parameter and exclude it from the schema.Root Cause
The server was using the wrong type annotation:
ctx: CallToolResult
(frommcp.types
) - gets exposed in schemactx: Context
(frommcp.server.fastmcp
) - automatically excludedChanges Made
ctx: CallToolResult
→ctx: Context
in 3 tool signatures:list_users
get_user
create_user
Context
frommcp.server.fastmcp
Context
class toServerContext
to avoid naming collisionTesting
Created comprehensive test script (
test-iam-ctx-fix.py
) that verifies:ctx
parameter is not present in tool schemactx
Test results:
Checklist
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.