钻井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:
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>设置>开发人员>编辑配置)
1. 在克劳德桌面添加
"drilling": { "command": "LOCAL_PATH_TO_YOUR_PYTHON", "args": [ "LOCAL_PATH_TO/drilling_mcp_server.py" ] },
确保使用正确的python,激活python env并运行 `which python` 获取本地python的完整路径
2. 重新启动克劳德桌面
1. 钻井工具和资源将在您的对话中提供
#### 程序化使用
看 `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](https://github.com/jlowin/fastmcp)
- 使用 [模型上下文协议](https://modelcontextprotocol.io/)
- 用于高效处理大型钻井数据集的数据预处理工具
## 支持
对于问题、疑问或贡献,请在GitHub上打开问题。
______________________________________________________________________
**备注**:这是一个用于分析钻井数据的实体模型服务器。确保您有适当的授权使用任何钻井数据集,并遵守数据使用协议。