Spaces:
Build error
Build error
File size: 1,257 Bytes
b380004 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | from json import loads
from agno.tools.mcp import MultiMCPTools
from agno.utils.log import log_info, log_warning
from chattr.app.settings import MCPSettings
async def setup_mcp_tools(mcp: MCPSettings) -> MultiMCPTools | None:
"""Return and setup MCP tools connection."""
if not mcp.path.exists():
log_warning("MCP config file not found.")
return None
mcp_servers: list[dict] = loads(mcp.path.read_text()).get("mcp_servers", [])
url_servers: list[dict] = [m for m in mcp_servers if m.get("type") == "url"]
if not url_servers:
log_info("No Remote MCP servers found.")
return None
mcp_tools = MultiMCPTools(
urls=[m["url"] for m in url_servers],
urls_transports=[m["transport"] for m in url_servers],
allow_partial_failure=True,
)
log_info(f"MCP servers: {len(mcp_tools.tools)}")
if not mcp_tools.tools or len(mcp_tools.tools) == 0:
log_info("No MCP servers available.")
return None
await mcp_tools.connect()
return mcp_tools
async def close_mcp_tools(mcp_tools: MultiMCPTools | None) -> None:
"""Close the MCP tools connection."""
log_info("Closing MCP tools...")
if not mcp_tools:
return
await mcp_tools.close()
|