llamacloud-mcp 是一个工具,允许您使用 LlamaCloud 作为 MCP 服务器。它可以用来查询 LlamaCloud 索引并从文件中提取数据。
它支持:
uvx llamacloud-mcp@latest --help 查看可用选项。llamacloud-mcp 服务器。您可以直接运行 uvx llamacloud-mcp@latest 启动服务器,或者使用 claude_desktop_config.json 文件连接到 Claude 桌面。% uvx llamacloud-mcp@latest --help
用法: llamacloud-mcp [选项]
选项:
--index 文本 索引定义格式为 name:description。可以多次使用。
--extract-agent 文本 提取代理定义格式为 name:description。可以多次使用。
--project-id 文本 LlamaCloud 的项目 ID
--org-id 文本 LlamaCloud 的组织 ID
--transport [stdio|sse|streamable-http]
运行 MCP 服务器的传输方式。可选值为 "stdio"、"sse"、"streamable-http"。
--api-key 文本 LlamaCloud 的 API 密钥
--help 显示此消息并退出。
Claude -> 设置 -> 开发者 -> 编辑配置。这会显示一个配置文件,您可以在首选文本编辑器中编辑该文件。--index 是一个新的索引工具,每个 --extract-agent 是一个提取代理工具。$YOURPATH 为存储库的路径):{
"mcpServers": {
"llama_index_docs_server": {
"command": "uvx",
"args": [
"llamacloud-mcp@latest",
"--index",
"your-index-name:您的索引描述",
"--index",
"your-other-index-name:您的其他索引描述",
"--extract-agent",
"extract-agent-name:您的提取代理描述",
"--project-name",
"<您的 LlamaCloud 项目名称>",
"--org-id",
"<您的 LlamaCloud 组织 ID>",
"--api-key",
"<您的 LlamaCloud API 密钥>"
]
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"<您希望文件系统工具访问的目录>"
]
}
}
}
确保在配置文件后重启 Claude 桌面。
现在您可以进行查询了!您应该会在 Claude 桌面的查询框下方看到一个带有您服务器列表的工具图标,如下图所示:

为了提供一个客户端如 Claude 桌面可以使用的本地 MCP 服务器,您可以使用 mcp-server.py。您可以使用这个工具来提供一个使用 RAG 来为 Claude 提供最新私人信息的工具,以便回答问题。您可以根据需要提供任意数量的这些工具。
.env 文件,并添加两个环境变量:
LLAMA_CLOUD_API_KEY - 上一步获取的 API 密钥OPENAI_API_KEY - 一个 OpenAI API 密钥。此密钥用于驱动 RAG 查询。如果您不想使用 OpenAI,可以使用 任何其他 LLM。现在让我们看看代码。首先实例化一个 MCP 服务器:
mcp = FastMCP('llama-index-server')
然后使用 @mcp.tool() 装饰器定义您的工具:
@mcp.tool()
def llama_index_documentation(query: str) -> str:
"""搜索给定查询的 llama-index 文档。"""
index = LlamaCloudIndex(
name="mcp-demo-2",
project_name="随机项目",
organization_id="e793a802-cb91-4e6a-bd49-61d0ba2ac5f9",
api_key=os.getenv("LLAMA_CLOUD_API_KEY"),
)
response = index.as_query_engine().query(query + " 详细说明并包含代码示例。")
return str(response)
这里我们的工具名为 llama_index_documentation;它实例化了一个名为 mcp-demo-2 的 LlamaCloud 索引,并将其用作查询引擎来回答查询,包括一些额外的提示指令。您将在下一节中获得如何设置您的 LlamaCloud 索引的说明。
最后,运行服务器:
if __name__ == "__main__":
mcp.run(transport="stdio")
注意 stdio 传输方式,用于与 Claude 桌面通信。
LlamaIndex 还有一个 MCP 客户端集成,这意味着您可以将任何 MCP 服务器转换为一组可以由代理使用的工具。您可以在 mcp-client.py 中看到这一点,我们使用 BasicMCPClient 连接到本地 MCP 服务器。
为了演示的简单性,我们使用上面刚刚设置的同一个 MCP 服务器。通常情况下,您不会使用 MCP 将 LlamaCloud 连接到 LlamaIndex 代理,而是使用 QueryEngineTool 并直接传递给代理。
为了提供一个可以被 HTTP 客户端使用的本地 MCP 服务器,我们需要稍微修改 mcp-server.py,使用 run_sse_async 方法而不是 run。您可以在 mcp-http-server.py 中找到这一点。
mcp = FastMCP('llama-index-server', port=8000)
asyncio.run(mcp.run_sse_async())
mcp_client = BasicMCPClient("http://localhost:8000/sse")
mcp_tool_spec = McpToolSpec(
client=mcp_client,
# 可选:按名称过滤工具
# allowed_tools=["tool1", "tool2"],
)
tools = mcp_tool_spec.to_tool_list()
llm = OpenAI(model="gpt-4o-mini")
agent = FunctionAgent(
tools=tools,
llm=llm,
system_prompt="您是一个知道如何在 LlamaIndex 中构建代理的代理。",
)
async def run_agent():
response = await agent.run("如何在 LlamaIndex 中实例化一个代理?")
print(response)
if __name__ == "__main__":
asyncio.run(run_agent())
一切就绪!现在您可以使用代理从您的 LlamaCloud 索引中回答问题。