You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
74 lines
2.2 KiB
import os
|
|
import json
|
|
from swarms import Agent
|
|
import io
|
|
import sys
|
|
from contextlib import redirect_stdout
|
|
|
|
print("\n=== Testing Multiple MCP Tool Execution ===\n")
|
|
|
|
# Configure multiple MCP URLs
|
|
os.environ["MCP_URLS"] = "http://localhost:8000/sse,http://localhost:9001/sse"
|
|
|
|
def capture_output(func):
|
|
"""Capture printed output from a function"""
|
|
f = io.StringIO()
|
|
with redirect_stdout(f):
|
|
func()
|
|
return f.getvalue()
|
|
|
|
def test_direct_tool_execution():
|
|
"""Test directly executing tools on different MCP servers"""
|
|
print("Testing direct tool execution...\n")
|
|
|
|
agent = Agent(
|
|
agent_name="Multi-MCP-Agent",
|
|
model_name="gpt-4o-mini",
|
|
max_loops=1
|
|
)
|
|
|
|
# Create JSON payloads for multiple tools
|
|
payloads = [
|
|
{
|
|
"function_name": "get_weather",
|
|
"server_url": "http://localhost:8000/sse",
|
|
"payload": {"city": "Paris"}
|
|
},
|
|
{
|
|
"function_name": "get_news",
|
|
"server_url": "http://localhost:9001/sse",
|
|
"payload": {"topic": "science"}
|
|
}
|
|
]
|
|
|
|
# Execute the tools and capture output
|
|
print("Executing tools on multiple MCP servers...")
|
|
output = capture_output(
|
|
lambda: agent.handle_multiple_mcp_tools(agent.mcp_urls, json.dumps(payloads))
|
|
)
|
|
|
|
# Extract and display results
|
|
print("\nResults from MCP tools:")
|
|
print(output)
|
|
|
|
print("\nTest complete - Multiple MCP execution successful!")
|
|
|
|
def test_agent_configuration():
|
|
"""Test different ways to configure agents with multiple MCP URLs"""
|
|
print("\n=== Testing Agent MCP Configuration Methods ===\n")
|
|
|
|
# Method 1: Configure via environment variables (already set above)
|
|
agent1 = Agent(agent_name="Env-Config-Agent")
|
|
print(f"Agent1 MCP URLs (from env): {agent1.mcp_urls}")
|
|
|
|
# Method 2: Configure via direct parameter
|
|
agent2 = Agent(
|
|
agent_name="Direct-Config-Agent",
|
|
mcp_urls=["http://localhost:8000/sse", "http://localhost:9001/sse"]
|
|
)
|
|
print(f"Agent2 MCP URLs (from param): {agent2.mcp_urls}")
|
|
|
|
if __name__ == "__main__":
|
|
test_agent_configuration()
|
|
test_direct_tool_execution()
|