feat: add a subagent frame
This commit is contained in:
79
agentlite/examples/mcp_tools.py
Normal file
79
agentlite/examples/mcp_tools.py
Normal file
@@ -0,0 +1,79 @@
|
||||
"""Example: MCP Tools
|
||||
|
||||
This example demonstrates how to use MCP (Model Context Protocol) tools
|
||||
with AgentLite agents.
|
||||
|
||||
Note: This example requires an MCP server to be available.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
from agentlite import Agent, MCPClient, OpenAIProvider
|
||||
|
||||
|
||||
async def main():
|
||||
"""Run the MCP tools example."""
|
||||
# Create provider
|
||||
provider = OpenAIProvider(
|
||||
api_key=os.getenv("OPENAI_API_KEY", "your-api-key"),
|
||||
model="gpt-4o-mini",
|
||||
)
|
||||
|
||||
# Connect to MCP server
|
||||
# This example uses the filesystem MCP server
|
||||
# You can install it with: npm install -g @modelcontextprotocol/server-filesystem
|
||||
|
||||
print("Connecting to MCP server...")
|
||||
|
||||
async with MCPClient() as mcp:
|
||||
# Connect via stdio
|
||||
await mcp.connect_stdio(
|
||||
command="npx",
|
||||
args=["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
|
||||
)
|
||||
|
||||
# Load tools from MCP server
|
||||
print("Loading MCP tools...")
|
||||
mcp_tools = await mcp.load_tools()
|
||||
print(f"Loaded {len(mcp_tools)} tools from MCP server")
|
||||
|
||||
# Create agent with MCP tools
|
||||
agent = Agent(
|
||||
provider=provider,
|
||||
system_prompt="You are a helpful assistant with access to filesystem tools.",
|
||||
tools=mcp_tools,
|
||||
)
|
||||
|
||||
# Test MCP tools
|
||||
print("\n=== Testing MCP Tools ===\n")
|
||||
|
||||
print("User: List files in /tmp")
|
||||
response = await agent.run("List files in /tmp")
|
||||
print(f"Agent: {response}\n")
|
||||
|
||||
print("User: Create a file called test.txt with 'Hello from AgentLite!'")
|
||||
response = await agent.run(
|
||||
"Create a file called test.txt with content 'Hello from AgentLite!'"
|
||||
)
|
||||
print(f"Agent: {response}\n")
|
||||
|
||||
print("User: Read the test.txt file")
|
||||
response = await agent.run("Read the test.txt file")
|
||||
print(f"Agent: {response}\n")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Note: This example requires Node.js and the MCP filesystem server
|
||||
# npm install -g @modelcontextprotocol/server-filesystem
|
||||
print("Note: This example requires Node.js and @modelcontextprotocol/server-filesystem")
|
||||
print("Install with: npm install -g @modelcontextprotocol/server-filesystem\n")
|
||||
|
||||
try:
|
||||
asyncio.run(main())
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
print("\nMake sure you have:")
|
||||
print("1. Node.js installed")
|
||||
print("2. @modelcontextprotocol/server-filesystem installed globally")
|
||||
print("3. OPENAI_API_KEY environment variable set")
|
||||
Reference in New Issue
Block a user