项目简介
该仓库提供了一系列用于在Python中开发、部署和集成MCP (Model Context Protocol) 服务器的代码和示例。这些MCP服务器旨在帮助AI模型(如LLM或代理)通过统一接口与外部工具、数据源和Oracle OCI服务进行双向连接。它特别强调了与Oracle OCI资源的集成,包括数据库(如Oracle 23AI)和AI服务,并支持JWT安全认证。
主要功能点
- MCP服务器开发: 使用开源的FastMCP库,轻松构建符合MCP标准的后端服务器。
- OCI资源深度集成: 与Oracle数据库(用于向量搜索等)、OCI Generative AI、OCI IAM等服务深度集成,充分利用Oracle云基础设施的能力。
- AI工具暴露与调用: 将数据库查询、高性能语义搜索等企业级功能封装为可供LLM调用的MCP工具,扩展LLM的实际应用能力。
- 增强安全机制: 支持JWT认证,并可与OCI IAM集成,确保服务器通信安全,满足生产环境要求。
- AI代理无缝集成: 允许ChatGPT、Claude.ai等AI助手通过标准MCP协议调用暴露的工具,智能地获取和利用上下文信息。
- 完整语义搜索方案: 包含一个完整的MCP服务器示例,可在Oracle 23AI数据库上实现高效、准确的语义搜索功能。
- Deep Research 兼容: 提供符合OpenAI Deep Research规范的 'search' 和 'fetch' 工具,便于与高级AI研究工具集成。
安装步骤
- 克隆仓库:
打开命令行或终端,执行以下命令将项目仓库克隆到您的本地机器:
git clone https://github.com/luigisaetta/mcp-oci-integration.git cd mcp-oci-integration - 安装Python依赖:
项目依赖FastMCP、LangChain、OracleDB等多个Python库。虽然仓库未提供 'requirements.txt',您可以根据代码中导入的库手动安装,或自行创建一个 'requirements.txt' 文件并安装:
(请注意,实际依赖可能更多,根据运行时错误补充安装)pip install fastmcp langchain-oci langchain_community langchain-oracledb oci pydantic requests streamlit - 配置Oracle OCI连接:
- 在仓库根目录下,创建一个名为 'config_private.py' 的文件。您可以参考 'config_private_template.py' 中的模板。
- 在该文件中,填入您的Oracle数据库连接详细信息('VECTOR_DB_USER', 'VECTOR_DB_PWD', 'VECTOR_DSN', 'VECTOR_WALLET_PWD', 'VECTOR_WALLET_DIR'),以及OCI Compartment ID ('COMPARTMENT_ID')。
- 如果您计划启用JWT认证,还需要配置JWT密钥 ('JWT_SECRET')、OCI客户端ID ('OCI_CLIENT_ID') 和OCI Vault Secret OCID ('SECRET_OCID')。
- 确保您的Python环境已正确配置,可以连接到Oracle数据库。这可能需要安装Oracle客户端库并设置 'TNS_ADMIN' 环境变量。
- 准备Oracle数据库 (可选): 如果您打算使用语义搜索功能,需要将您的文档加载到Oracle数据库中,并确保数据库中存在VECTOR类型的表,以便进行向量存储和检索。
服务器配置
MCP客户端若要连接并使用本仓库提供的MCP服务器,通常需要以下配置信息。这些信息将指导客户端如何找到并与MCP服务器通信。
{ "server_name": "OCI 语义搜索 MCP 服务器", "command": "python", "args": ["mcp_semantic_search_with_iam.py"], "transport": "streamable-http", "url": "http://localhost:9000/mcp" }
- 'server_name': 这个字段是服务器的描述性名称,用于标识您的MCP服务器,例如“OCI 语义搜索 MCP 服务器”或“OCI Deep Research MCP 服务器”。
- 'command': 启动MCP服务器所使用的程序或脚本的解释器,对于Python实现的服务器,通常是'"python"'。
- 'args': 传递给'command'的参数列表,这里是MCP服务器的启动脚本文件。您可以根据需要选择启动 'mcp_semantic_search_with_iam.py' 或 'mcp_deep_research_with_iam.py'。
- 'transport': 服务器与客户端通信所使用的底层协议类型,本仓库示例中默认为'"streamable-http"'。
- 'url': MCP服务器的访问地址和端口,客户端将通过此URL与服务器建立连接。默认情况下,服务器会在本地9000端口的'/mcp'路径下提供服务。如果服务器部署在其他主机或端口,或者使用了不同的基路径,您需要相应修改此URL。
- JWT认证 (可选): 如果MCP服务器启用了JWT认证(通过 'config.py' 中的 'ENABLE_JWT_TOKEN = True' 控制),MCP客户端在连接时还需要提供一个有效的JWT令牌。令牌通常需要通过 'oci_jwt_client.py' 中定义的类似机制获取。
基本使用方法
- 启动MCP服务器:
- 打开命令行或终端,导航到项目的根目录。
- 运行您想启动的MCP服务器脚本。例如,启动语义搜索服务器:
python mcp_semantic_search_with_iam.py - 服务器将根据 'config.py' 中的配置(默认 'http://0.0.0.0:9000/mcp')监听客户端请求。
- 使用Streamlit UI进行测试 (MCP客户端示例):
- 在另一个独立的终端中,导航到项目根目录,并运行Streamlit UI:
streamlit run ui_mcp_agent.py - Streamlit应用将在您的默认浏览器中自动打开。
- 在左侧边栏的“Connection”部分,输入MCP服务器的URL(默认应为 'http://localhost:9000/mcp')。
- 选择一个可用的OCI Generative AI模型。
- 点击“🔌 Connect / Reload tools”按钮,连接到MCP服务器并加载其暴露的工具。
- 在页面底部的聊天输入框中输入您的问题,例如:“List all available collections in the vector store.”或“Search for documents about Luigi Saetta in the BOOKS collection with top 3 results.”。LLM将智能地调用MCP服务器提供的工具来获取信息并回答您的问题。
- 在另一个独立的终端中,导航到项目根目录,并运行Streamlit UI:
信息
分类
AI与计算