parent
eef1a5384c
commit
eedcab4d08
@ -1,144 +1,49 @@
|
||||
|
||||
from swarms import Agent
|
||||
from swarms.tools.mcp_integration import MCPServerSseParams
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class MCPClient:
|
||||
def __init__(self):
|
||||
# Configure MCP servers
|
||||
self.math_server = MCPServerSseParams(
|
||||
def main():
|
||||
# Configure MCP server connection
|
||||
math_server = MCPServerSseParams(
|
||||
url="http://0.0.0.0:8000/mcp",
|
||||
headers={"Content-Type": "application/json"},
|
||||
timeout=5.0,
|
||||
sse_read_timeout=30.0
|
||||
)
|
||||
|
||||
self.stock_server = MCPServerSseParams(
|
||||
url="http://0.0.0.0:8001/mcp",
|
||||
headers={"Content-Type": "application/json"},
|
||||
timeout=5.0,
|
||||
sse_read_timeout=30.0
|
||||
)
|
||||
|
||||
# Initialize agents with specific servers
|
||||
self.math_agent = Agent(
|
||||
# Initialize agent with MCP server
|
||||
agent = Agent(
|
||||
agent_name="Math Agent",
|
||||
system_prompt="""You are a mathematical computation specialist with access to the following capabilities through the MCP server:
|
||||
- Addition of two numbers
|
||||
- Multiplication of two numbers
|
||||
- Power/exponent calculations
|
||||
- Square root calculations
|
||||
|
||||
Always follow these rules:
|
||||
1. Only use tools that are available from the MCP server
|
||||
2. First list the available tools when asked
|
||||
3. Explain your mathematical approach before using tools
|
||||
4. Provide clear step-by-step explanations of calculations""",
|
||||
mcp_servers=[self.math_server],
|
||||
max_loops=1,
|
||||
streaming_on=True,
|
||||
model_name="gpt-4o-mini",
|
||||
temperature=0.1
|
||||
)
|
||||
|
||||
self.stock_agent = Agent(
|
||||
agent_name="Stock Agent",
|
||||
system_prompt="""You are a stock market analysis specialist with access to the following capabilities through the MCP server:
|
||||
- Get current stock prices
|
||||
- Get trading volumes
|
||||
- Calculate market capitalization
|
||||
- Generate price statistics across multiple stocks
|
||||
|
||||
Always follow these rules:
|
||||
1. Only use tools that are available from the MCP server
|
||||
2. First list the available tools when asked
|
||||
3. Explain your analysis approach before using tools
|
||||
4. Provide clear explanations of market metrics""",
|
||||
mcp_servers=[self.stock_server],
|
||||
agent_description="Agent for performing mathematical operations",
|
||||
system_prompt="""You are a mathematical computation specialist. Use the available MCP server tools to:
|
||||
- Add numbers
|
||||
- Multiply numbers
|
||||
- Divide numbers
|
||||
|
||||
Always:
|
||||
1. Use only tools available from the MCP server
|
||||
2. Explain your mathematical approach
|
||||
3. Show your work step by step""",
|
||||
max_loops=1,
|
||||
mcp_servers=[math_server],
|
||||
streaming_on=True,
|
||||
model_name="gpt-4o-mini",
|
||||
temperature=0.1
|
||||
)
|
||||
|
||||
async async def process_query(self, query: str):
|
||||
try:
|
||||
if query.lower() in ["capabilities", "what can you do", "what kind of problems you can solve"]:
|
||||
return [
|
||||
{"agent": "Math Agent", "response": """I can help with mathematical computations including:
|
||||
- Addition of two numbers
|
||||
- Multiplication of two numbers
|
||||
- Power/exponent calculations
|
||||
- Square root calculations"""},
|
||||
{"agent": "Stock Agent", "response": """I can help with stock market analysis including:
|
||||
- Get current stock prices
|
||||
- Get trading volumes
|
||||
- Calculate market capitalization
|
||||
- Generate price statistics across stocks"""}
|
||||
]
|
||||
|
||||
# Run agents concurrently
|
||||
results = await asyncio.gather(
|
||||
self.math_agent.arun(query),
|
||||
self.stock_agent.arun(query)
|
||||
model_name="gpt-4o-mini"
|
||||
)
|
||||
|
||||
# Format results
|
||||
formatted_results = []
|
||||
for idx, result in enumerate(results):
|
||||
agent_name = "Math Agent" if idx == 0 else "Stock Agent"
|
||||
if isinstance(result, dict):
|
||||
formatted_results.append({
|
||||
"agent": agent_name,
|
||||
"response": result.get("response", str(result))
|
||||
})
|
||||
else:
|
||||
formatted_results.append({
|
||||
"agent": agent_name,
|
||||
"response": str(result)
|
||||
})
|
||||
return formatted_results
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing query: {e}")
|
||||
return None
|
||||
|
||||
def main():
|
||||
client = MCPClient()
|
||||
|
||||
print("\nAvailable Agents and Capabilities:")
|
||||
print("\nMath Agent:")
|
||||
print("- Addition of two numbers")
|
||||
print("- Multiplication of two numbers")
|
||||
print("- Power/exponent calculations")
|
||||
print("- Square root calculations")
|
||||
|
||||
print("\nStock Agent:")
|
||||
print("- Get current stock prices")
|
||||
print("- Get trading volumes")
|
||||
print("- Calculate market capitalization")
|
||||
print("- Generate price statistics")
|
||||
print("\nMath Agent initialized with MCP capabilities")
|
||||
print("Available operations:")
|
||||
print("- Addition")
|
||||
print("- Multiplication")
|
||||
print("- Division")
|
||||
|
||||
while True:
|
||||
query = input("\nEnter your query (or 'exit' to quit): ")
|
||||
query = input("\nEnter a math problem (or 'exit' to quit): ")
|
||||
|
||||
if query.lower() == 'exit':
|
||||
break
|
||||
|
||||
results = asyncio.run(client.process_query(query))
|
||||
|
||||
if results:
|
||||
print("\nResults:")
|
||||
for result in results:
|
||||
if not result:
|
||||
continue
|
||||
print(f"\n{result['agent']}:")
|
||||
print("-" * 50)
|
||||
print(result['response'])
|
||||
print("-" * 50)
|
||||
# Process query through agent
|
||||
result = agent.run(query)
|
||||
print("\nResult:", result)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in new issue