项目简介

该仓库提供了一系列用于在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研究工具集成。

安装步骤

  1. 克隆仓库: 打开命令行或终端,执行以下命令将项目仓库克隆到您的本地机器:
    git clone https://github.com/luigisaetta/mcp-oci-integration.git
    cd mcp-oci-integration
  2. 安装Python依赖: 项目依赖FastMCP、LangChain、OracleDB等多个Python库。虽然仓库未提供 'requirements.txt',您可以根据代码中导入的库手动安装,或自行创建一个 'requirements.txt' 文件并安装:
    pip install fastmcp langchain-oci langchain_community langchain-oracledb oci pydantic requests streamlit
    (请注意,实际依赖可能更多,根据运行时错误补充安装)
  3. 配置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' 环境变量。
  4. 准备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' 中定义的类似机制获取。

基本使用方法

  1. 启动MCP服务器:
    • 打开命令行或终端,导航到项目的根目录。
    • 运行您想启动的MCP服务器脚本。例如,启动语义搜索服务器:
      python mcp_semantic_search_with_iam.py
    • 服务器将根据 'config.py' 中的配置(默认 'http://0.0.0.0:9000/mcp')监听客户端请求。
  2. 使用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服务器提供的工具来获取信息并回答您的问题。

信息

分类

AI与计算