mirror of
https://github.com/eigent-ai/eigent.git
synced 2026-04-28 19:50:34 +00:00
chore: fix pre commit format and pipeline issue (#1144)
This commit is contained in:
parent
2256497dff
commit
893f51fc82
970 changed files with 11235 additions and 9533 deletions
|
|
@ -12,18 +12,24 @@
|
|||
# limitations under the License.
|
||||
# ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
|
||||
|
||||
import os
|
||||
from typing import List, Optional
|
||||
from fastapi import Depends, HTTPException, Query, Response, APIRouter
|
||||
from sqlmodel import Session, select
|
||||
from app.component.database import session
|
||||
from app.component.auth import Auth, auth_must
|
||||
from fastapi_babel import _
|
||||
from app.model.mcp.mcp_user import McpUser, McpUserIn, McpUserOut, McpUserUpdate, Status
|
||||
from app.model.mcp.mcp import Mcp
|
||||
from camel.toolkits.mcp_toolkit import MCPToolkit
|
||||
from app.component.environment import env
|
||||
import logging
|
||||
import os
|
||||
|
||||
from camel.toolkits.mcp_toolkit import MCPToolkit
|
||||
from fastapi import APIRouter, Depends, HTTPException, Response
|
||||
from fastapi_babel import _
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from app.component.auth import Auth, auth_must
|
||||
from app.component.database import session
|
||||
from app.component.environment import env
|
||||
from app.model.mcp.mcp import Mcp
|
||||
from app.model.mcp.mcp_user import (
|
||||
McpUser,
|
||||
McpUserIn,
|
||||
McpUserOut,
|
||||
McpUserUpdate,
|
||||
)
|
||||
|
||||
logger = logging.getLogger("server_mcp_user_controller")
|
||||
|
||||
|
|
@ -48,8 +54,7 @@ async def pre_instantiate_mcp_toolkit(config_dict: dict) -> bool:
|
|||
# Set global auth directory to persist authentication across tasks
|
||||
if "MCP_REMOTE_CONFIG_DIR" not in server_config["env"]:
|
||||
server_config["env"]["MCP_REMOTE_CONFIG_DIR"] = env(
|
||||
"MCP_REMOTE_CONFIG_DIR",
|
||||
os.path.expanduser("~/.mcp-auth")
|
||||
"MCP_REMOTE_CONFIG_DIR", os.path.expanduser("~/.mcp-auth")
|
||||
)
|
||||
|
||||
# Create MCP toolkit and attempt to connect
|
||||
|
|
@ -69,9 +74,9 @@ async def pre_instantiate_mcp_toolkit(config_dict: dict) -> bool:
|
|||
return False
|
||||
|
||||
|
||||
@router.get("/mcp/users", name="list mcp users", response_model=List[McpUserOut])
|
||||
@router.get("/mcp/users", name="list mcp users", response_model=list[McpUserOut])
|
||||
async def list_mcp_users(
|
||||
mcp_id: Optional[int] = None,
|
||||
mcp_id: int | None = None,
|
||||
session: Session = Depends(session),
|
||||
auth: Auth = Depends(auth_must),
|
||||
):
|
||||
|
|
@ -95,7 +100,9 @@ async def get_mcp_user(mcp_user_id: int, session: Session = Depends(session), au
|
|||
if not mcp_user:
|
||||
logger.warning("MCP user not found", extra={"user_id": auth.user.id, "mcp_user_id": mcp_user_id})
|
||||
raise HTTPException(status_code=404, detail=_("McpUser not found"))
|
||||
logger.debug("MCP user retrieved", extra={"user_id": auth.user.id, "mcp_user_id": mcp_user_id, "mcp_id": mcp_user.mcp_id})
|
||||
logger.debug(
|
||||
"MCP user retrieved", extra={"user_id": auth.user.id, "mcp_user_id": mcp_user_id, "mcp_id": mcp_user.mcp_id}
|
||||
)
|
||||
return mcp_user
|
||||
|
||||
|
||||
|
|
@ -104,10 +111,8 @@ async def create_mcp_user(mcp_user: McpUserIn, session: Session = Depends(sessio
|
|||
"""Create MCP user installation."""
|
||||
user_id = auth.user.id
|
||||
mcp_id = mcp_user.mcp_id
|
||||
|
||||
exists = session.exec(
|
||||
select(McpUser).where(McpUser.mcp_id == mcp_id, McpUser.user_id == user_id)
|
||||
).first()
|
||||
|
||||
exists = session.exec(select(McpUser).where(McpUser.mcp_id == mcp_id, McpUser.user_id == user_id)).first()
|
||||
if exists:
|
||||
logger.warning("MCP already installed", extra={"user_id": user_id, "mcp_id": mcp_id})
|
||||
raise HTTPException(status_code=400, detail=_("mcp is installed"))
|
||||
|
|
@ -115,18 +120,21 @@ async def create_mcp_user(mcp_user: McpUserIn, session: Session = Depends(sessio
|
|||
# Get MCP configuration from the main Mcp table
|
||||
mcp = session.get(Mcp, mcp_id)
|
||||
if mcp and mcp.install_command:
|
||||
config_dict = {
|
||||
"mcpServers": {
|
||||
mcp.key: mcp.install_command
|
||||
}
|
||||
}
|
||||
config_dict = {"mcpServers": {mcp.key: mcp.install_command}}
|
||||
|
||||
try:
|
||||
success = await pre_instantiate_mcp_toolkit(config_dict)
|
||||
if not success:
|
||||
logger.warning("MCP pre-instantiation failed, continuing", extra={"user_id": user_id, "mcp_id": mcp_id, "mcp_key": mcp.key})
|
||||
logger.warning(
|
||||
"MCP pre-instantiation failed, continuing",
|
||||
extra={"user_id": user_id, "mcp_id": mcp_id, "mcp_key": mcp.key},
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning("MCP pre-instantiation exception", extra={"user_id": user_id, "mcp_id": mcp_id, "error": str(e)}, exc_info=True)
|
||||
logger.warning(
|
||||
"MCP pre-instantiation exception",
|
||||
extra={"user_id": user_id, "mcp_id": mcp_id, "error": str(e)},
|
||||
exc_info=True,
|
||||
)
|
||||
|
||||
try:
|
||||
db_mcp_user = McpUser(mcp_id=mcp_id, user_id=user_id, env=mcp_user.env)
|
||||
|
|
@ -137,7 +145,9 @@ async def create_mcp_user(mcp_user: McpUserIn, session: Session = Depends(sessio
|
|||
return db_mcp_user
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
logger.error("MCP user creation failed", extra={"user_id": user_id, "mcp_id": mcp_id, "error": str(e)}, exc_info=True)
|
||||
logger.error(
|
||||
"MCP user creation failed", extra={"user_id": user_id, "mcp_id": mcp_id, "error": str(e)}, exc_info=True
|
||||
)
|
||||
raise HTTPException(status_code=500, detail="Internal server error")
|
||||
|
||||
|
||||
|
|
@ -155,9 +165,11 @@ async def update_mcp_user(
|
|||
logger.warning("MCP user not found for update", extra={"user_id": user_id, "mcp_user_id": id})
|
||||
raise HTTPException(status_code=404, detail=_("Mcp Info not found"))
|
||||
if model.user_id != user_id:
|
||||
logger.warning("Unauthorized MCP user update", extra={"user_id": user_id, "mcp_user_id": id, "owner_id": model.user_id})
|
||||
logger.warning(
|
||||
"Unauthorized MCP user update", extra={"user_id": user_id, "mcp_user_id": id, "owner_id": model.user_id}
|
||||
)
|
||||
raise HTTPException(status_code=400, detail=_("current user have no permission to modify"))
|
||||
|
||||
|
||||
try:
|
||||
update_data = update_item.model_dump(exclude_unset=True)
|
||||
model.update_fields(update_data)
|
||||
|
|
@ -166,7 +178,9 @@ async def update_mcp_user(
|
|||
logger.info("MCP user updated", extra={"user_id": user_id, "mcp_user_id": id})
|
||||
return model
|
||||
except Exception as e:
|
||||
logger.error("MCP user update failed", extra={"user_id": user_id, "mcp_user_id": id, "error": str(e)}, exc_info=True)
|
||||
logger.error(
|
||||
"MCP user update failed", extra={"user_id": user_id, "mcp_user_id": id, "error": str(e)}, exc_info=True
|
||||
)
|
||||
raise HTTPException(status_code=500, detail="Internal server error")
|
||||
|
||||
|
||||
|
|
@ -178,13 +192,19 @@ async def delete_mcp_user(mcp_user_id: int, session: Session = Depends(session),
|
|||
if not db_mcp_user:
|
||||
logger.warning("MCP user not found for deletion", extra={"user_id": user_id, "mcp_user_id": mcp_user_id})
|
||||
raise HTTPException(status_code=404, detail=_("Mcp Info not found"))
|
||||
|
||||
|
||||
try:
|
||||
session.delete(db_mcp_user)
|
||||
session.commit()
|
||||
logger.info("MCP user deleted", extra={"user_id": user_id, "mcp_user_id": mcp_user_id, "mcp_id": db_mcp_user.mcp_id})
|
||||
logger.info(
|
||||
"MCP user deleted", extra={"user_id": user_id, "mcp_user_id": mcp_user_id, "mcp_id": db_mcp_user.mcp_id}
|
||||
)
|
||||
return Response(status_code=204)
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
logger.error("MCP user deletion failed", extra={"user_id": user_id, "mcp_user_id": mcp_user_id, "error": str(e)}, exc_info=True)
|
||||
raise HTTPException(status_code=500, detail="Internal server error")
|
||||
logger.error(
|
||||
"MCP user deletion failed",
|
||||
extra={"user_id": user_id, "mcp_user_id": mcp_user_id, "error": str(e)},
|
||||
exc_info=True,
|
||||
)
|
||||
raise HTTPException(status_code=500, detail="Internal server error")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue