LlamaCloud MCP Server

MIT License
42

Integrations

  • Allows retrieving and indexing documents from Google Drive to provide up-to-date private information for RAG queries.

  • Powers the RAG query functionality, enabling the retrieval of relevant information from indexed documents.

Demostraciones de LlamaIndex MCP

Este repositorio demuestra cómo crear un servidor MCP usando LlamaCloud y cómo usar LlamaIndex como cliente MCP.

LlamaCloud como servidor MCP

Para proporcionar un servidor MCP local que pueda ser utilizado por un cliente como Claude Desktop, puede usar mcp-server.py . Esto le permitirá proporcionar una herramienta que, mediante RAG, le proporcionará a Claude información privada actualizada para responder preguntas. Puede proporcionar tantas herramientas como desee.

Configura tu índice de LlamaCloud

  1. Obtenga una cuenta de LlamaCloud
  2. Cree un nuevo índice con la fuente de datos que desee. En nuestro caso, usamos Google Drive y proporcionamos un subconjunto de la documentación de LlamaIndex como fuente. También puede subir documentos directamente al índice si solo desea probarlo.
  3. Obtenga una clave API de la interfaz de usuario de LlamaCloud

Configurar su servidor MCP

  1. Clonar este repositorio
  2. Cree un archivo .env y agregue dos variables de entorno:
    • LLAMA_CLOUD_API_KEY : la clave API que obtuviste en el paso anterior
    • OPENAI_API_KEY : Una clave API de OpenAI. Se utiliza para ejecutar la consulta RAG. Puede usar cualquier otro LLM si no desea usar OpenAI.

Ahora veamos el código. Primero, se instancia un servidor MCP:

mcp = FastMCP('llama-index-server')

Luego define tu herramienta usando el decorador @mcp.tool() :

@mcp.tool() def llama_index_documentation(query: str) -> str: """Search the llama-index documentation for the given query.""" index = LlamaCloudIndex( name="mcp-demo-2", project_name="Rando project", organization_id="e793a802-cb91-4e6a-bd49-61d0ba2ac5f9", api_key=os.getenv("LLAMA_CLOUD_API_KEY"), ) response = index.as_query_engine().query(query + " Be verbose and include code examples.") return str(response)

Nuestra herramienta se llama llama_index_documentation ; instancia un índice de LlamaCloud llamado mcp-demo-2 y lo utiliza como motor de consultas para responder a la consulta, incluyendo instrucciones adicionales en el mensaje. Encontrará instrucciones sobre cómo configurar su índice de LlamaCloud en la siguiente sección.

Finalmente, ejecuta el servidor:

if __name__ == "__main__": mcp.run(transport="stdio")

Tenga en cuenta el transporte stdio , utilizado para comunicarse con Claude Desktop.

Configurar Claude Desktop

  1. Instalar Claude Desktop
  2. En la barra de menú, seleccione Claude -> Settings -> Developer -> Edit Config . Aparecerá un archivo de configuración que puede editar en su editor de texto preferido.
  3. Querrás que tu configuración se parezca a esto (asegúrate de reemplazar $YOURPATH con la ruta al repositorio):
{ "mcpServers": { "llama_index_docs_server": { "command": "poetry", "args": [ "--directory", "$YOURPATH/llamacloud-mcp", "run", "python", "$YOURPATH/llamacloud-mcp/mcp-server.py" ] } } }

Asegúrese de reiniciar Claude Desktop después de configurar el archivo.

¡Ya está listo para consultar! Debería ver un icono de herramienta con su servidor debajo del cuadro de consulta en Claude Desktop, como este:

LlamaIndex como cliente MCP

LlamaIndex también cuenta con una integración de cliente MCP, lo que significa que puedes convertir cualquier servidor MCP en un conjunto de herramientas que un agente puede usar. Puedes ver esto en mcp-client.py , donde usamos BasicMCPClient para conectarnos a nuestro servidor MCP local.

Para simplificar la demostración, usamos el mismo servidor MCP que configuramos anteriormente. Normalmente, no se usaría MCP para conectar LlamaCloud a un agente de LlamaIndex; se usaría QueryEngineTool y se pasaría directamente al agente.

Configurar su servidor MCP

Para proporcionar un servidor MCP local que pueda ser utilizado por un cliente HTTP, necesitamos modificar ligeramente mcp-server.py para usar el método run_sse_async en lugar de run . Puedes encontrarlo en mcp-http-server.py .

mcp = FastMCP('llama-index-server',port=8000) asyncio.run(mcp.run_sse_async())

Obtenga sus herramientas del servidor MCP

mcp_client = BasicMCPClient("http://localhost:8000/sse") mcp_tool_spec = McpToolSpec( client=mcp_client, # Optional: Filter the tools by name # allowed_tools=["tool1", "tool2"], ) tools = mcp_tool_spec.to_tool_list()

Crea un agente y haz una pregunta

llm = OpenAI(model="gpt-4o-mini") agent = FunctionAgent( tools=tools, llm=llm, system_prompt="You are an agent that knows how to build agents in LlamaIndex.", ) async def run_agent(): response = await agent.run("How do I instantiate an agent in LlamaIndex?") print(response) if __name__ == "__main__": asyncio.run(run_agent())

¡Listo! Ya puedes usar el agente para responder preguntas desde tu índice de LlamaCloud.

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor MCP local que se integra con Claude Desktop, lo que permite que las capacidades de RAG proporcionen a Claude información privada actualizada de los índices personalizados de LlamaCloud.

  1. LlamaCloud as an MCP server
    1. Set up your LlamaCloud index
    2. Set up your MCP server
    3. Configure Claude Desktop
  2. LlamaIndex as an MCP client
    1. Set up your MCP server
    2. Get your tools from the MCP server
    3. Create an agent and ask a question
ID: 836roj5xrj