mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-26 12:17:14 +00:00
feat: perf mcp server api datastruct
This commit is contained in:
+12
-16
@@ -101,6 +101,12 @@ class MCPService:
|
|||||||
def __init__(self, ap: app.Application) -> None:
|
def __init__(self, ap: app.Application) -> None:
|
||||||
self.ap = ap
|
self.ap = ap
|
||||||
|
|
||||||
|
async def get_runtime_info(self, server_name: str) -> dict | None:
|
||||||
|
session = self.ap.tool_mgr.mcp_tool_loader.get_session(server_name)
|
||||||
|
if session:
|
||||||
|
return session.get_runtime_info_dict()
|
||||||
|
return None
|
||||||
|
|
||||||
async def get_mcp_servers(self, contain_runtime_info: bool = False) -> list[dict]:
|
async def get_mcp_servers(self, contain_runtime_info: bool = False) -> list[dict]:
|
||||||
result = await self.ap.persistence_mgr.execute_async(sqlalchemy.select(persistence_mcp.MCPServer))
|
result = await self.ap.persistence_mgr.execute_async(sqlalchemy.select(persistence_mcp.MCPServer))
|
||||||
|
|
||||||
@@ -110,12 +116,7 @@ class MCPService:
|
|||||||
]
|
]
|
||||||
if contain_runtime_info:
|
if contain_runtime_info:
|
||||||
for server in serialized_servers:
|
for server in serialized_servers:
|
||||||
session = self.ap.tool_mgr.mcp_tool_loader.get_session(server['name'])
|
runtime_info = await self.get_runtime_info(server['name'])
|
||||||
|
|
||||||
runtime_info = None
|
|
||||||
|
|
||||||
if session:
|
|
||||||
runtime_info = session.get_runtime_info_dict()
|
|
||||||
|
|
||||||
server['runtime_info'] = runtime_info if runtime_info else None
|
server['runtime_info'] = runtime_info if runtime_info else None
|
||||||
|
|
||||||
@@ -137,15 +138,6 @@ class MCPService:
|
|||||||
|
|
||||||
return server_data['uuid']
|
return server_data['uuid']
|
||||||
|
|
||||||
async def get_mcp_server(self, server_uuid: str) -> dict | None:
|
|
||||||
result = await self.ap.persistence_mgr.execute_async(
|
|
||||||
sqlalchemy.select(persistence_mcp.MCPServer).where(persistence_mcp.MCPServer.uuid == server_uuid)
|
|
||||||
)
|
|
||||||
server = result.first()
|
|
||||||
if server is None:
|
|
||||||
return None
|
|
||||||
return self.ap.persistence_mgr.serialize_model(persistence_mcp.MCPServer, server)
|
|
||||||
|
|
||||||
async def get_mcp_server_by_name(self, server_name: str) -> dict | None:
|
async def get_mcp_server_by_name(self, server_name: str) -> dict | None:
|
||||||
result = await self.ap.persistence_mgr.execute_async(
|
result = await self.ap.persistence_mgr.execute_async(
|
||||||
sqlalchemy.select(persistence_mcp.MCPServer).where(persistence_mcp.MCPServer.name == server_name)
|
sqlalchemy.select(persistence_mcp.MCPServer).where(persistence_mcp.MCPServer.name == server_name)
|
||||||
@@ -153,7 +145,11 @@ class MCPService:
|
|||||||
server = result.first()
|
server = result.first()
|
||||||
if server is None:
|
if server is None:
|
||||||
return None
|
return None
|
||||||
return self.ap.persistence_mgr.serialize_model(persistence_mcp.MCPServer, server)
|
|
||||||
|
runtime_info = await self.get_runtime_info(server.name)
|
||||||
|
server_data = self.ap.persistence_mgr.serialize_model(persistence_mcp.MCPServer, server)
|
||||||
|
server_data['runtime_info'] = runtime_info if runtime_info else None
|
||||||
|
return server_data
|
||||||
|
|
||||||
async def update_mcp_server(self, server_uuid: str, server_data: dict) -> None:
|
async def update_mcp_server(self, server_uuid: str, server_data: dict) -> None:
|
||||||
result = await self.ap.persistence_mgr.execute_async(
|
result = await self.ap.persistence_mgr.execute_async(
|
||||||
|
|||||||
@@ -329,6 +329,7 @@ export interface MCPServerRuntimeInfo {
|
|||||||
connected: boolean;
|
connected: boolean;
|
||||||
error_message: string;
|
error_message: string;
|
||||||
tool_count: number;
|
tool_count: number;
|
||||||
|
tools: MCPTool[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MCPServer {
|
export interface MCPServer {
|
||||||
@@ -345,5 +346,5 @@ export interface MCPServer {
|
|||||||
export interface MCPTool {
|
export interface MCPTool {
|
||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
parameters: object;
|
parameters?: object;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user