import asyncio
import os
from pathlib import Path
from dotenv import load_dotenv
from google.adk.agents import LlmAgent
from google.adk.runners import InMemoryRunner
from google.adk.tools.mcp_tool import McpToolset, StreamableHTTPConnectionParams
from google.genai import types
async def main():
load_dotenv()
twexapi_toolset = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://api.twexapi.io/mcp",
headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
)
)
agent = LlmAgent(
model="gemini-2.5-flash",
name="twexapi_agent",
instruction=(
"You help users interact with X/Twitter through Twexapi MCP. "
"Call explore first. Preserve tweet IDs, user IDs, cursors, and route_used."
),
tools=[twexapi_toolset],
)
runner = InMemoryRunner(agent=agent, app_name="twexapi_app")
session = await runner.session_service.create_session(
app_name="twexapi_app",
user_id="user-1",
)
response_parts = []
async for event in runner.run_async(
user_id="user-1",
session_id=session.id,
new_message=types.Content(
role="user",
parts=[
types.Part(
text=(
"Fetch trending tweets for united-states with topic technology "
"and content AI. Return tweet IDs, authors, engagement metrics, "
"has_more, and next_cursor."
)
)
],
),
):
if event.content and event.content.parts:
response_parts.extend(part.text for part in event.content.parts if part.text)
Path("twexapi-adk-handoff.json").write_text(
"".join(response_parts),
encoding="utf-8",
)
await twexapi_toolset.close()
asyncio.run(main())