使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的 RAG (Retrieval-Augmented Generation) 示例服务器实现。它演示了如何使用 MCP 协议构建一个可以向 LLM 客户端提供外部数据访问能力的后端服务,特别是集成了 AWS Knowledge Base,通过 MCP 工具提供强大的知识库检索功能。本项目使用了 LangChain MCP Adapters 和 LangGraph,方便用户理解如何在 LangChain 生态中使用 MCP。
主要功能点
- 资源 (Resources) 访问: 通过集成的 AWS Knowledge Base,提供文档的检索和访问能力,使得 LLM 可以利用外部知识进行问答。
- 工具 (Tools) 注册和执行: 注册 'search' 工具,允许 LLM 客户端调用该工具进行知识库查询,并返回检索结果。
- Prompt 模板 (Prompts): 虽然仓库内容没有明确展示 Prompt 模板,但集成了 LangChain 和 LangGraph,具备定义和渲染 Prompt 模板的能力,可以支持定制化的 LLM 交互模式。
- 标准 MCP 协议: 使用 'fastmcp' 库构建 MCP 服务器,遵循 MCP 协议标准,可以通过 JSON-RPC 协议与客户端进行通信。
- 传输协议: 支持 Stdio 传输协议,方便本地开发和测试。
- 集成 LangChain 和 LangGraph: 展示了如何将 MCP 服务器与 LangChain 和 LangGraph 结合使用,构建复杂的 LLM 应用。
安装步骤
- 环境准备: 确保已安装 Python 3.8 或更高版本。
- 安装依赖: 使用 pip 安装必要的 Python 包:
pip install mcp langchain-mcp-adapters streamlit streamlit_chat boto3 langchain_aws langchain langchain_community langgraph - AWS 凭证配置: 配置 AWS CLI 凭证,确保可以访问 AWS Bedrock 和 Knowledge Base 等服务。
- 配置 'config.json': 复制 'cdk-mcp-rag/environment-for-mcp-rag' CDK stack 输出的 'environmentformcprag' 内容,创建 'application/config.json' 文件,并根据实际情况修改配置,例如 AWS 区域、项目名称、账户 ID 等。
服务器配置
MCP 服务器需要通过 MCP 客户端进行连接和调用。MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args)。以下是针对本项目 'application/mcp-server.py' 的 MCP 服务器配置信息,请复制以下 JSON 配置到您的 MCP 客户端配置中:
{ "mcpServers": { "search": { "command": "python", "args": [ "application/mcp-server.py" ] } } }
配置参数说明:
- '"search"': 服务器名称,可以自定义。
- '"command": "python"': 启动服务器的命令,这里使用 'python' 命令。
- '"args": ["application/mcp-server.py"]': 启动服务器命令的参数,指定 MCP 服务器脚本的路径为 'application/mcp-server.py'。
基本使用方法
- 启动 MCP 服务器: 在仓库根目录下,打开终端,激活 Python 虚拟环境(如果已创建),然后运行 Streamlit 应用以启动 MCP 服务器:
这将同时启动 Streamlit UI 界面和后端的 MCP 服务器。streamlit run application/app.py - 配置 MCP 客户端: 在您的 MCP 客户端(例如 Cursor 或 Claude Desktop),配置上述 服务器配置 中提供的 JSON 信息。
- 使用 MCP 客户端与服务器交互: 在 MCP 客户端中,您可以配置 Agent,使其能够发现和调用 MCP 服务器提供的 'search' 工具。例如,在 LangGraph Agent 中,您可以使用 'MultiServerMCPClient' 连接到 MCP 服务器,并加载 'search' 工具。Agent 即可利用该工具进行知识库检索,从而增强 LLM 的上下文理解和问答能力。
示例代码 (MCP 客户端 Agent 配置 - 仅供参考,具体代码请参考仓库 'rag-client.py' 和 'rag-agent.py'):
from langchain_mcp_adapters.client import MultiServerMCPClient server_params = { "RAG": { "command": "python", "args": ["application/mcp-server.py"], "transport": "stdio", } } async with MultiServerMCPClient(server_params) as client: tools = client.get_tools() agent = create_agent(tools) # create_agent 函数需要您根据仓库代码自行实现 response = await agent.ainvoke({"messages": user_query}) result = response["messages"][-1].content print(result)
注意: 请根据您的 MCP 客户端的具体使用方法进行配置和调用。本说明仅提供基本的使用指导,更详细的集成和使用方法,请参考仓库中的代码示例和 README 文档。
信息
分类
AI与计算