OCI API网关管理服务器

一个用于Oracle云基础设施(OCI) API网关管理的Python多客户端协议(MCP)服务器,支持编程和LLM驱动的客户端交互。

  • by rohit1223
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 rohit1223/oci-mcp-server

使用说明

oci-mcp服务器

用于Oracle云基础设施(OCI)API网关管理的Python MCP(多客户端协议)服务器,具有编程和LLM支持的客户端。


特性

  • 列出API网关 在给定的OCI隔室中。
  • 获取详细信息 用于特定的API网关。
  • MCP标准传输 便于与LLM代理和其他客户端集成。
  • LlamaIndex/Ollama 客户端 用于与OCI API网关资源进行自然语言交互。

快速启动

1.先决条件

  • Python 3.11(必填)
  • 紫外线 (快速Python包/依赖管理器)
  • 具有API网关访问权限的OCI帐户
  • OCI会话身份验证文件(~/.oci/sessions/DEFAULT/token 和 oci_api_key.pem)

2.安装 uv

curl -Ls https://astral.sh/uv/install.sh | sh

或者,从 PyPI:

# With pip.
pip install uv
# Or pipx.
pipx install uv

如果通过独立安装程序安装,uv可以将自己更新到最新版本:

uv self-update

或者看看 紫外线安装文档 对于其他方法。

3.创建和激活虚拟环境

uv venv --python 3.11
source .venv/bin/activate

4.安装依赖项

uv pip install -r pyproject.toml

或者,如果你想使用 uv 直接:

uv pip install -e .

光标和MCP集成

5.安装游标

光标 是一个AI驱动的代码编辑器,可以与MCP服务器进行本地交互。

要安装Cursor,请执行以下操作:

  • 从下载并安装Cursor 官方网站 适用于您的平台(macOS、Windows、Linux)。
  • 按照操作系统的安装说明进行操作。

6.更新您的 mcp.json 配置

要将Cursor连接到自定义MCP服务器,您需要更新或创建 mcp.json 项目根目录中的文件。在中使用提供的模板 src/mcp_template.json 作为一个起点。

步骤

  1. 通过导航到打开光标设置 Cursor > Settings... > Cursor Settings

  2. 选择 MCP > + Add new global MCP server

您还应该能够从以下位置编辑mcp.json vi ~/.cursor/mcp.json

步骤:

  1. 复制以下内容 src/mcp_template.json 向 ~/.cursor/mcp.json (或 mcp.json 来自编辑):

  2. 编辑 mcp.json 并更新路径:

    • 替换 <path to Python> 如果使用虚拟环境,请提供Python 3.11可执行文件的绝对路径)。
    • 替换 <path to server.py> 与你的绝对路径 server.py 脚本。
  3. 保存文件。Cursor现在将能够发现并连接到您的MCP服务器。


配置

编辑 src/config.py 根据需要设置OCI隔间和网关OCID、区域和配置文件:

PROFILE_NAME = 'DEFAULT'
REGION = 'ap-mumbai-1'
SERVICE_ENDPOINT = '<SERVICE ENDPOINT>'
COMPARTMENT_ID = '<COMPARTMENT_ID>'
GATEWAY_ID = '<GATEWAY_ID>' # For Programmatic Client

您必须在中拥有有效的OCI会话文件 ~/.oci/sessions/DEFAULT/.

你可以这样做 oci session authenticate --tenancy-name <TENANCY_NAME> --profile-name DEFAULT --region $REGION


运行MCP服务器

从项目根开始:(我发现最好在单独的终端中运行服务器)

python src/server.py

这将使用stdio传输启动MCP服务器,并公开以下工具:

  • list_gateways_tool(compartment_id)
  • get_gateway_tool(gateway_id)

游标客户端(代理模式)

您不需要为Cursor运行MCP服务器。因为Cursor Agent将从mcp.json中提供的服务器资源运行它

看 src/mcp_template.json 对于MCP服务器配置示例:

{
    "mcpServers": {
        "oci_api_gateway": { 
            "command": "<absolute path to Python (preferably from .venv)>",
            "args": [
                "<absolute path to server.py>"
            ]
        }
    }
}

在游标编辑器中,您现在可以使用自然语言查询与MCP服务器进行交互。

例如,要列出特定隔间中的所有网关,您可以键入:

例子:

list all the gateways in ocid1.compartment.oc1..aaaaaaaai2zzsg.............................m4pjq

Cursor代理将处理您的请求,并从MCP服务器返回结果。

程序化客户端

Programmatic Client允许您直接使用Python代码测试自定义MCP工具并与之交互,而无需涉及AI代理。 它对于以简单、可脚本化的方式验证工具功能和调试服务器响应非常有用。

看 src/client_stdio.py 举个简单的例子:

python src/client_stdio.py

这将:

  • 连接到MCP服务器
  • 列出可用工具
  • 打电话给 list_gateways_tool 和 get_gateway_tool 方法和打印结果

WIP:LlamaIndex+Ollama客户

LlamaIndex+Ollama客户端是一个正在进行中的工作(WIP),旨在使用自托管LLM代理与您的MCP工具进行自然语言交互

看 src/client_llama_react.py 对于使用LlamaIdex和Ollama的高级示例(Llama 3.2):

  • 确保你有 没有 在本地运行 llama3.2 模型。
  • 编辑 server_params 路径在 client_llama_react.py 如果需要的话。
python src/client_llama_react.py

这将:

  • 连接到MCP服务器
  • 包装LlamaIndex的工具
  • 使用LLM运行自然语言查询

发展

  • 所有源代码都在 src/ 目录。
  • 依赖关系通过以下方式管理 pyproject.toml.
  • 要添加新工具,请编辑 src/server.py 并实现逻辑 src/gateway_services.py(用于网关资源)。

故障排除

  • 确保您的OCI会话文件存在且有效。
  • 使用Python 3.11和提供的虚拟环境。
  • 对于LlamaIndex/Ollama,确保Ollama服务器正在运行且可访问。