LlamaCloud MCP 本地服务器
一个本地MCP服务器,集成了克劳德桌面端,启用了RAG功能,为克劳德提供来自自定义LlamaCloud索引的最新私有信息。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"filesystem": {
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"\u003cyour directory you want filesystem tool to have access to\u003e"
],
"command": "npx"
},
"llama_index_docs_server": {
"args": [
"llamacloud-mcp@latest",
"--index",
"your-index-name:Description of your index",
"--index",
"your-other-index-name:Description of your other index",
"--extract-agent",
"extract-agent-name:Description of your extract agent",
"--project-name",
"\u003cYour LlamaCloud Project Name\u003e",
"--org-id",
"\u003cYour LlamaCloud Org ID\u003e",
"--api-key",
"\u003cYour LlamaCloud API Key\u003e"
],
"command": "uvx"
}
}
}
该服务需要配置环境变量:LLAMA_CLOUD_API_KEY、OPENAI_API_KEY
服务介绍
LlamaIndex MCP 演示
此仓库展示了如何使用 LlamaCloud 创建一个 MCP 服务器,以及如何将 LlamaIndex 用作 MCP 客户端。
LlamaCloud 作为 MCP 服务器
要提供一个可以被像 Claude Desktop 这样的客户端使用的本地 MCP 服务器,你可以使用 mcp-server.py。你可以用它来提供一个工具,该工具将使用 RAG 来为 Claude 提供最新的私有信息以回答问题。你可以根据需要提供尽可能多的这类工具。
设置你的 LlamaCloud 索引
- 获取 LlamaCloud 账号
- 创建一个新的索引,并选择你想要的数据源。在我们的例子中,我们使用了 Google Drive 并提供了一部分 LlamaIndex 文档作为数据源。如果你想测试的话,也可以直接上传文档到索引。
- 从 LlamaCloud UI 获取 API 密钥
设置你的 MCP 服务器
- 克隆此仓库
- 创建一个
.env文件,并添加两个环境变量:LLAMA_CLOUD_API_KEY- 上一步中获取的 API 密钥OPENAI_API_KEY- 一个 OpenAI API 密钥。这用于驱动 RAG 查询。如果你不想使用 OpenAI,也可以使用其他任何语言模型。
现在来看看代码。首先实例化一个 MCP 服务器:
mcp = FastMCP('llama-index-server')
然后使用 @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)
这里我们的工具叫做 llama_index_documentation;它实例化了一个名为 mcp-demo-2 的 LlamaCloud 索引,然后将其用作查询引擎来回答查询,包括在提示中加入一些额外指令。你将在下一节中看到如何设置 LlamaCloud 索引的说明。
最后,运行服务器:
if __name__ == "__main__":
mcp.run(transport="stdio")
注意 stdio 传输方式,这是用来与 Claude Desktop 通信的。
配置 Claude Desktop
- 安装 Claude Desktop
- 在菜单栏中选择
Claude->Settings->Developer->Edit Config。这会显示一个可以在你喜欢的文本编辑器中编辑的配置文件。 - 你的配置应该看起来像这样(确保将
$YOURPATH替换为仓库路径):
{
"mcpServers": {
"llama_index_docs_server": {
"command": "poetry",
"args": [
"--directory",
"$YOURPATH/llamacloud-mcp",
"run",
"python",
"$YOURPATH/llamacloud-mcp/mcp-server.py"
]
}
}
}
确保在配置文件后重启 Claude Desktop。
现在你准备好进行查询了!你应该能在 Claude Desktop 的查询框下方看到带有你服务器列表的工具图标,如下所示:

LlamaIndex 作为 MCP 客户端
LlamaIndex 也支持 MCP 客户端集成,这意味着你可以将任何 MCP 服务器转换成一组可以被代理使用的工具。这在 mcp-client.py 中可以看到,我们使用 BasicMCPClient 连接到本地的 MCP 服务器。
为了演示的简单性,我们使用上面刚刚设置的同一台 MCP 服务器。通常情况下,你不会使用 MCP 将 LlamaCloud 连接到 LlamaIndex 代理,而是会使用 QueryEngineTool 并直接传递给代理。
设置你的 MCP 服务器
要提供一个可以被 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 服务器获取工具
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()
创建一个代理并提出问题
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())
一切就绪!现在你可以使用代理来回答来自 LlamaCloud 索引的问题了。