Added LiteLLM to the stack

This commit is contained in:
2025-08-18 09:40:50 +00:00
parent 0648c1968c
commit d220b04e32
2682 changed files with 533609 additions and 1 deletions

View File

@@ -0,0 +1,95 @@
import json
import os
import sys
import pytest
sys.path.insert(
0, os.path.abspath("../../..")
) # Adds the parent directory to the system path
from litellm.proxy._experimental.mcp_server.tool_registry import MCPToolRegistry
# Test handler function
def example_handler(input_data):
return {"result": input_data}
def test_register_and_get_tool():
registry = MCPToolRegistry()
# Test registering a tool
registry.register_tool(
name="test_tool",
description="A test tool",
input_schema={"type": "object", "properties": {"test": {"type": "string"}}},
handler=example_handler,
)
# Test getting the registered tool
tool = registry.get_tool("test_tool")
assert tool is not None
assert tool.name == "test_tool"
assert tool.description == "A test tool"
assert callable(tool.handler)
# Test getting non-existent tool
assert registry.get_tool("non_existent") is None
def test_list_tools():
registry = MCPToolRegistry()
# Register multiple tools
registry.register_tool(
name="tool1", description="Tool 1", input_schema={}, handler=example_handler
)
registry.register_tool(
name="tool2", description="Tool 2", input_schema={}, handler=example_handler
)
# Test listing tools
tools = registry.list_tools()
assert len(tools) == 2
assert {tool.name for tool in tools} == {"tool1", "tool2"}
def test_load_tools_from_config():
registry = MCPToolRegistry()
# Test valid config
valid_config = [
{
"name": "config_tool",
"description": "A tool from config",
"input_schema": {"type": "object"},
"handler": "test_tool_registry.example_handler",
}
]
registry.load_tools_from_config(valid_config)
assert "config_tool" in registry.tools
assert registry.tools["config_tool"].name == "config_tool"
assert registry.tools["config_tool"].description == "A tool from config"
assert callable(registry.tools["config_tool"].handler)
def test_tool_execution():
registry = MCPToolRegistry()
# Register a tool
registry.register_tool(
name="echo",
description="Echo the input",
input_schema={"type": "object"},
handler=example_handler,
)
# Get and execute the tool
tool = registry.get_tool("echo")
assert tool is not None
test_input = {"message": "hello"}
result = tool.handler(test_input)
assert result == {"result": test_input}