import asyncio
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain.chat_models import init_chat_model
from langchain.schema import HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_mcp_adapters.tools import load_mcp_tools
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Initialize LLM
llm = init_chat_model(
model="gpt-4o",
model_provider="openai",
)
server_params = StdioServerParameters(
command="npx",
args=[
"mcp-remote",
"https://mcp.membit.ai/mcp",
"--header",
"X-Membit-Api-Key:${MEMBIT_API_KEY}",
],
env={ # Replace `<your-api-key>` with your actual Membit API key.
"MEMBIT_API_KEY": <your-api-key>,
},
)
prompt = ChatPromptTemplate.from_messages([
(
"system",
"You are a social media analyst with access to real-time data. "
"Make sure you utilize membit tools to get the most trending data."
),
MessagesPlaceholder(variable_name="messages"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
async def main():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
mcp_tools = await load_mcp_tools(session)
agent = create_openai_tools_agent(
llm=llm,
tools=mcp_tools,
prompt=prompt
)
agent_executor = AgentExecutor(
agent=agent,
tools=mcp_tools,
verbose=True
)
user_input = (
"What are the most trending discussions today related to Bitcoin? "
"Give me the best conversations to follow with URLs."
)
await agent_executor.ainvoke({
"messages": [HumanMessage(content=user_input)]
})
if **name** == "**main**":
asyncio.run(main())