Assistant checkpoint: Improve MCP client response handling and formatting

Assistant generated file changes:
- examples/mcp_example/mcp_client.py: Improve agent response handling and query processing, Improve results display formatting

---

User prompt:

fix these

Replit-Commit-Author: Assistant
Replit-Commit-Session-Id: 26995795-6444-441a-8016-a1775482216d
Pavan Kumar 3 months ago
parent 32cf457aeb
commit a916425d02

@ -0,0 +1,144 @@
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(
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(
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],
max_loops=1,
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)
)
# 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")
while True:
query = input("\nEnter your query (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)
if __name__ == "__main__":
main()
Loading…
Cancel
Save