项目简介

'vibe-llama' 是一个旨在帮助开发者构建基于 LlamaIndex、LlamaCloud Services 和 llama-index-workflows 应用的工具集。它包含一个实现了 Model Context Protocol (MCP) 的服务器,其核心功能是向 AI 助手或 LLM 客户端提供最新的 LlamaIndex 相关文档信息作为上下文。

主要功能点

  • 文档上下文检索: 服务器提供一个名为 'get_relevant_context' 的工具。LLM 客户端可以通过向该工具发送查询,检索与 LlamaIndex 生态系统相关的文档内容,例如 API 文档、最佳实践或常见模式。
  • 标准化通信: 'vibe-llama' MCP 服务器通过 JSON-RPC 协议与客户端通信,接收客户端请求(如调用工具、获取上下文)并返回标准化的响应。
  • 本地部署: 用户可以在本地环境中启动 'vibe-llama' MCP 服务器,方便开发、集成和测试 LLM 应用。

安装步骤

您可以通过 'uv' 或 'pip' 两种方式安装 'vibe-llama':

# 方法一:使用 uv 安装并直接运行
uvx vibe-llama@latest --help

# 方法二:使用 pip 先安装,再运行
pip install vibe-llama

服务器配置

MCP 客户端需要知道如何启动 'vibe-llama' MCP 服务器才能与其建立连接。服务器默认将在 'http://127.0.0.1:8000/mcp' 地址启动并监听请求。

以下是 MCP 客户端配置 'vibe-llama' 服务器所需的关键信息:

{
  "name": "VibeLlama MCP Server",  // 您可以为服务器指定一个易于识别的名称,例如 "VibeLlama MCP Server"
  "command": "vibe-llama",         // 启动服务器的命令是 "vibe-llama"
  "args": ["starter", "--mcp"]     // 启动 MCP 服务器所需的参数是 "starter --mcp"
}

请注意: 上述是一个 JSON 格式的配置说明,而不是直接可运行的代码。您的 MCP 客户端应根据其自身的配置方式,使用这些信息来启动和连接 'vibe-llama' MCP 服务器。

基本使用方法

  1. 启动 MCP 服务器: 在终端中运行以下命令,启动本地 'vibe-llama' MCP 服务器:

    vibe-llama starter --mcp

    服务器启动后,您将在终端看到相关提示信息。它将监听 'http://127.0.0.1:8000/mcp' 地址以处理客户端请求。

  2. 通过 MCP 客户端与服务器交互: 服务器启动后,任何兼容 MCP 协议的客户端都可以连接并与其交互。'vibe-llama' 项目自身也提供了一个 Python SDK ('VibeLlamaMCPClient') 用于便捷交互。以下是一个使用该 SDK 客户端的示例:

    from vibe_llama.sdk import VibeLlamaMCPClient
    import asyncio
    
    async def main():
        client = VibeLlamaMCPClient()
    
        # 1. 列出服务器可用的工具
        print("正在列出可用的工具...")
        tools = await client.list_tools()
        print(f"服务器可用的工具: {[tool.name for tool in tools]}")
        # 预期输出: 服务器可用的工具: ['get_relevant_context']
    
        # 2. 调用 get_relevant_context 工具检索文档内容
        query = "LlamaParse 如何解析文档"
        top_k = 3
        print(f"\n正在检索关于 '{query}' 的相关文档 (top {top_k})...")
        # parse_xml=True 会将服务器返回的 XML 结果解析为 Python 字典
        result = await client.retrieve_docs(query=query, top_k=top_k, parse_xml=True)
    
        if "result" in result:
            print("\n检索到的文档片段:")
            for i, doc_snippet in enumerate(result["result"]):
                print(f"--- 片段 {i+1} ---\n{doc_snippet}\n")
        else:
            print(f"\n检索失败,错误信息: {result['error']}")
    
    if __name__ == "__main__":
        asyncio.run(main())

    请确保在运行上述 Python 客户端代码之前,'vibe-llama' MCP 服务器已在另一个终端中启动。

信息

分类

AI与计算