@@ -34,8 +34,7 @@ async def lifespan(fastmcp_instance):
3434 # 启动逻辑
3535 logger .info ("服务器正在初始化..." )
3636
37- # 在这里可以进行一些初始化工作
38- await asyncio .sleep (3 ) # 模拟初始化时间
37+ await asyncio .sleep (3 )
3938
4039 server_ready = True
4140 logger .info ("服务器初始化完成,准备接受请求" )
@@ -65,14 +64,15 @@ async def health_check(request: Request):
6564@mcp .custom_route ("/sse/" , methods = ["GET" ])
6665async def sse_endpoint (request : Request ):
6766 """自定义SSE端点,检查服务器是否准备就绪"""
68- global API_KEY , DATASOURCE_ID , server_ready
67+ global API_KEY , DATASOURCE_ID , server_ready , ROLE_ID
6968
7069 if not server_ready :
7170 return {"error" : "Server is still initializing, please wait" }
7271
7372 # 从URL参数获取配置
7473 API_KEY = request .query_params .get ('apikey' )
7574 DATASOURCE_ID = request .query_params .get ('datasource_id' )
75+ ROLE_ID = request .query_params .get ('role_id' )
7676
7777 if not API_KEY or not DATASOURCE_ID :
7878 logging .info ("error: Missing required parameters: apikey and datasource_id" )
@@ -102,7 +102,7 @@ async def gen_sql(query: str) -> str:
102102 - 需要将自然语言转化为SQL查询
103103 - 仅需要SQL文本而不需要执行结果
104104 """
105- global API_KEY , DATASOURCE_ID , server_ready
105+ global API_KEY , DATASOURCE_ID , server_ready , ROLE_ID
106106
107107 if not server_ready :
108108 return "Server is still initializing, please wait"
@@ -119,13 +119,25 @@ async def gen_sql(query: str) -> str:
119119 api_key = API_KEY
120120 datasource_id = DATASOURCE_ID
121121
122+ try :
123+ request = get_http_request ()
124+ role_id = request .query_params .get ('role_id' , None )
125+ except RuntimeError :
126+ role_id = None
127+
128+ if not role_id :
129+ role_id = ROLE_ID
130+
122131 logging .info (f"api_key:{ api_key } " )
123132 logging .info (f"datasource_id:{ datasource_id } " )
133+ logging .info (f"role_id:{ role_id } " )
124134
125135 params = {
126136 'api_key' : api_key ,
127137 'datasource_id' : datasource_id ,
128- 'question' : query
138+ 'question' : query ,
139+ 'role_id' :role_id
140+
129141 }
130142 if args .base_url :
131143 params ['base_url' ] = args .base_url
@@ -159,7 +171,6 @@ async def gen_conclusion(query: str) -> str:
159171 if not server_ready :
160172 return "Server is still initializing, please wait"
161173
162- # 其余代码保持不变...
163174 if not API_KEY or not DATASOURCE_ID :
164175 try :
165176 request = get_http_request ()
@@ -172,16 +183,26 @@ async def gen_conclusion(query: str) -> str:
172183 api_key = API_KEY
173184 datasource_id = DATASOURCE_ID
174185
186+ try :
187+ request = get_http_request ()
188+ role_id = request .query_params .get ('role_id' , None )
189+ except RuntimeError :
190+ role_id = None
191+
192+ if not role_id :
193+ role_id = ROLE_ID
194+
175195 logging .info (f"api_key:{ api_key } " )
176196 logging .info (f"datasource_id:{ datasource_id } " )
197+ logging .info (f"role_id:{ role_id } " )
177198
178199 params = {
179- 'api_key' : str (api_key ),
180- 'datasource_id' : str (datasource_id ),
181- 'question' : query
200+ 'api_key' : api_key ,
201+ 'datasource_id' : datasource_id ,
202+ 'question' : query ,
203+ 'role_id' :role_id
204+
182205 }
183- if args .base_url :
184- params ['base_url' ] = args .base_url
185206
186207 message = await get_asktable_data (** params )
187208 return message
0 commit comments