- 后端新增 MCP 客户端(Streamable HTTP / 老式 SSE)与流式 agent 工具循环 - 新增 /api/mcp/servers 管理接口与 mcp_servers 表 - 对话中 OpenAI 兼容模型可调用启用服务器的工具,SSE 推送 tool 事件 - 前端新增 MCP 服务管理弹窗与侧栏入口,流式回答展示工具调用状态 - 修复用户消息气泡缺少删除按钮,并级联删除其名下回答版本 Co-Authored-By: Claude Code <noreply@anthropic.com>
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from contextlib import asynccontextmanager
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from app.core.database import init_db, Base
|
|
from app.api.books import router as books_router
|
|
from app.api.chat import router as chat_router
|
|
from app.api.models import router as models_router
|
|
from app.api.mcp import router as mcp_router
|
|
|
|
from app.models.book import Book, Chapter, Segment
|
|
from app.models.chat import Conversation, Message
|
|
from app.models.ai_model import AiModel
|
|
from app.models.mcp_server import McpServer
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
await init_db()
|
|
yield
|
|
|
|
|
|
app = FastAPI(title="BookMate", version="0.1.0", lifespan=lifespan)
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(books_router, prefix="/api")
|
|
app.include_router(chat_router, prefix="/api")
|
|
app.include_router(models_router, prefix="/api")
|
|
app.include_router(mcp_router, prefix="/api")
|
|
|
|
|
|
@app.get("/api/health")
|
|
async def health():
|
|
return {"status": "ok"} |