使用说明
钻井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客户端一起使用
克劳德桌面
- 将服务器配置添加到Claude Desktop配置文件中(Claude>设置>开发人员>编辑配置)
- 在克劳德桌面添加
"drilling": {
"command": "LOCAL_PATH_TO_YOUR_PYTHON",
"args": [
"LOCAL_PATH_TO/drilling_mcp_server.py"
]
},
确保使用正确的python,激活python env并运行 which python 获取本地python的完整路径
-
重新启动克劳德桌面
-
钻井工具和资源将在您的对话中提供
程序化使用
看 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上打开问题。
备注:这是一个用于分析钻井数据的实体模型服务器。确保您有适当的授权使用任何钻井数据集,并遵守数据使用协议。