| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import os
- from dotenv import load_dotenv
- from pydantic import Field
- from agency_swarm import BaseTool, function_tool, run_mcp
- load_dotenv()
- # v0.X BaseTool-style tool example (equally supported)
- class GetSecretWordTool(BaseTool):
- seed: int = Field(..., description="The seed for the random number generator")
- def run(self) -> str:
- """Returns a secret word based on the seed"""
- return "Strawberry" if self.seed % 2 == 0 else "Apple"
- @function_tool
- async def list_directory() -> str:
- """Returns the contents of the current directory"""
- import os
- dir_path = os.path.dirname(os.path.abspath(__file__))
- return os.listdir(dir_path)
- if __name__ == "__main__":
- if not os.getenv("APP_TOKEN") or os.getenv("APP_TOKEN") == "":
- os.environ["APP_TOKEN"] = "test_token_123"
- print("APP_TOKEN not set, using default token: test_token_123")
- run_mcp(
- tools=[GetSecretWordTool, list_directory],
- transport="sse",
- # FastMCP defaults this to 0, which reliably produces a scary shutdown error log.
- uvicorn_config={"timeout_graceful_shutdown": 1},
- )
|