Configuración de LangChain
Conecte un agente de LangChain o LangGraph al servidor MCP de graph8. Se admiten dos transportes: hospedado (OAuth remoto) y autohospedado (stdio local).
Requisitos previos
- Python 3.10+
langchain-mcp-adapters,langgraph,langchain-anthropic(o el proveedor que prefiera)- Una cuenta de graph8 con una clave de API personal generada desde Perfil -> Desarrollador (para stdio), o cualquier sesión activa (para OAuth)
pip install langchain-mcp-adapters langgraph langchain-anthropicMCP hospedado (OAuth remoto)
Utilice esta opción cuando desee que graph8 gestione la autenticación mediante OAuth y no quiera instalar el servidor MCP localmente. El agente se conecta a https://be.graph8.com/mcp/ mediante HTTP transmisible y le solicita iniciar sesión una sola vez.
import asyncioimport os
from langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentfrom langchain_anthropic import ChatAnthropic
async def main() -> None: client = MultiServerMCPClient( { "graph8": { "transport": "streamable_http", "url": "https://be.graph8.com/mcp/", } } )
tools = await client.get_tools() model = ChatAnthropic( model="claude-sonnet-4", api_key=os.environ["ANTHROPIC_API_KEY"], ) agent = create_react_agent(model, tools)
result = await agent.ainvoke( { "messages": [ ( "user", "Find 25 VP Engineering at Series B SaaS companies " "in the United States. Return name, company, and title.", ) ] } ) print(result["messages"][-1].content)
if __name__ == "__main__": asyncio.run(main())La primera ejecución abre una ventana del navegador para completar el OAuth. Las ejecuciones posteriores reutilizan el token almacenado en caché por el cliente MCP.
MCP autohospedado (stdio)
Utilice esta opción cuando no pueda depender de OAuth basado en navegador (CI, servidores sin interfaz gráfica, entornos sin conexión). Requiere uv o Python en el host, además de una clave de API personal.
export G8_API_KEY="g8_..."import asyncioimport os
from langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentfrom langchain_anthropic import ChatAnthropic
async def main() -> None: client = MultiServerMCPClient( { "graph8": { "transport": "stdio", "command": "uvx", "args": ["g8-mcp-server"], "env": { "G8_API_KEY": os.environ["G8_API_KEY"], "G8_MCP_MODE": "gtm", }, } } )
tools = await client.get_tools() model = ChatAnthropic(model="claude-sonnet-4") agent = create_react_agent(model, tools)
result = await agent.ainvoke( {"messages": [("user", "Search my CRM for contacts at Stripe.")]} ) print(result["messages"][-1].content)
if __name__ == "__main__": asyncio.run(main())Configure G8_MCP_MODE en dev, gtm o all para delimitar el conjunto de herramientas disponibles. Consulte Modos.
Ejemplo práctico: prospectar, calificar e inscribir
Agente de LangGraph de extremo a extremo que encuentra prospectos, los guarda en una lista e inscribe esa lista en una secuencia. Confirme los pasos que consumen créditos antes de ejecutarlo.
prompt = ( "1. Use g8_find_contacts to preview 50 VP Engineering at Series B SaaS in the US.\n" "2. Show me the top 10 by company size and ask me to confirm.\n" "3. On confirmation, use g8_build_contact_list to save them to a new list " "named 'Series B SaaS VP Eng'.\n" "4. Then use g8_list_sequences to find a sequence named 'New SaaS Outreach'.\n" "5. Use g8_add_to_sequence to enroll the saved contacts. Ask me to confirm " "before enrolling.")graph8 aplica una regla de confirmación para las herramientas que consumen créditos (g8_build_contact_list, g8_add_to_sequence). El agente se detendrá y pedirá confirmación antes de ejecutar cualquiera de ellas.