bi_agent / mcp /client2.py
Prerna43's picture
agent
38830c1
Raw
History Blame Contribute Delete
1.3 kB
from __future__ import annotations
from mcp.registry import build_default_registry
from mcp.schemas import MCPInvokeRequest, MCPInvokeResult, MCPServerConfig
class MCPClient:
"""Small in-process MCP facade for development and tests."""
def __init__(self, registry: dict[str, MCPServerConfig] | None = None) -> None:
self.registry = registry or build_default_registry()
def list_servers(self) -> list[str]:
return sorted(self.registry.keys())
def list_tools(self, server_name: str) -> list[str]:
server = self.registry[server_name]
return [tool.name for tool in server.tools]
def invoke(self, request: MCPInvokeRequest) -> MCPInvokeResult:
if request.server_name not in self.registry:
return MCPInvokeResult(success=False, content=None, error=f"Unknown MCP server: {request.server_name}")
if request.tool_name not in self.list_tools(request.server_name):
return MCPInvokeResult(success=False, content=None, error=f"Unknown tool: {request.tool_name}")
payload = {
"server": request.server_name,
"tool": request.tool_name,
"arguments": request.arguments,
"status": "mocked",
}
return MCPInvokeResult(success=True, content=payload)