Azure-Samples / Azure-Samples/remote-mcp-functions-python
Support _meta in mcp_tool
- Dominant language
- Python
- Stars
- 125
- Forks
- 83
- PR merge metrics
- No merged PRs in 30d
Description
Description
Currently, the @mcp_tool decorator only supports static metadata defined at registration. However, the MCP Protocol supports a _meta object within the tools/call request parameters. This field is essential for passing dynamic, request-scoped context.
In the current Azure Functions implementation, this _meta information is dropped and is not accessible via func.MCPToolContext.
Observed Behavior
When a client sends a tool call with a _meta block:
`{ "method": "tools/call", "params": { "name": "get_job_appointment_details", "arguments": {}, "_meta": { "progressToken": 1, "tenant_id": "123", "user_id": "466", "appointment_id": "789" } } }`
And the function is defined as:
```python
@mcp_job.function_name("mcp_get_job_appointment_details")
@mcp_job.mcp_tool()
def get_job_appointment_details(context: func.MCPToolContext):
```
The context object contains transport headers and basic tool info, but the _meta fields (like tenant_id or appointment_id) are missing entirely from the payload.
Expected Behavior
The MCPToolContext should be updated to include a meta property (or similar) that captures the _meta object from the MCP request. This would allow developers to perform multi-tenant lookups or telemetry tracking based on the caller's specific context.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.