Skip to content

Commit 928eeaf

Browse files
author
hfdy2019
committed
feat: make lint & make format
1 parent 7bb6e58 commit 928eeaf

File tree

4 files changed

+49
-47
lines changed

4 files changed

+49
-47
lines changed

server/routers/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,3 @@
2424
router.include_router(graph) # /api/graph/*
2525
router.include_router(tasks) # /api/tasks/*
2626
router.include_router(mcp) # /api/system/mcp-servers/*
27-

server/routers/mcp_router.py

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ async def create_mcp_server(
5454
# 校验传输类型
5555
if transport not in ("sse", "streamable_http"):
5656
raise HTTPException(status_code=400, detail="传输类型必须是 sse 或 streamable_http")
57-
57+
5858
try:
5959
# 检查名称是否已存在
6060
result = await db.execute(select(MCPServer).filter(MCPServer.name == name))
6161
existing = result.scalar_one_or_none()
6262
if existing:
6363
raise HTTPException(status_code=400, detail=f"服务器名称 '{name}' 已存在")
64-
64+
6565
server = MCPServer(
6666
name=name,
6767
description=description,
@@ -79,10 +79,10 @@ async def create_mcp_server(
7979
db.add(server)
8080
await db.commit()
8181
await db.refresh(server)
82-
82+
8383
# 同步到缓存
8484
sync_mcp_server_to_cache(name, server.to_mcp_config())
85-
85+
8686
return {"success": True, "data": server.to_dict()}
8787
except HTTPException:
8888
raise
@@ -129,13 +129,13 @@ async def update_mcp_server(
129129
# 校验传输类型
130130
if transport is not None and transport not in ("sse", "streamable_http"):
131131
raise HTTPException(status_code=400, detail="传输类型必须是 sse 或 streamable_http")
132-
132+
133133
try:
134134
result = await db.execute(select(MCPServer).filter(MCPServer.name == name))
135135
server = result.scalar_one_or_none()
136136
if not server:
137137
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
138-
138+
139139
# 更新字段
140140
if description is not None:
141141
server.description = description
@@ -153,15 +153,15 @@ async def update_mcp_server(
153153
server.tags = tags
154154
if icon is not None:
155155
server.icon = icon
156-
156+
157157
server.updated_by = current_user.username
158158
await db.commit()
159159
await db.refresh(server)
160-
160+
161161
# 同步到缓存(如果启用)
162162
if server.enabled:
163163
sync_mcp_server_to_cache(name, server.to_mcp_config())
164-
164+
165165
return {"success": True, "data": server.to_dict()}
166166
except HTTPException:
167167
raise
@@ -182,13 +182,13 @@ async def delete_mcp_server(
182182
server = result.scalar_one_or_none()
183183
if not server:
184184
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
185-
185+
186186
await db.delete(server)
187187
await db.commit()
188-
188+
189189
# 从缓存中删除
190190
sync_mcp_server_to_cache(name, None)
191-
191+
192192
return {"success": True, "message": f"服务器 '{name}' 已删除"}
193193
except HTTPException:
194194
raise
@@ -214,10 +214,10 @@ async def test_mcp_server(
214214
server = result.scalar_one_or_none()
215215
if not server:
216216
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
217-
217+
218218
# 获取配置用于测试
219219
config = server.to_mcp_config()
220-
220+
221221
try:
222222
tools = await get_mcp_tools(name, {name: config})
223223
return {
@@ -249,19 +249,19 @@ async def toggle_mcp_server(
249249
server = result.scalar_one_or_none()
250250
if not server:
251251
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
252-
252+
253253
# 切换状态
254254
server.enabled = 0 if server.enabled else 1
255255
server.updated_by = current_user.username
256256
await db.commit()
257-
257+
258258
# 获取更新后的状态
259259
is_enabled = bool(server.enabled)
260260
server_config = server.to_mcp_config() if is_enabled else None
261-
261+
262262
# 同步到缓存
263263
sync_mcp_server_to_cache(name, server_config)
264-
264+
265265
return {
266266
"success": True,
267267
"enabled": is_enabled,
@@ -291,19 +291,19 @@ async def get_mcp_server_tools(
291291
server = result.scalar_one_or_none()
292292
if not server:
293293
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
294-
294+
295295
# 获取配置
296296
config = server.to_mcp_config()
297297
disabled_tools = server.disabled_tools or []
298-
298+
299299
try:
300300
tools = await get_mcp_tools(name, {name: config})
301301
tool_list = []
302-
302+
303303
for tool in tools:
304304
original_name = tool.name
305305
unique_id = tool.metadata.get("id") if tool.metadata else original_name
306-
306+
307307
tool_info = {
308308
"name": original_name,
309309
"id": unique_id,
@@ -319,7 +319,7 @@ async def get_mcp_server_tools(
319319
tool_info["parameters"] = {}
320320
tool_info["required"] = []
321321
tool_list.append(tool_info)
322-
322+
323323
return {
324324
"success": True,
325325
"data": tool_list,
@@ -352,13 +352,13 @@ async def refresh_mcp_server_tools(
352352
server = result.scalar_one_or_none()
353353
if not server:
354354
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
355-
355+
356356
# 清除该服务器的工具缓存
357357
clear_mcp_server_tools_cache(name)
358-
358+
359359
# 获取配置
360360
config = server.to_mcp_config()
361-
361+
362362
try:
363363
tools = await get_mcp_tools(name, {name: config})
364364
return {
@@ -391,9 +391,9 @@ async def toggle_mcp_server_tool(
391391
server = result.scalar_one_or_none()
392392
if not server:
393393
raise HTTPException(status_code=404, detail=f"服务器 '{name}' 不存在")
394-
394+
395395
disabled_tools = list(server.disabled_tools or [])
396-
396+
397397
if tool_name in disabled_tools:
398398
# 当前禁用,改为启用
399399
disabled_tools.remove(tool_name)
@@ -402,11 +402,11 @@ async def toggle_mcp_server_tool(
402402
# 当前启用,改为禁用
403403
disabled_tools.append(tool_name)
404404
enabled = False
405-
405+
406406
server.disabled_tools = disabled_tools
407407
server.updated_by = current_user.username
408408
await db.commit()
409-
409+
410410
return {
411411
"success": True,
412412
"tool_name": tool_name,

server/utils/lifespan.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ async def lifespan(app: FastAPI):
1111
"""FastAPI lifespan事件管理器"""
1212
# 初始化 MCP 服务器配置
1313
await init_mcp_servers()
14-
14+
1515
await tasker.start()
1616
yield
1717
await tasker.shutdown()
18-

src/agents/common/mcp.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@
2525
},
2626
}
2727

28+
2829
async def load_mcp_servers_from_db() -> None:
2930
"""从数据库加载所有启用的 MCP 服务器配置到 MCP_SERVERS 缓存"""
3031
global MCP_SERVERS
31-
32+
3233
# 延迟导入以避免循环引用
3334
from sqlalchemy import select
35+
3436
from src.storage.db.manager import db_manager
3537
from src.storage.db.models import MCPServer
36-
38+
3739
try:
3840
async with db_manager.get_async_session_context() as session:
3941
result = await session.execute(select(MCPServer).filter(MCPServer.enabled == 1))
@@ -48,41 +50,42 @@ async def load_mcp_servers_from_db() -> None:
4850

4951
def sync_mcp_server_to_cache(name: str, config: dict[str, Any] | None) -> None:
5052
"""同步单个 MCP 服务器配置到缓存
51-
53+
5254
Args:
5355
name: 服务器名称
5456
config: 服务器配置,如果为 None 则从缓存中删除
5557
"""
5658
global MCP_SERVERS
57-
59+
5860
if config is None:
5961
MCP_SERVERS.pop(name, None)
6062
logger.info(f"Removed MCP server '{name}' from cache")
6163
else:
6264
MCP_SERVERS[name] = config
6365
logger.info(f"Synced MCP server '{name}' to cache")
64-
66+
6567
# 清除该服务器的工具缓存
6668
_mcp_tools_cache.pop(name, None)
6769

6870

6971
async def init_mcp_servers() -> None:
7072
"""初始化 MCP 服务器配置
71-
73+
7274
首次启动时,如果数据库为空,将默认配置导入数据库
7375
然后从数据库加载配置到 MCP_SERVERS 缓存
7476
"""
7577
# 延迟导入以避免循环引用
7678
from sqlalchemy import func, select
79+
7780
from src.storage.db.manager import db_manager
7881
from src.storage.db.models import MCPServer
79-
82+
8083
try:
8184
async with db_manager.get_async_session_context() as session:
8285
# 检查数据库是否有 MCP 配置
8386
result = await session.execute(select(func.count(MCPServer.name)))
8487
count = result.scalar()
85-
88+
8689
if count == 0:
8790
# 数据库为空,导入默认配置
8891
logger.info("No MCP servers in database, importing default configurations...")
@@ -104,10 +107,10 @@ async def init_mcp_servers() -> None:
104107
session.add(server)
105108
await session.commit()
106109
logger.info(f"Imported {len(_DEFAULT_MCP_SERVERS)} default MCP servers to database")
107-
110+
108111
# 从数据库加载配置到缓存
109112
await load_mcp_servers_from_db()
110-
113+
111114
except Exception as e:
112115
logger.error(f"Failed to initialize MCP servers: {e}, traceback: {traceback.format_exc()}")
113116

@@ -128,8 +131,9 @@ async def get_mcp_client(
128131
def to_camel_case(s: str) -> str:
129132
"""将字符串转换为小驼峰格式"""
130133
import re
134+
131135
# 处理 - 和 _
132-
s = re.sub(r'[-_]+(.)', lambda m: m.group(1).upper(), s)
136+
s = re.sub(r"[-_]+(.)", lambda m: m.group(1).upper(), s)
133137
# 首字母小写
134138
if len(s) > 0:
135139
s = s[0].lower() + s[1:]
@@ -159,18 +163,18 @@ async def get_mcp_tools(server_name: str, additional_servers: dict[str, dict] =
159163
# 渲染 ID 规则: mcp__[camelCaseServer]__[camelCaseTool]
160164
server_cc = to_camel_case(server_name)
161165
processed_tools = []
162-
166+
163167
for tool in raw_tools:
164168
# 渲染唯一 ID 规则: mcp__[camelCaseServer]__[camelCaseTool]
165169
original_name = tool.name
166170
tool_cc = to_camel_case(original_name)
167171
unique_id = f"mcp__{server_cc}__{tool_cc}"
168-
172+
169173
# 使用 metadata 存储,这是 LangChain 工具扩展属性的标准做法
170174
if tool.metadata is None:
171175
tool.metadata = {}
172176
tool.metadata["id"] = unique_id
173-
177+
174178
processed_tools.append(tool)
175179

176180
_mcp_tools_cache[server_name] = processed_tools

0 commit comments

Comments
 (0)