evalstate HF Staff commited on
Commit
e1c195f
·
verified ·
1 Parent(s): 18eb9c2

Bridge MCP bearer token into fast-agent request context

Browse files
scripts/__pycache__/hub_search_prefab_server.cpython-313.pyc CHANGED
Binary files a/scripts/__pycache__/hub_search_prefab_server.cpython-313.pyc and b/scripts/__pycache__/hub_search_prefab_server.cpython-313.pyc differ
 
scripts/hub_search_prefab_server.py CHANGED
@@ -57,10 +57,12 @@ if str(SCRIPTS_DIR) not in sys.path:
57
  sys.path.insert(0, str(SCRIPTS_DIR))
58
 
59
  from fast_agent import FastAgent
 
60
  from fast_agent.mcp.auth.middleware import HFAuthHeaderMiddleware
61
  from fast_agent.mcp.auth.presence import PresenceTokenVerifier
62
  from fastmcp import FastMCP
63
  from fastmcp.server.auth.auth import RemoteAuthProvider
 
64
  from fastmcp.tools import ToolResult
65
  from mcp.types import TextContent
66
  from pydantic import AnyHttpUrl
@@ -137,18 +139,31 @@ async def root_info(request) -> PlainTextResponse:
137
 
138
 
139
  async def _run_raw(query: str) -> str:
140
- async with fast.run() as agents:
141
- return await getattr(agents, RAW_AGENT).send(query)
142
 
143
 
144
  async def _run_prefab_native(query: str) -> str:
145
- async with fast.run() as agents:
146
- return await getattr(agents, PREFAB_NATIVE_AGENT).send(query)
147
 
148
 
149
  async def _run_prefab_llm_chain(query: str) -> str:
150
- async with fast.run() as agents:
151
- return await getattr(agents, PREFAB_LLM_CHAIN_AGENT).send(query)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
 
154
  def _wire_tool_result(wire: dict[str, object]) -> ToolResult:
 
57
  sys.path.insert(0, str(SCRIPTS_DIR))
58
 
59
  from fast_agent import FastAgent
60
+ from fast_agent.mcp.auth.context import request_bearer_token
61
  from fast_agent.mcp.auth.middleware import HFAuthHeaderMiddleware
62
  from fast_agent.mcp.auth.presence import PresenceTokenVerifier
63
  from fastmcp import FastMCP
64
  from fastmcp.server.auth.auth import RemoteAuthProvider
65
+ from fastmcp.server.dependencies import get_access_token
66
  from fastmcp.tools import ToolResult
67
  from mcp.types import TextContent
68
  from pydantic import AnyHttpUrl
 
139
 
140
 
141
  async def _run_raw(query: str) -> str:
142
+ return await _run_agent(RAW_AGENT, query)
 
143
 
144
 
145
  async def _run_prefab_native(query: str) -> str:
146
+ return await _run_agent(PREFAB_NATIVE_AGENT, query)
 
147
 
148
 
149
  async def _run_prefab_llm_chain(query: str) -> str:
150
+ return await _run_agent(PREFAB_LLM_CHAIN_AGENT, query)
151
+
152
+
153
+ def _get_request_bearer_token() -> str | None:
154
+ access_token = get_access_token()
155
+ if access_token is None:
156
+ return None
157
+ return access_token.token
158
+
159
+
160
+ async def _run_agent(agent_name: str, query: str) -> str:
161
+ saved_token = request_bearer_token.set(_get_request_bearer_token())
162
+ try:
163
+ async with fast.run() as agents:
164
+ return await getattr(agents, agent_name).send(query)
165
+ finally:
166
+ request_bearer_token.reset(saved_token)
167
 
168
 
169
  def _wire_tool_result(wire: dict[str, object]) -> ToolResult: