awesome-well-mcp


Nameawesome-well-mcp JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
Summary井身结构图生成器 MCP 服务 - 基于井数据自动生成井身结构图
upload_time2025-10-07 20:50:44
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords drilling generator mcp petroleum structure well
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Awesome Well Structure MCP 服务

这是一个基于 MCP (Model Context Protocol) 的井身结构图生成服务,可以根据井数据自动生成井身结构图。

## 示例图片

井身结构示意图绘制:

![well_structure_plot_sample](https://cqchen.top/PicGO/well_structure_plot_sample.png)

井身结构数据解析:

![well_info_sample](https://cqchen.top/PicGO/well_info_sample.png)

## 功能特性

- 支持四种基本井型:直井、水平井、定向井、直改平井,支持侧钻井转换
- 自动生成井身结构图(PNG格式)和井身结构信息图
- 生成相关数据文件(CSV格式)
- 返回简化的图片路径(大幅减少token消耗,仅支持path格式)
- 自动文件归档管理(时间戳文件夹)
- 完整的错误处理和验证
- 支持图例配置和导眼井辅助线显示

## 安装和配置

### 方法一:通过 PyPI 包安装(推荐)

这是最简单快捷的安装方式,适合大多数用户。

#### 1. 安装 Python 和 uv

**安装 Python:**
- 访问 [Python官网](https://www.python.org/downloads/) 下载并安装 Python 3.8 或更高版本
- 安装时确保勾选 "Add Python to PATH" 选项

**安装 uv:**
```bash
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```

#### 2. 配置 AI 客户端

在 AI 客户端(以 Cherry Studio 为例)中添加以下配置:

```json
{
  "mcpServers": {
    "awesome-well-mcp": {
      "name": "awesome-well-mcp",
      "type": "stdio",
      "command": "uvx",
      "args": [
        "awesome-well-mcp"
      ]
    }
  }
}
```

### 方法二:从 GitHub 下载源码安装

适合需要自定义修改或离线使用的用户。

#### 1. 下载源码

从以下仓库下载源码(推荐第一个):

- **主要仓库**:[https://github.com/elf004-star/elf004GH_vault_MCP001.git](https://github.com/elf004-star/elf004GH_vault_MCP001.git)
- **备用仓库**:[https://github.com/elf004-star/elf004GH_vault_awesome_well_structure.git](https://github.com/elf004-star/elf004GH_vault_awesome_well_structure.git)

主要文件包括:
- `WellStructure.exe` - 井身结构生成器
- `main.py` - MCP 服务主程序
- `pyproject.toml` - 项目配置文件

#### 2. 安装 Python 和 uv

**安装 Python:**
- 访问 [Python官网](https://www.python.org/downloads/) 下载并安装 Python 3.8 或更高版本
- 安装时确保勾选 "Add Python to PATH" 选项

**安装 uv:**
```bash
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```

#### 3. 设置虚拟环境

```bash
# 进入项目目录
cd /path/to/your/project

# 使用 uv 创建虚拟环境并安装依赖
uv sync
```

#### 4. 配置 AI 客户端

在 AI 客户端(以 Cherry Studio 为例)中添加 MCP 服务器:

**通过界面配置:**
1. 打开 Cherry Studio
2. 进入设置 → MCP 服务器
3. 添加新的 MCP 服务器
4. 配置如下:
   - **类型**:标准输入输出 studio
   - **命令**:uv
   - **参数**:
     ```
     --directory
     C:\Files\test_MCP\awesome_well(填写你的文件夹地址)
     run
     main.py
     ```

**通过配置文件编辑:**
```json
{
  "mcpServers": {
    "awesome-well-mcp-local": {
      "name": "awesome-well-mcp-local",
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "C:\\_Git_Files\\test",
        "run",
        "main.py"
      ]
    }
  }
}
```

**注意:** 请将 `C:\\_Git_Files\\test` 替换为你的实际项目路径。

## MCP工具调用

工具名称:`generate_well_structure`

参数:
- `well_data`: 井数据JSON对象(必需)

返回:
- 成功时返回简化的图片路径(<1200 token,仅支持path格式)及生成报告字典。
- 失败时返回错误信息字典。

**返回格式**:
```
井身结构示意图为:
![PNG](文件夹绝对路径+well_structure_plot.png)

井身结构信息图为:
![PNG](文件夹绝对路径+well_info.png)
```

**返回数据结构和服务实现的底层逻辑**:
```json
{
  "success": true,
  "report_content": "详细的井身结构报告内容(Markdown格式)",
  "response": "井身结构示意图为:\n![PNG](结构图绝对路径)\n\n井身结构信息图为:\n![PNG](信息图绝对路径)",
  "notice": "注意,先整理<report_content>,必须将上面这项<response>包含在整理后的<report_content>中",
  "well_info": {
    "well_name": "井名",
    "well_type": "井型", 
    "total_depth": 深度
  },
  "archive_folder": "2025-10-03_11-37-29",
  "structure_image_path": "井身结构图绝对路径",
  "info_image_path": "井身结构信息图绝对路径"
}
```

**Token优化**:
- 返回内容大幅简化,减少token消耗
- 每次返回不超过1200个token
- 移除冗长的报告内容,只保留核心信息
- 同时生成井身结构图和井身结构信息图

### 支持的井型

#### 基本井型定义

1. **直井** (`straight well`)
   - `deviationAngle_deg: 0`
   - `kickoffPoint_m: null`
   - `targetPointA_m: null`
   - `targetPointB_m: null`
   - `DistanceAB_m: null`

2. **定向井** (`deviated well`)
   - `deviationAngle_deg: 0 < 角度 < 90`
   - `kickoffPoint_m: 有值`(造斜点深度(可根据作图情况调整))
   - `targetPointA_m: 有值`(目标点A井深)
   - `targetPointA_verticalDepth_m: 有值`(目标点A的垂深),
   - `targetPointB_m: 有值`(目标点B井深)
   - `DistanceAB_m: 有值`(AB点间距离)
   - `REAL_kickoffPoint_m: 有值`(实际造斜点)

3. **水平井** (`horizontal well`)
   - `deviationAngle_deg: 90`
   - `kickoffPoint_m: 有值`(造斜点深度(可根据作图情况调整))
   - `targetPointA_m: 有值`(目标点A井深)
   - `targetPointA_verticalDepth_m: 有值`(目标点A的垂深),
   - `targetPointB_m: 有值`(目标点B井深)
   - `DistanceAB_m: 有值`(AB点间距离)
   - `REAL_kickoffPoint_m: 有值`(实际造斜点)

4. **直改平井** (`straight-to-horizontal well`)
   - `deviationAngle_deg: 90`
   - `kickoffPoint_m: 有值`(造斜点深度(可根据作图情况调整))
   - `targetPointA_m: 有值`(目标点A井深)
   - `targetPointA_verticalDepth_m: 有值`(目标点A的垂深),
   - `targetPointB_m: 有值`(目标点B井深)
   - `DistanceAB_m: 有值`(AB点间距离)
   - `REAL_kickoffPoint_m: 有值`(实际造斜点)
   - 需要配置 `pilotHoleGuideLine` 并设置 `"side_tracking": true`

#### 井型转换规则

当 `wellType` 为 `horizontal well` 或 `deviated well` 时,如果配置了 `pilotHoleGuideLine` 并设置 `"side_tracking": true`,则可以表示:

- **直改平井**:从直井段开始,在指定深度开始造斜
- **侧钻井**:从现有井眼侧向钻出新的井眼

#### pilotHoleGuideLine 配置示例

```json
"pilotHoleGuideLine": {
  "topDepth_m": 4530,        // 导眼井段起始深度
  "bottomDepth_m": 5150,      // 导眼井段结束深度
  "diameter_mm": 215.9,       // 导眼井段直径
  "display": true,            // 是否显示导眼井段
  "highlight": true,          // 是否高亮显示
  "side_tracking": true       // 是否为侧钻井
}
```

#### legendConfig 图例配置示例

```json
"legendConfig": {
  "casingLegend": true,        // 是否显示套管图例
  "holeLegend": false,         // 是否显示井眼图例
  "kickoffLegend": true,       // 是否显示造斜点图例
  "targetPointsLegend": true   // 是否显示目标点图例
}
```

## 生成的文件

每次请求完成后,所有生成的文件会自动移动到以时间戳命名的文件夹中:

- `well_structure_plot.png`: 井身结构图
- `well_info.png`: 井身结构信息图
- `well_structure_report.md`: 井身结构报告
- `stratigraphy.csv`: 地层数据
- `casing_sections.csv`: 套管数据
- `hole_sections.csv`: 井眼数据
- `drilling_fluid_pressure.csv`: 钻井液压力数据
- `deviationData.csv`: 偏移数据
- `location.csv`: 位置数据
- 对应的 `*_raw.csv` 原始数据文件

**文件归档**:
- 文件夹命名格式:`YYYY-MM-DD_HH-MM-SS`
- 示例:`2025-10-03_11-37-29`
- 每次请求都会创建新的归档文件夹

## 技术实现

- 使用 FastMCP 框架
- 支持异步处理
- 完整的错误处理机制
- 自动文件备份和清理
- 3秒延迟确保程序完全结束
- Token优化,减少API调用成本

## 模板文件

项目提供了四种井型的设计模板,位于 `templates/` 目录:

- `well_data(导眼井).json` - 直井设计模板
- `well_data(导向井) .json` - 定向井设计模板  
- `well_data(水平井).json` - 水平井设计模板
- `well_data(直改平).json` - 直改平井设计模板

这些模板文件展示了不同井型的标准数据结构和参数配置,可以作为设计新井的参考。每个模板都包含了完整的井身结构数据、地层信息、钻井液压力数据和图例配置。

## 数据结构设计要求

### stratigraphy(地层数据)

地层数据定义了井眼穿过的各个地质层位信息:

```json
"stratigraphy": [
  {
    "name": "遂宁组",           // 地层名称
    "topDepth_m": 0,           // 地层顶深(米)
    "bottomDepth_m": 45        // 地层底深(米)
  },
  {
    "name": "沙溪庙组",
    "topDepth_m": 45,
    "bottomDepth_m": 1195
  }
  // ... 更多地层
]
```

**设计要求:**
- 地层必须按深度顺序排列,从浅到深
- 相邻地层的深度必须连续(上一个地层的底深 = 下一个地层的顶深)
- 最后一个地层的底深应等于或接近 `totalDepth_m`
- 地层名称使用标准地质术语

### drillingFluidAndPressure(钻井液压力数据)

钻井液压力数据定义了不同深度段的压力参数:

```json
"drillingFluidAndPressure": [
  {
    "topDepth_m": 0,                    // 压力段顶深(米)
    "bottomDepth_m": 50,                 // 压力段底深(米)
    "porePressure_gcm3": 1.00,          // 孔隙压力(g/cm³)
    "pressureWindow_gcm3": {             // 压力窗口
      "min": 1.05,                       // 最小压力(g/cm³)
      "max": 1.10                        // 最大压力(g/cm³)
    }
  }
  // ... 更多压力段
]
```

**设计要求:**
- 压力段必须按深度顺序排列,从浅到深
- 相邻压力段的深度必须连续
- 孔隙压力值应在地质上合理
- 压力窗口的最小值应大于孔隙压力
- 压力段数量通常少于地层数量,可以合并相似压力特征的地层

### wellboreStructure(井身结构)

井身结构定义了井眼和套管的几何参数:

```json
"wellboreStructure": {
  "holeSections": [                     // 井眼段
    {
      "topDepth_m": 0,                  // 井眼段顶深(米)
      "bottomDepth_m": 50,               // 井眼段底深(米)
      "diameter_mm": 660.4,             // 井眼直径(毫米)
      "note_in": "26\""                  // 备注(英寸)
    }
    // ... 更多井眼段
  ],
  "casingSections": [                   // 套管段
    {
      "topDepth_m": 0,                  // 套管顶深(米)
      "bottomDepth_m": 50,               // 套管底深(米)
      "od_mm": 508,                      // 套管外径(毫米)
      "note_in": "20\""                  // 备注(英寸)
    }
    // ... 更多套管段
  ],
  "pilotHoleGuideLine": {               // 导眼井段(可选)
    "topDepth_m": 4530,                 // 导眼井段顶深(米)
    "bottomDepth_m": 5150,              // 导眼井段底深(米)
    "diameter_mm": 215.9,               // 导眼井段直径(毫米)
    "display": true,                    // 是否显示
    "highlight": true,                  // 是否高亮
    "side_tracking": true               // 是否为侧钻井
  }
}
```

**设计要求:**

#### holeSections(井眼段)
- 井眼段必须按深度顺序排列,从浅到深
- 相邻井眼段的深度必须连续
- 井眼直径通常从上到下递减
- 最后一个井眼段的底深应等于 `totalDepth_m`

#### casingSections(套管段)
- 套管段必须按深度顺序排列,从浅到深
- 套管顶深通常为0(从井口开始)
- 当套管顶深不为0,会给顶深增加一个悬挂器(程序强制添加)
- 套管底部会增加一个套管头(程序强制添加)
- 套管外径通常从上到下递减
- 每层套管尺寸(外径)通常应当小于对应层段井筒尺寸(直径或内径)
- 套管底深应小于等于对应井眼段的底深

#### pilotHoleGuideLine(导眼井段)
- 仅在直改平井或侧钻井中使用
- `topDepth_m` 和 `bottomDepth_m` 定义导眼井段范围
- `diameter_mm` 应与对应井眼段直径一致
- `side_tracking: true` 表示侧钻井特征

## Notice
当前只发布了windows版
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "awesome-well-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "drilling, generator, mcp, petroleum, structure, well",
    "author": null,
    "author_email": "awesome-well-mcp team <1873475824@qq.com>",
    "download_url": "https://files.pythonhosted.org/packages/de/f1/f40c606701b372fd9bc21ed70a347c8b249b9ca8a2ce7331445c5f5691e1/awesome_well_mcp-1.0.2.tar.gz",
    "platform": null,
    "description": "# Awesome Well Structure MCP \u670d\u52a1\n\n\u8fd9\u662f\u4e00\u4e2a\u57fa\u4e8e MCP (Model Context Protocol) \u7684\u4e95\u8eab\u7ed3\u6784\u56fe\u751f\u6210\u670d\u52a1\uff0c\u53ef\u4ee5\u6839\u636e\u4e95\u6570\u636e\u81ea\u52a8\u751f\u6210\u4e95\u8eab\u7ed3\u6784\u56fe\u3002\n\n## \u793a\u4f8b\u56fe\u7247\n\n\u4e95\u8eab\u7ed3\u6784\u793a\u610f\u56fe\u7ed8\u5236\uff1a\n\n![well_structure_plot_sample](https://cqchen.top/PicGO/well_structure_plot_sample.png)\n\n\u4e95\u8eab\u7ed3\u6784\u6570\u636e\u89e3\u6790\uff1a\n\n![well_info_sample](https://cqchen.top/PicGO/well_info_sample.png)\n\n## \u529f\u80fd\u7279\u6027\n\n- \u652f\u6301\u56db\u79cd\u57fa\u672c\u4e95\u578b\uff1a\u76f4\u4e95\u3001\u6c34\u5e73\u4e95\u3001\u5b9a\u5411\u4e95\u3001\u76f4\u6539\u5e73\u4e95\uff0c\u652f\u6301\u4fa7\u94bb\u4e95\u8f6c\u6362\n- \u81ea\u52a8\u751f\u6210\u4e95\u8eab\u7ed3\u6784\u56fe\uff08PNG\u683c\u5f0f\uff09\u548c\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\n- \u751f\u6210\u76f8\u5173\u6570\u636e\u6587\u4ef6\uff08CSV\u683c\u5f0f\uff09\n- \u8fd4\u56de\u7b80\u5316\u7684\u56fe\u7247\u8def\u5f84\uff08\u5927\u5e45\u51cf\u5c11token\u6d88\u8017\uff0c\u4ec5\u652f\u6301path\u683c\u5f0f\uff09\n- \u81ea\u52a8\u6587\u4ef6\u5f52\u6863\u7ba1\u7406\uff08\u65f6\u95f4\u6233\u6587\u4ef6\u5939\uff09\n- \u5b8c\u6574\u7684\u9519\u8bef\u5904\u7406\u548c\u9a8c\u8bc1\n- \u652f\u6301\u56fe\u4f8b\u914d\u7f6e\u548c\u5bfc\u773c\u4e95\u8f85\u52a9\u7ebf\u663e\u793a\n\n## \u5b89\u88c5\u548c\u914d\u7f6e\n\n### \u65b9\u6cd5\u4e00\uff1a\u901a\u8fc7 PyPI \u5305\u5b89\u88c5\uff08\u63a8\u8350\uff09\n\n\u8fd9\u662f\u6700\u7b80\u5355\u5feb\u6377\u7684\u5b89\u88c5\u65b9\u5f0f\uff0c\u9002\u5408\u5927\u591a\u6570\u7528\u6237\u3002\n\n#### 1. \u5b89\u88c5 Python \u548c uv\n\n**\u5b89\u88c5 Python\uff1a**\n- \u8bbf\u95ee [Python\u5b98\u7f51](https://www.python.org/downloads/) \u4e0b\u8f7d\u5e76\u5b89\u88c5 Python 3.8 \u6216\u66f4\u9ad8\u7248\u672c\n- \u5b89\u88c5\u65f6\u786e\u4fdd\u52fe\u9009 \"Add Python to PATH\" \u9009\u9879\n\n**\u5b89\u88c5 uv\uff1a**\n```bash\n# Windows (PowerShell)\npowershell -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\n# macOS/Linux\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n#### 2. \u914d\u7f6e AI \u5ba2\u6237\u7aef\n\n\u5728 AI \u5ba2\u6237\u7aef\uff08\u4ee5 Cherry Studio \u4e3a\u4f8b\uff09\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"awesome-well-mcp\": {\n      \"name\": \"awesome-well-mcp\",\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\n        \"awesome-well-mcp\"\n      ]\n    }\n  }\n}\n```\n\n### \u65b9\u6cd5\u4e8c\uff1a\u4ece GitHub \u4e0b\u8f7d\u6e90\u7801\u5b89\u88c5\n\n\u9002\u5408\u9700\u8981\u81ea\u5b9a\u4e49\u4fee\u6539\u6216\u79bb\u7ebf\u4f7f\u7528\u7684\u7528\u6237\u3002\n\n#### 1. \u4e0b\u8f7d\u6e90\u7801\n\n\u4ece\u4ee5\u4e0b\u4ed3\u5e93\u4e0b\u8f7d\u6e90\u7801\uff08\u63a8\u8350\u7b2c\u4e00\u4e2a\uff09\uff1a\n\n- **\u4e3b\u8981\u4ed3\u5e93**\uff1a[https://github.com/elf004-star/elf004GH_vault_MCP001.git](https://github.com/elf004-star/elf004GH_vault_MCP001.git)\n- **\u5907\u7528\u4ed3\u5e93**\uff1a[https://github.com/elf004-star/elf004GH_vault_awesome_well_structure.git](https://github.com/elf004-star/elf004GH_vault_awesome_well_structure.git)\n\n\u4e3b\u8981\u6587\u4ef6\u5305\u62ec\uff1a\n- `WellStructure.exe` - \u4e95\u8eab\u7ed3\u6784\u751f\u6210\u5668\n- `main.py` - MCP \u670d\u52a1\u4e3b\u7a0b\u5e8f\n- `pyproject.toml` - \u9879\u76ee\u914d\u7f6e\u6587\u4ef6\n\n#### 2. \u5b89\u88c5 Python \u548c uv\n\n**\u5b89\u88c5 Python\uff1a**\n- \u8bbf\u95ee [Python\u5b98\u7f51](https://www.python.org/downloads/) \u4e0b\u8f7d\u5e76\u5b89\u88c5 Python 3.8 \u6216\u66f4\u9ad8\u7248\u672c\n- \u5b89\u88c5\u65f6\u786e\u4fdd\u52fe\u9009 \"Add Python to PATH\" \u9009\u9879\n\n**\u5b89\u88c5 uv\uff1a**\n```bash\n# Windows (PowerShell)\npowershell -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\n# macOS/Linux\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n#### 3. \u8bbe\u7f6e\u865a\u62df\u73af\u5883\n\n```bash\n# \u8fdb\u5165\u9879\u76ee\u76ee\u5f55\ncd /path/to/your/project\n\n# \u4f7f\u7528 uv \u521b\u5efa\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u4f9d\u8d56\nuv sync\n```\n\n#### 4. \u914d\u7f6e AI \u5ba2\u6237\u7aef\n\n\u5728 AI \u5ba2\u6237\u7aef\uff08\u4ee5 Cherry Studio \u4e3a\u4f8b\uff09\u4e2d\u6dfb\u52a0 MCP \u670d\u52a1\u5668\uff1a\n\n**\u901a\u8fc7\u754c\u9762\u914d\u7f6e\uff1a**\n1. \u6253\u5f00 Cherry Studio\n2. \u8fdb\u5165\u8bbe\u7f6e \u2192 MCP \u670d\u52a1\u5668\n3. \u6dfb\u52a0\u65b0\u7684 MCP \u670d\u52a1\u5668\n4. \u914d\u7f6e\u5982\u4e0b\uff1a\n   - **\u7c7b\u578b**\uff1a\u6807\u51c6\u8f93\u5165\u8f93\u51fa studio\n   - **\u547d\u4ee4**\uff1auv\n   - **\u53c2\u6570**\uff1a\n     ```\n     --directory\n     C:\\Files\\test_MCP\\awesome_well\uff08\u586b\u5199\u4f60\u7684\u6587\u4ef6\u5939\u5730\u5740\uff09\n     run\n     main.py\n     ```\n\n**\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u7f16\u8f91\uff1a**\n```json\n{\n  \"mcpServers\": {\n    \"awesome-well-mcp-local\": {\n      \"name\": \"awesome-well-mcp-local\",\n      \"type\": \"stdio\",\n      \"command\": \"uv\",\n      \"args\": [\n        \"--directory\",\n        \"C:\\\\_Git_Files\\\\test\",\n        \"run\",\n        \"main.py\"\n      ]\n    }\n  }\n}\n```\n\n**\u6ce8\u610f\uff1a** \u8bf7\u5c06 `C:\\\\_Git_Files\\\\test` \u66ff\u6362\u4e3a\u4f60\u7684\u5b9e\u9645\u9879\u76ee\u8def\u5f84\u3002\n\n## MCP\u5de5\u5177\u8c03\u7528\n\n\u5de5\u5177\u540d\u79f0\uff1a`generate_well_structure`\n\n\u53c2\u6570\uff1a\n- `well_data`: \u4e95\u6570\u636eJSON\u5bf9\u8c61\uff08\u5fc5\u9700\uff09\n\n\u8fd4\u56de\uff1a\n- \u6210\u529f\u65f6\u8fd4\u56de\u7b80\u5316\u7684\u56fe\u7247\u8def\u5f84\uff08<1200 token\uff0c\u4ec5\u652f\u6301path\u683c\u5f0f\uff09\u53ca\u751f\u6210\u62a5\u544a\u5b57\u5178\u3002\n- \u5931\u8d25\u65f6\u8fd4\u56de\u9519\u8bef\u4fe1\u606f\u5b57\u5178\u3002\n\n**\u8fd4\u56de\u683c\u5f0f**\uff1a\n```\n\u4e95\u8eab\u7ed3\u6784\u793a\u610f\u56fe\u4e3a\uff1a\n![PNG](\u6587\u4ef6\u5939\u7edd\u5bf9\u8def\u5f84+well_structure_plot.png)\n\n\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\u4e3a\uff1a\n![PNG](\u6587\u4ef6\u5939\u7edd\u5bf9\u8def\u5f84+well_info.png)\n```\n\n**\u8fd4\u56de\u6570\u636e\u7ed3\u6784\u548c\u670d\u52a1\u5b9e\u73b0\u7684\u5e95\u5c42\u903b\u8f91**\uff1a\n```json\n{\n  \"success\": true,\n  \"report_content\": \"\u8be6\u7ec6\u7684\u4e95\u8eab\u7ed3\u6784\u62a5\u544a\u5185\u5bb9\uff08Markdown\u683c\u5f0f\uff09\",\n  \"response\": \"\u4e95\u8eab\u7ed3\u6784\u793a\u610f\u56fe\u4e3a\uff1a\\n![PNG](\u7ed3\u6784\u56fe\u7edd\u5bf9\u8def\u5f84)\\n\\n\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\u4e3a\uff1a\\n![PNG](\u4fe1\u606f\u56fe\u7edd\u5bf9\u8def\u5f84)\",\n  \"notice\": \"\u6ce8\u610f\uff0c\u5148\u6574\u7406<report_content>\uff0c\u5fc5\u987b\u5c06\u4e0a\u9762\u8fd9\u9879<response>\u5305\u542b\u5728\u6574\u7406\u540e\u7684<report_content>\u4e2d\",\n  \"well_info\": {\n    \"well_name\": \"\u4e95\u540d\",\n    \"well_type\": \"\u4e95\u578b\", \n    \"total_depth\": \u6df1\u5ea6\n  },\n  \"archive_folder\": \"2025-10-03_11-37-29\",\n  \"structure_image_path\": \"\u4e95\u8eab\u7ed3\u6784\u56fe\u7edd\u5bf9\u8def\u5f84\",\n  \"info_image_path\": \"\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\u7edd\u5bf9\u8def\u5f84\"\n}\n```\n\n**Token\u4f18\u5316**\uff1a\n- \u8fd4\u56de\u5185\u5bb9\u5927\u5e45\u7b80\u5316\uff0c\u51cf\u5c11token\u6d88\u8017\n- \u6bcf\u6b21\u8fd4\u56de\u4e0d\u8d85\u8fc71200\u4e2atoken\n- \u79fb\u9664\u5197\u957f\u7684\u62a5\u544a\u5185\u5bb9\uff0c\u53ea\u4fdd\u7559\u6838\u5fc3\u4fe1\u606f\n- \u540c\u65f6\u751f\u6210\u4e95\u8eab\u7ed3\u6784\u56fe\u548c\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\n\n### \u652f\u6301\u7684\u4e95\u578b\n\n#### \u57fa\u672c\u4e95\u578b\u5b9a\u4e49\n\n1. **\u76f4\u4e95** (`straight well`)\n   - `deviationAngle_deg: 0`\n   - `kickoffPoint_m: null`\n   - `targetPointA_m: null`\n   - `targetPointB_m: null`\n   - `DistanceAB_m: null`\n\n2. **\u5b9a\u5411\u4e95** (`deviated well`)\n   - `deviationAngle_deg: 0 < \u89d2\u5ea6 < 90`\n   - `kickoffPoint_m: \u6709\u503c`\uff08\u9020\u659c\u70b9\u6df1\u5ea6\uff08\u53ef\u6839\u636e\u4f5c\u56fe\u60c5\u51b5\u8c03\u6574\uff09\uff09\n   - `targetPointA_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u4e95\u6df1\uff09\n   - `targetPointA_verticalDepth_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u7684\u5782\u6df1\uff09,\n   - `targetPointB_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9B\u4e95\u6df1\uff09\n   - `DistanceAB_m: \u6709\u503c`\uff08AB\u70b9\u95f4\u8ddd\u79bb\uff09\n   - `REAL_kickoffPoint_m: \u6709\u503c`\uff08\u5b9e\u9645\u9020\u659c\u70b9\uff09\n\n3. **\u6c34\u5e73\u4e95** (`horizontal well`)\n   - `deviationAngle_deg: 90`\n   - `kickoffPoint_m: \u6709\u503c`\uff08\u9020\u659c\u70b9\u6df1\u5ea6\uff08\u53ef\u6839\u636e\u4f5c\u56fe\u60c5\u51b5\u8c03\u6574\uff09\uff09\n   - `targetPointA_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u4e95\u6df1\uff09\n   - `targetPointA_verticalDepth_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u7684\u5782\u6df1\uff09,\n   - `targetPointB_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9B\u4e95\u6df1\uff09\n   - `DistanceAB_m: \u6709\u503c`\uff08AB\u70b9\u95f4\u8ddd\u79bb\uff09\n   - `REAL_kickoffPoint_m: \u6709\u503c`\uff08\u5b9e\u9645\u9020\u659c\u70b9\uff09\n\n4. **\u76f4\u6539\u5e73\u4e95** (`straight-to-horizontal well`)\n   - `deviationAngle_deg: 90`\n   - `kickoffPoint_m: \u6709\u503c`\uff08\u9020\u659c\u70b9\u6df1\u5ea6\uff08\u53ef\u6839\u636e\u4f5c\u56fe\u60c5\u51b5\u8c03\u6574\uff09\uff09\n   - `targetPointA_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u4e95\u6df1\uff09\n   - `targetPointA_verticalDepth_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9A\u7684\u5782\u6df1\uff09,\n   - `targetPointB_m: \u6709\u503c`\uff08\u76ee\u6807\u70b9B\u4e95\u6df1\uff09\n   - `DistanceAB_m: \u6709\u503c`\uff08AB\u70b9\u95f4\u8ddd\u79bb\uff09\n   - `REAL_kickoffPoint_m: \u6709\u503c`\uff08\u5b9e\u9645\u9020\u659c\u70b9\uff09\n   - \u9700\u8981\u914d\u7f6e `pilotHoleGuideLine` \u5e76\u8bbe\u7f6e `\"side_tracking\": true`\n\n#### \u4e95\u578b\u8f6c\u6362\u89c4\u5219\n\n\u5f53 `wellType` \u4e3a `horizontal well` \u6216 `deviated well` \u65f6\uff0c\u5982\u679c\u914d\u7f6e\u4e86 `pilotHoleGuideLine` \u5e76\u8bbe\u7f6e `\"side_tracking\": true`\uff0c\u5219\u53ef\u4ee5\u8868\u793a\uff1a\n\n- **\u76f4\u6539\u5e73\u4e95**\uff1a\u4ece\u76f4\u4e95\u6bb5\u5f00\u59cb\uff0c\u5728\u6307\u5b9a\u6df1\u5ea6\u5f00\u59cb\u9020\u659c\n- **\u4fa7\u94bb\u4e95**\uff1a\u4ece\u73b0\u6709\u4e95\u773c\u4fa7\u5411\u94bb\u51fa\u65b0\u7684\u4e95\u773c\n\n#### pilotHoleGuideLine \u914d\u7f6e\u793a\u4f8b\n\n```json\n\"pilotHoleGuideLine\": {\n  \"topDepth_m\": 4530,        // \u5bfc\u773c\u4e95\u6bb5\u8d77\u59cb\u6df1\u5ea6\n  \"bottomDepth_m\": 5150,      // \u5bfc\u773c\u4e95\u6bb5\u7ed3\u675f\u6df1\u5ea6\n  \"diameter_mm\": 215.9,       // \u5bfc\u773c\u4e95\u6bb5\u76f4\u5f84\n  \"display\": true,            // \u662f\u5426\u663e\u793a\u5bfc\u773c\u4e95\u6bb5\n  \"highlight\": true,          // \u662f\u5426\u9ad8\u4eae\u663e\u793a\n  \"side_tracking\": true       // \u662f\u5426\u4e3a\u4fa7\u94bb\u4e95\n}\n```\n\n#### legendConfig \u56fe\u4f8b\u914d\u7f6e\u793a\u4f8b\n\n```json\n\"legendConfig\": {\n  \"casingLegend\": true,        // \u662f\u5426\u663e\u793a\u5957\u7ba1\u56fe\u4f8b\n  \"holeLegend\": false,         // \u662f\u5426\u663e\u793a\u4e95\u773c\u56fe\u4f8b\n  \"kickoffLegend\": true,       // \u662f\u5426\u663e\u793a\u9020\u659c\u70b9\u56fe\u4f8b\n  \"targetPointsLegend\": true   // \u662f\u5426\u663e\u793a\u76ee\u6807\u70b9\u56fe\u4f8b\n}\n```\n\n## \u751f\u6210\u7684\u6587\u4ef6\n\n\u6bcf\u6b21\u8bf7\u6c42\u5b8c\u6210\u540e\uff0c\u6240\u6709\u751f\u6210\u7684\u6587\u4ef6\u4f1a\u81ea\u52a8\u79fb\u52a8\u5230\u4ee5\u65f6\u95f4\u6233\u547d\u540d\u7684\u6587\u4ef6\u5939\u4e2d\uff1a\n\n- `well_structure_plot.png`: \u4e95\u8eab\u7ed3\u6784\u56fe\n- `well_info.png`: \u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\n- `well_structure_report.md`: \u4e95\u8eab\u7ed3\u6784\u62a5\u544a\n- `stratigraphy.csv`: \u5730\u5c42\u6570\u636e\n- `casing_sections.csv`: \u5957\u7ba1\u6570\u636e\n- `hole_sections.csv`: \u4e95\u773c\u6570\u636e\n- `drilling_fluid_pressure.csv`: \u94bb\u4e95\u6db2\u538b\u529b\u6570\u636e\n- `deviationData.csv`: \u504f\u79fb\u6570\u636e\n- `location.csv`: \u4f4d\u7f6e\u6570\u636e\n- \u5bf9\u5e94\u7684 `*_raw.csv` \u539f\u59cb\u6570\u636e\u6587\u4ef6\n\n**\u6587\u4ef6\u5f52\u6863**\uff1a\n- \u6587\u4ef6\u5939\u547d\u540d\u683c\u5f0f\uff1a`YYYY-MM-DD_HH-MM-SS`\n- \u793a\u4f8b\uff1a`2025-10-03_11-37-29`\n- \u6bcf\u6b21\u8bf7\u6c42\u90fd\u4f1a\u521b\u5efa\u65b0\u7684\u5f52\u6863\u6587\u4ef6\u5939\n\n## \u6280\u672f\u5b9e\u73b0\n\n- \u4f7f\u7528 FastMCP \u6846\u67b6\n- \u652f\u6301\u5f02\u6b65\u5904\u7406\n- \u5b8c\u6574\u7684\u9519\u8bef\u5904\u7406\u673a\u5236\n- \u81ea\u52a8\u6587\u4ef6\u5907\u4efd\u548c\u6e05\u7406\n- 3\u79d2\u5ef6\u8fdf\u786e\u4fdd\u7a0b\u5e8f\u5b8c\u5168\u7ed3\u675f\n- Token\u4f18\u5316\uff0c\u51cf\u5c11API\u8c03\u7528\u6210\u672c\n\n## \u6a21\u677f\u6587\u4ef6\n\n\u9879\u76ee\u63d0\u4f9b\u4e86\u56db\u79cd\u4e95\u578b\u7684\u8bbe\u8ba1\u6a21\u677f\uff0c\u4f4d\u4e8e `templates/` \u76ee\u5f55\uff1a\n\n- `well_data\uff08\u5bfc\u773c\u4e95\uff09.json` - \u76f4\u4e95\u8bbe\u8ba1\u6a21\u677f\n- `well_data\uff08\u5bfc\u5411\u4e95\uff09 .json` - \u5b9a\u5411\u4e95\u8bbe\u8ba1\u6a21\u677f  \n- `well_data\uff08\u6c34\u5e73\u4e95\uff09.json` - \u6c34\u5e73\u4e95\u8bbe\u8ba1\u6a21\u677f\n- `well_data\uff08\u76f4\u6539\u5e73\uff09.json` - \u76f4\u6539\u5e73\u4e95\u8bbe\u8ba1\u6a21\u677f\n\n\u8fd9\u4e9b\u6a21\u677f\u6587\u4ef6\u5c55\u793a\u4e86\u4e0d\u540c\u4e95\u578b\u7684\u6807\u51c6\u6570\u636e\u7ed3\u6784\u548c\u53c2\u6570\u914d\u7f6e\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u8bbe\u8ba1\u65b0\u4e95\u7684\u53c2\u8003\u3002\u6bcf\u4e2a\u6a21\u677f\u90fd\u5305\u542b\u4e86\u5b8c\u6574\u7684\u4e95\u8eab\u7ed3\u6784\u6570\u636e\u3001\u5730\u5c42\u4fe1\u606f\u3001\u94bb\u4e95\u6db2\u538b\u529b\u6570\u636e\u548c\u56fe\u4f8b\u914d\u7f6e\u3002\n\n## \u6570\u636e\u7ed3\u6784\u8bbe\u8ba1\u8981\u6c42\n\n### stratigraphy\uff08\u5730\u5c42\u6570\u636e\uff09\n\n\u5730\u5c42\u6570\u636e\u5b9a\u4e49\u4e86\u4e95\u773c\u7a7f\u8fc7\u7684\u5404\u4e2a\u5730\u8d28\u5c42\u4f4d\u4fe1\u606f\uff1a\n\n```json\n\"stratigraphy\": [\n  {\n    \"name\": \"\u9042\u5b81\u7ec4\",           // \u5730\u5c42\u540d\u79f0\n    \"topDepth_m\": 0,           // \u5730\u5c42\u9876\u6df1\uff08\u7c73\uff09\n    \"bottomDepth_m\": 45        // \u5730\u5c42\u5e95\u6df1\uff08\u7c73\uff09\n  },\n  {\n    \"name\": \"\u6c99\u6eaa\u5e99\u7ec4\",\n    \"topDepth_m\": 45,\n    \"bottomDepth_m\": 1195\n  }\n  // ... \u66f4\u591a\u5730\u5c42\n]\n```\n\n**\u8bbe\u8ba1\u8981\u6c42\uff1a**\n- \u5730\u5c42\u5fc5\u987b\u6309\u6df1\u5ea6\u987a\u5e8f\u6392\u5217\uff0c\u4ece\u6d45\u5230\u6df1\n- \u76f8\u90bb\u5730\u5c42\u7684\u6df1\u5ea6\u5fc5\u987b\u8fde\u7eed\uff08\u4e0a\u4e00\u4e2a\u5730\u5c42\u7684\u5e95\u6df1 = \u4e0b\u4e00\u4e2a\u5730\u5c42\u7684\u9876\u6df1\uff09\n- \u6700\u540e\u4e00\u4e2a\u5730\u5c42\u7684\u5e95\u6df1\u5e94\u7b49\u4e8e\u6216\u63a5\u8fd1 `totalDepth_m`\n- \u5730\u5c42\u540d\u79f0\u4f7f\u7528\u6807\u51c6\u5730\u8d28\u672f\u8bed\n\n### drillingFluidAndPressure\uff08\u94bb\u4e95\u6db2\u538b\u529b\u6570\u636e\uff09\n\n\u94bb\u4e95\u6db2\u538b\u529b\u6570\u636e\u5b9a\u4e49\u4e86\u4e0d\u540c\u6df1\u5ea6\u6bb5\u7684\u538b\u529b\u53c2\u6570\uff1a\n\n```json\n\"drillingFluidAndPressure\": [\n  {\n    \"topDepth_m\": 0,                    // \u538b\u529b\u6bb5\u9876\u6df1\uff08\u7c73\uff09\n    \"bottomDepth_m\": 50,                 // \u538b\u529b\u6bb5\u5e95\u6df1\uff08\u7c73\uff09\n    \"porePressure_gcm3\": 1.00,          // \u5b54\u9699\u538b\u529b\uff08g/cm\u00b3\uff09\n    \"pressureWindow_gcm3\": {             // \u538b\u529b\u7a97\u53e3\n      \"min\": 1.05,                       // \u6700\u5c0f\u538b\u529b\uff08g/cm\u00b3\uff09\n      \"max\": 1.10                        // \u6700\u5927\u538b\u529b\uff08g/cm\u00b3\uff09\n    }\n  }\n  // ... \u66f4\u591a\u538b\u529b\u6bb5\n]\n```\n\n**\u8bbe\u8ba1\u8981\u6c42\uff1a**\n- \u538b\u529b\u6bb5\u5fc5\u987b\u6309\u6df1\u5ea6\u987a\u5e8f\u6392\u5217\uff0c\u4ece\u6d45\u5230\u6df1\n- \u76f8\u90bb\u538b\u529b\u6bb5\u7684\u6df1\u5ea6\u5fc5\u987b\u8fde\u7eed\n- \u5b54\u9699\u538b\u529b\u503c\u5e94\u5728\u5730\u8d28\u4e0a\u5408\u7406\n- \u538b\u529b\u7a97\u53e3\u7684\u6700\u5c0f\u503c\u5e94\u5927\u4e8e\u5b54\u9699\u538b\u529b\n- \u538b\u529b\u6bb5\u6570\u91cf\u901a\u5e38\u5c11\u4e8e\u5730\u5c42\u6570\u91cf\uff0c\u53ef\u4ee5\u5408\u5e76\u76f8\u4f3c\u538b\u529b\u7279\u5f81\u7684\u5730\u5c42\n\n### wellboreStructure\uff08\u4e95\u8eab\u7ed3\u6784\uff09\n\n\u4e95\u8eab\u7ed3\u6784\u5b9a\u4e49\u4e86\u4e95\u773c\u548c\u5957\u7ba1\u7684\u51e0\u4f55\u53c2\u6570\uff1a\n\n```json\n\"wellboreStructure\": {\n  \"holeSections\": [                     // \u4e95\u773c\u6bb5\n    {\n      \"topDepth_m\": 0,                  // \u4e95\u773c\u6bb5\u9876\u6df1\uff08\u7c73\uff09\n      \"bottomDepth_m\": 50,               // \u4e95\u773c\u6bb5\u5e95\u6df1\uff08\u7c73\uff09\n      \"diameter_mm\": 660.4,             // \u4e95\u773c\u76f4\u5f84\uff08\u6beb\u7c73\uff09\n      \"note_in\": \"26\\\"\"                  // \u5907\u6ce8\uff08\u82f1\u5bf8\uff09\n    }\n    // ... \u66f4\u591a\u4e95\u773c\u6bb5\n  ],\n  \"casingSections\": [                   // \u5957\u7ba1\u6bb5\n    {\n      \"topDepth_m\": 0,                  // \u5957\u7ba1\u9876\u6df1\uff08\u7c73\uff09\n      \"bottomDepth_m\": 50,               // \u5957\u7ba1\u5e95\u6df1\uff08\u7c73\uff09\n      \"od_mm\": 508,                      // \u5957\u7ba1\u5916\u5f84\uff08\u6beb\u7c73\uff09\n      \"note_in\": \"20\\\"\"                  // \u5907\u6ce8\uff08\u82f1\u5bf8\uff09\n    }\n    // ... \u66f4\u591a\u5957\u7ba1\u6bb5\n  ],\n  \"pilotHoleGuideLine\": {               // \u5bfc\u773c\u4e95\u6bb5\uff08\u53ef\u9009\uff09\n    \"topDepth_m\": 4530,                 // \u5bfc\u773c\u4e95\u6bb5\u9876\u6df1\uff08\u7c73\uff09\n    \"bottomDepth_m\": 5150,              // \u5bfc\u773c\u4e95\u6bb5\u5e95\u6df1\uff08\u7c73\uff09\n    \"diameter_mm\": 215.9,               // \u5bfc\u773c\u4e95\u6bb5\u76f4\u5f84\uff08\u6beb\u7c73\uff09\n    \"display\": true,                    // \u662f\u5426\u663e\u793a\n    \"highlight\": true,                  // \u662f\u5426\u9ad8\u4eae\n    \"side_tracking\": true               // \u662f\u5426\u4e3a\u4fa7\u94bb\u4e95\n  }\n}\n```\n\n**\u8bbe\u8ba1\u8981\u6c42\uff1a**\n\n#### holeSections\uff08\u4e95\u773c\u6bb5\uff09\n- \u4e95\u773c\u6bb5\u5fc5\u987b\u6309\u6df1\u5ea6\u987a\u5e8f\u6392\u5217\uff0c\u4ece\u6d45\u5230\u6df1\n- \u76f8\u90bb\u4e95\u773c\u6bb5\u7684\u6df1\u5ea6\u5fc5\u987b\u8fde\u7eed\n- \u4e95\u773c\u76f4\u5f84\u901a\u5e38\u4ece\u4e0a\u5230\u4e0b\u9012\u51cf\n- \u6700\u540e\u4e00\u4e2a\u4e95\u773c\u6bb5\u7684\u5e95\u6df1\u5e94\u7b49\u4e8e `totalDepth_m`\n\n#### casingSections\uff08\u5957\u7ba1\u6bb5\uff09\n- \u5957\u7ba1\u6bb5\u5fc5\u987b\u6309\u6df1\u5ea6\u987a\u5e8f\u6392\u5217\uff0c\u4ece\u6d45\u5230\u6df1\n- \u5957\u7ba1\u9876\u6df1\u901a\u5e38\u4e3a0\uff08\u4ece\u4e95\u53e3\u5f00\u59cb\uff09\n- \u5f53\u5957\u7ba1\u9876\u6df1\u4e0d\u4e3a0\uff0c\u4f1a\u7ed9\u9876\u6df1\u589e\u52a0\u4e00\u4e2a\u60ac\u6302\u5668\uff08\u7a0b\u5e8f\u5f3a\u5236\u6dfb\u52a0\uff09\n- \u5957\u7ba1\u5e95\u90e8\u4f1a\u589e\u52a0\u4e00\u4e2a\u5957\u7ba1\u5934\uff08\u7a0b\u5e8f\u5f3a\u5236\u6dfb\u52a0\uff09\n- \u5957\u7ba1\u5916\u5f84\u901a\u5e38\u4ece\u4e0a\u5230\u4e0b\u9012\u51cf\n- \u6bcf\u5c42\u5957\u7ba1\u5c3a\u5bf8\uff08\u5916\u5f84\uff09\u901a\u5e38\u5e94\u5f53\u5c0f\u4e8e\u5bf9\u5e94\u5c42\u6bb5\u4e95\u7b52\u5c3a\u5bf8\uff08\u76f4\u5f84\u6216\u5185\u5f84\uff09\n- \u5957\u7ba1\u5e95\u6df1\u5e94\u5c0f\u4e8e\u7b49\u4e8e\u5bf9\u5e94\u4e95\u773c\u6bb5\u7684\u5e95\u6df1\n\n#### pilotHoleGuideLine\uff08\u5bfc\u773c\u4e95\u6bb5\uff09\n- \u4ec5\u5728\u76f4\u6539\u5e73\u4e95\u6216\u4fa7\u94bb\u4e95\u4e2d\u4f7f\u7528\n- `topDepth_m` \u548c `bottomDepth_m` \u5b9a\u4e49\u5bfc\u773c\u4e95\u6bb5\u8303\u56f4\n- `diameter_mm` \u5e94\u4e0e\u5bf9\u5e94\u4e95\u773c\u6bb5\u76f4\u5f84\u4e00\u81f4\n- `side_tracking: true` \u8868\u793a\u4fa7\u94bb\u4e95\u7279\u5f81\n\n## Notice\n\u5f53\u524d\u53ea\u53d1\u5e03\u4e86windows\u7248",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u4e95\u8eab\u7ed3\u6784\u56fe\u751f\u6210\u5668 MCP \u670d\u52a1 - \u57fa\u4e8e\u4e95\u6570\u636e\u81ea\u52a8\u751f\u6210\u4e95\u8eab\u7ed3\u6784\u56fe",
    "version": "1.0.2",
    "project_urls": {
        "Documentation": "https://github.com/elf004-star/elf004GH_vault_awesome_well_structure#readme",
        "Homepage": "https://github.com/elf004-star/elf004GH_vault_awesome_well_structure",
        "Issues": "https://github.com/elf004-star/elf004GH_vault_awesome_well_structure/issues",
        "Repository": "https://github.com/elf004-star/elf004GH_vault_awesome_well_structure"
    },
    "split_keywords": [
        "drilling",
        " generator",
        " mcp",
        " petroleum",
        " structure",
        " well"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b1bcd5d0f35aace8ff18505b3a9e0234ecab5aafda4989fe70d3757530a31f6d",
                "md5": "36f2036e14dd8a4c91c9207f7d9bc323",
                "sha256": "846fab6ca05e193ae3b9e20749d26f22382891201169c1cf257b10500839d2f7"
            },
            "downloads": -1,
            "filename": "awesome_well_mcp-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "36f2036e14dd8a4c91c9207f7d9bc323",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 49839889,
            "upload_time": "2025-10-07T20:50:05",
            "upload_time_iso_8601": "2025-10-07T20:50:05.532939Z",
            "url": "https://files.pythonhosted.org/packages/b1/bc/d5d0f35aace8ff18505b3a9e0234ecab5aafda4989fe70d3757530a31f6d/awesome_well_mcp-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "def1f40c606701b372fd9bc21ed70a347c8b249b9ca8a2ce7331445c5f5691e1",
                "md5": "ee219b757df9f6aa95b47ca4ad448b0d",
                "sha256": "c1091cbb48fdfd8f272856230a3b957cd3e5ac54f0678c04725ee19ea36fa7d4"
            },
            "downloads": -1,
            "filename": "awesome_well_mcp-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ee219b757df9f6aa95b47ca4ad448b0d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 50442969,
            "upload_time": "2025-10-07T20:50:44",
            "upload_time_iso_8601": "2025-10-07T20:50:44.602001Z",
            "url": "https://files.pythonhosted.org/packages/de/f1/f40c606701b372fd9bc21ed70a347c8b249b9ca8a2ce7331445c5f5691e1/awesome_well_mcp-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-07 20:50:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "elf004-star",
    "github_project": "elf004GH_vault_awesome_well_structure#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "awesome-well-mcp"
}
        
Elapsed time: 1.75062s