Token导航 LogoToken导航TokenDH.com
MCP Openapi Demo logo
运维云端stdio官方级别未说明来源级核验

MCP Openapi Demo

MCP Server

一个通过LLM函数调用机制自动触发MCP的小型演示项目,用于展示如何通过OpenAI模型与Petstore API交互。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
PythonAPI集成OpenAI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

elifbeyzatok00

提供方

elifbeyzatok00

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

mcp openapi演示

模型上下文协议

通过“LLM函数调用”机制自动触发MCP的小演示。

📂 项目目录

mcp-openapi-demo/
│
├── server.js          # Node.js tarafı → MCP Server (Petstore API)
├── package.json       # Node bağımlılıkları
├── .env               # Ortam değişkenleri (API anahtarı vs.)
└── python-client/
    ├── client.py      # Python tarafı → MCP Client (OpenAI entegrasyonu ile)

项目如何运作

👉 只需“查找可用宠物”。 👉 模型会自行调用函数。 👉 Python代码将捕获此函数调用,将其重定向到MCP服务器,然后得到响应。 👉 将结果返回到模型并打印最终答案。

______________________________________________________________________

🚀 步骤1:启动MCP服务器

首先打开Node.js页面并在终端:

cd mcp-openapi-demo
node server.js

如果是真的:

🚀 MCP Server running on http://localhost:4000

你必须看到你的留言✅

______________________________________________________________________

🚀 步骤2:设置Python环境

转到 Python 客户端文件夹:

cd python-client
python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate
pip install requests openai

______________________________________________________________________

🚀 步骤3:设置OpenAI API密钥

API 密钥 .env 你可以写文件:

OPENAI_API_KEY=senin_api_key

在Python代码中获取密钥 python-dotenv 包装时:

pip install python-dotenv

have的常用口语形式 client.py 添加如下:

from dotenv import load_dotenv
load_dotenv()

现在的钥匙是自动的。 .env 将从档案中提取。

______________________________________________________________________

🚀 步骤4:启动Python客户端

python client.py

预期结果:

  1. 首先 来自Petstore API的JSON “可用宠物”列表。
  2. 然后 OpenAI模型的自然语言摘要 → “有20种宠物可供选择,大多数是狗和猫……”吉比。

📌 总结:

  • 由 Node.js 开发 → Petstore MCP Server
  • Python 方面 → 从 MCP 获取数据,并向 OpenAI 模型提供评论

LLM函数调用机制是如何工作的?

👉 模型 "find_available_pets" 调用函数 你写的 prompt + 你给的 tools 由于定义 正在发生。所以这个电话 作为对API调用的响应,在模型的输出中 正在发生。

📍 在哪里?

OpenAI 的 chat.completions.create 会在答案。 例如在Python中:

from openai import OpenAI

client = OpenAI()

tools = [
    {
        "type": "function",
        "function": {
            "name": "find_available_pets",
            "description": "Find pets in the Petstore API by status",
            "parameters": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": ["available", "pending", "sold"]
                    }
                },
                "required": ["status"],
            },
        }
    }
]

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Can you show me all available pets?"}
    ],
    tools=tools
)

print(response.choices[0].message)

📍 模特的反应如何?

模型不会返回纯文本, 函数调用döner:

{
  "role": "assistant",
  "tool_calls": [
    {
      "id": "call_1",
      "type": "function",
      "function": {
        "name": "find_available_pets",
        "arguments": "{ \"status\": \"available\" }"
      }
    }
  ]
}

📍 你在做什么?

  1. 这里 function.name have的常用口语形式 arguments 你会得到它的价值。
  1. 将此信息发送到MCP服务器 JSON-RPC请求 发送(pet/findByStatus).
  1. 返回的答案再次给模型
   client.chat.completions.create(
       model="gpt-4o-mini",
       messages=[
           {"role": "user", "content": "Can you show me all available pets?"},
           response.choices[0].message,  # function call çıktısı
           {
             "role": "tool",
             "tool_call_id": response.choices[0].message.tool_calls[0].id,
             "content": json.dumps(mcp_result)
           }
       ]
   )

✅ 调用“find_available_pets” 这不是你的代码,而是模型的输出。 你只需要抓住这个函数调用。 你真的在运行 (发送到MCP)

完整字符串 :

用户 → LLM → 函数调用 → MCP → 结果 → 再次 LLM

工具定义中的描述是否会影响过程?

没错✅ — 工具定义 描述 这是过程中最关键的部分之一。

LLM接收用户的消息,然后你给他 工具模式是的。 工具'un 名称, 参数 尤其是 描述 部分允许模型决定在什么情况下调用该工具。

🔎 具体影响因素:

  1. 工具名称(name)

- 模型的“关键词”。 - 但是,单靠它是不够的,因为用户可能不总是说“找到宠物”。 - 例如:用户 *“让我看看所有可供收养的狗”* 课程 → 查看模型描述并匹配“此工具为采用带来了可用的宠物”。

  1. Description(描述)

- 这是模型决策过程中最强的信号。

- 你在这里写的描述越清晰,任务定义越好,模型就会做出更准确的决定。

- Örn:

     "description": "Find pets that are currently available in the Petstore API. Use this function if the user asks about pets, animals, or available pets."

如果你这样写,模型会更准确地触发。

- 如果描述较弱,模型可能选择了错误的工具,或者根本没有调用工具。

  1. 参数(图)

- 允许模型生成正确的参数。 - Mesela枚举 ["available", "pending", "sold"] 如果是这样,模型将选择这三个值之一。 - 这将使您免受不必要的验证。

📌 摘要 :

  • 是的,描述直接影响。
  • 描述对于模型理解“哪个工具起作用”至关重要。
  • 写得好 description → 选择正确的工具和正确的参数。

目录标签

目录标签

PythonAPI集成OpenAILLM函数调用本地部署自动化流程PetstoreAPI

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP