# Awesome Well Structure MCP 服务
这是一个基于 MCP (Model Context Protocol) 的井身结构图生成服务,可以根据井数据自动生成井身结构图。
## 示例图片
井身结构示意图绘制:

井身结构数据解析:

## 功能特性
- 支持四种基本井型:直井、水平井、定向井、直改平井,支持侧钻井转换
- 自动生成井身结构图(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格式)及生成报告字典。
- 失败时返回错误信息字典。
**返回格式**:
```
井身结构示意图为:

井身结构信息图为:

```
**返回数据结构和服务实现的底层逻辑**:
```json
{
"success": true,
"report_content": "详细的井身结构报告内容(Markdown格式)",
"response": "井身结构示意图为:\n\n\n井身结构信息图为:\n",
"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\n\n\u4e95\u8eab\u7ed3\u6784\u6570\u636e\u89e3\u6790\uff1a\n\n\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\n\n\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\u4e3a\uff1a\n\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\\n\\n\u4e95\u8eab\u7ed3\u6784\u4fe1\u606f\u56fe\u4e3a\uff1a\\n\",\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"
}