钻井数据分析服务器

一个用于石油和天然气钻井数据分析的MCP服务器,提供工具、资源和提示模板,支持ROP、MSE、NPT计算和数据可视化。

  • by ridhadev
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ridhadev/drilling_mcp_server

使用说明

钻井MCP服务器

一 MCP(模型上下文协议) 石油和天然气钻井数据分析服务器。

这是一个模型服务器,旨在提供工具、资源和提示模板,用于分析CSV文件中的钻井数据,并支持渗透率(ROP)、机械比能(MSE)、非生产时间(NPT)计算和数据可视化。

特性

📊 资源

  • drilling://wells -列出所有可用井及其文件类型(时间/深度)
  • drilling://well/{well_name}/{file_type} -获取特定井数据的详细信息

🔧 工具

  • list_wells -列出所有带有元数据的井(从资源转换为工具访问)
  • inspect_headers -检查CSV文件的列标题
  • calculate_rop -使用过滤计算渗透率统计
  • calculate_mse -计算钻井效率的机械比能(MSE)
  • calculate_npt -计算非生产时间(NPT)分析
  • plot_data -使用重采样支持创建基于时间的水平图
  • filter_data -按时间或深度窗口过滤井数据

📝 提示模板

  • list_avialable_wells -生成提示以列出可用井
  • analyze_rop_performance -全面的ROP性能分析工作流程
  • analyze_drilling_efficiency -全钻井效率分析
  • compare_wells -比较多口井的性能
  • optimize_drilling_parameters -参数优化分析
  • analyze_custom_file_rop -从自定义CSV文件分析ROP

安装

先决条件

  • Python 3.10或更高版本
  • pip包管理器

再进行

pip install pandas numpy matplotlib mcp fastmcp nest-asyncio

或者使用 requirements.txt 文件:


Then install:

```bash
pip install -r requirements.txt

或者 setup_conda_env.sh

配置

1.数据目录设置

将钻井数据CSV文件放在数据目录中。文件应按以下模式命名:

  • {well_name} time.csv 基于时间的数据
  • {well_name} depth.csv 用于基于深度的数据

默认位置: data/drilling/ (相对于服务器脚本)

自定义位置:设置 DRILLING_DATA_DIR 环境变量:

# Linux/macOS
export DRILLING_DATA_DIR="/path/to/your/drilling/data"

# Windows
set DRILLING_DATA_DIR=C:\path\to\your\drilling\data

# Or in your shell profile (.bashrc, .zshrc, etc.)
export DRILLING_DATA_DIR="$HOME/drilling_data"

2.MCP服务器配置

将服务器添加到MCP客户端配置文件中(例如。, server_config.json):

{
    "mcpServers": {
        "drilling": {
            "command": "python",
            "args": ["drilling_mcp_server.py"],
            "env": {
                "DRILLING_DATA_DIR": "/path/to/your/data"
            }
        }
    }
}

备注:确保使用完整路径 drilling_mcp_server.py 或者确保它在你的路径中。

用法

启动服务器

python drilling_mcp_server.py

服务器在stdio传输上运行,并通过MCP协议进行通信。

与MCP客户端一起使用

克劳德桌面

  1. 将服务器配置添加到Claude Desktop配置文件中(Claude>设置>开发人员>编辑配置)
  2. 在克劳德桌面添加
"drilling": {
          "command": "LOCAL_PATH_TO_YOUR_PYTHON",
          "args": [
            "LOCAL_PATH_TO/drilling_mcp_server.py" 
          ]
      },

确保使用正确的python,激活python env并运行 which python 获取本地python的完整路径

  1. 重新启动克劳德桌面

  2. 钻井工具和资源将在您的对话中提供

程序化使用

看 mcp_chatbot.py 以获取如何以编程方式连接和使用服务器的示例。

跑

python mcp_chatbot.py

资源访问

使用访问资源 @ MCP客户端中的语法:

@drilling://wells
@drilling://well/Norway-NA-15_$47$_9-F-1/time

工具使用示例

计算ROP统计数据

calculate_rop(
    well_name="Norway-NA-15_$47$_9-F-1",
    file_type="time",
    start_time="2007-12-01T00:00:00Z",
    end_time="2007-12-02T00:00:00Z"
)

计算MSE

calculate_mse(
    well_name="Norway-NA-15_$47$_9-F-1",
    file_type="time",
    min_depth=100.0,
    max_depth=500.0
)

绘图数据

plot_data(
    well_name="Norway-NA-15_$47$_9-F-1",
    columns=["Rate of Penetration m/h", "Weight on Bit kkgf"],
    interval="30s",
    output_format="json"
)

过滤数据

filter_data(
    well_name="Norway-NA-15_$47$_9-F-1",
    file_type="time",
    start_time="2007-12-01T00:00:00Z",
    end_time="2007-12-02T00:00:00Z",
    output_file="filtered_data.csv"
)

自定义文件支持

所有工具都支持通过 custom_file 参数:

calculate_rop(
    well_name="custom_well",
    file_type="time",
    custom_file="/path/to/your/data.csv"
)

备注:默认情况下,自定义文件必须小于5MB(可通过配置 MAX_FILE_SIZE_MB).

许可证

此项目是MCP服务器开发学习练习的一部分。请检查存储库中的许可证信息。

致谢

  • 样本钻井数据从https://www.ux.uis.no/~atunkiel/file_list.html 其使用Equinor在知识共享(CC by-NC-SA 4.0)许可下发布的Volve数据集。
  • 内置于 FastMCP
  • 使用 模型上下文协议
  • 用于高效处理大型钻井数据集的数据预处理工具

支持

对于问题、疑问或贡献,请在GitHub上打开问题。


备注:这是一个用于分析钻井数据的实体模型服务器。确保您有适当的授权使用任何钻井数据集,并遵守数据使用协议。