- 新增 mcp_service 文件,移除原本的 src/agents/common/mcp.py,所有功能合并到mcp_service,MCP服务来处理服务器配置的增删改查操作、数据库与缓存之间的同步以及MCP客户端和工具的管理。 - 将重构的 MCP 和现有智能体做适配,引入全局缓存和状态管理机制用于MCP服务器和工具。 - 数据库表更新,在MCPServer模型中为StdIO传输类型添加了command和args字段。 - 其他代码优化、增强样式以提升用户体验和可读性。
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from dataclasses import dataclass, field
|
||
from typing import Annotated
|
||
|
||
from src.agents.common import BaseContext, gen_tool_info
|
||
from src.knowledge import knowledge_base
|
||
from src.services.mcp_service import get_mcp_server_names
|
||
|
||
from .tools import get_tools
|
||
|
||
|
||
@dataclass(kw_only=True)
|
||
class Context(BaseContext):
|
||
tools: Annotated[list[dict], {"__template_metadata__": {"kind": "tools"}}] = field(
|
||
default_factory=list,
|
||
metadata={
|
||
"name": "工具",
|
||
"options": lambda: gen_tool_info(get_tools()), # 这里的选择是所有的工具
|
||
"description": "内置的部分工具,包含 common 工具和本智能体的特有工具(不含 MCP)。",
|
||
},
|
||
)
|
||
|
||
knowledges: list[str] = field(
|
||
default_factory=list,
|
||
metadata={
|
||
"name": "知识库",
|
||
"options": lambda: [k["name"] for k in knowledge_base.get_retrievers().values()],
|
||
"description": "知识库列表,可以在左侧知识库页面中创建知识库。",
|
||
"type": "list", # Explicitly mark as list type for frontend if needed
|
||
},
|
||
)
|
||
|
||
mcps: list[str] = field(
|
||
default_factory=list,
|
||
metadata={
|
||
"name": "MCP服务器",
|
||
"options": lambda: get_mcp_server_names(),
|
||
"description": (
|
||
"MCP服务器列表,建议使用支持 SSE 的 MCP 服务器,"
|
||
"如果需要使用 uvx 或 npx 运行的服务器,也请在项目外部启动 MCP 服务器,并在项目中配置 MCP 服务器。"
|
||
),
|
||
},
|
||
)
|