fix: Make context logging functions spec-compliant - Fixes #397 #1907
+120
−31
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.
Fixes #397 - FastMCP Context logging methods now accept
Anytype instead of restricting tostr, aligning with MCP specification requirements.Motivation and Context
The MCP specification requires logging functions to accept any JSON-serializable data (
Anytype), but FastMCP'sContext.log()only accepted strings. This prevented users from logging structured data like dictionaries, lists, numbers, and booleans.How Has This Been Tested?
test_context_logging_with_structured_datacovering all JSON types (dict, list, number, boolean, string)Breaking Changes
Yes - Removed the
extraparameter from all logging methods:ctx.info("message", extra={"key": "value"})ctx.info({"message": "message", "key": "value"})Types of changes
Checklist
Additional context
Changed
Context.log()signature frommessage: str, extra: dicttodata: Any. Theextraparameter was not part of the MCP spec and created confusion. Updated all convenience methods (debug(),info(),warning(),error()) for consistency.