Skip to content

Commit 6fbbaa6

Browse files
author
iupadhyay
committed
Adds meta parameter and method for allowing information to be passed without intercepted by LLM
1 parent c3717e7 commit 6fbbaa6

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/mcp/client/session.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,17 +271,22 @@ async def call_tool(
271271
self,
272272
name: str,
273273
arguments: dict[str, Any] | None = None,
274+
meta: dict[str, Any] | None = None,
274275
read_timeout_seconds: timedelta | None = None,
275276
progress_callback: ProgressFnT | None = None,
276277
) -> types.CallToolResult:
277278
"""Send a tools/call request with optional progress callback support."""
279+
request_meta = None
280+
if meta:
281+
request_meta = types.RequestParams.Meta(**meta)
278282

279283
result = await self.send_request(
280284
types.ClientRequest(
281285
types.CallToolRequest(
282286
params=types.CallToolRequestParams(
283287
name=name,
284288
arguments=arguments,
289+
**({'_meta': request_meta} if request_meta else {}),
285290
),
286291
)
287292
),

src/mcp/server/fastmcp/server.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1036,9 +1036,10 @@ def my_tool(x: int, ctx: Context) -> str:
10361036
# Access resources
10371037
data = ctx.read_resource("resource://data")
10381038
1039-
# Get request info
1039+
# Get request info and metadata
10401040
request_id = ctx.request_id
10411041
client_id = ctx.client_id
1042+
user_meta = ctx.request_meta
10421043
10431044
return str(x)
10441045
```
@@ -1172,6 +1173,15 @@ def request_id(self) -> str:
11721173
"""Get the unique ID for this request."""
11731174
return str(self.request_context.request_id)
11741175

1176+
@property
1177+
def request_meta(self) -> dict[str, Any]:
1178+
"""Get the request metadata (hidden data passed from client)."""
1179+
if not self.request_context.meta:
1180+
return {}
1181+
1182+
meta_dict = self.request_context.meta.model_dump(exclude={'progressToken'})
1183+
return meta_dict
1184+
11751185
@property
11761186
def session(self):
11771187
"""Access to the underlying session for advanced usage."""

0 commit comments

Comments
 (0)