关于 Petromcp
Petromcp 是用于读取 LAS 和 DLIS 石油测井数据的本地优先 MCP 服务,面向无法将文件上传到云服务的团队。它以路径白名单限制文件访问,并提供只读工具和有上限的曲线输出。
主要功能
- 01读取 LAS 和 DLIS 文件
- 02汇总曲线并采样数据
- 03比较测井数据
- 04转换支持的单位
- 05限制访问已允许的路径
- 06记录工具调用并限制输出
适用场景
- 01检查测井数据质量
- 02比较多口井的曲线和深度范围
- 03查看 DLIS 帧与通道
- 04转换石油测量单位
MCP 相关
向 MCP 客户端提供读取石油数据文件的只读工具和 QC 提示词。工具声明不访问网络,且文件访问仅限明确允许的目录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 |
详细介绍
petromcp
使用 Claude 读取测井数据,全程不让数据离开你的设备。
petromcp 是一个用于石油数据格式的 MCP 服务,专为文件依法不得上传到云服务的团队打造。没有遥测、没有回传、没有自动更新,并采用默认拒绝的路径允许列表:未明确授权的文件一律拒绝打开。目前支持 LAS;DLIS、SEG-Y 和泵卡即将支持。
如果你可以把数据上传到某处,可选方案比这多。如果不能,这正是为你准备的。
它能为你做什么
大模型宿主无法读取二进制或半结构化石油数据格式。petromcp 封装了成熟的开源解析器——目前使用 lasio 和 dlisio,segyio 已列入后续计划——并将其作为 MCP 工具提供,让你可以直接与数据对话,而不必把曲线值复制粘贴到聊天中。
这里的“本地优先”具体意味着什么
不只是表态。以下四点都可以在源代码中验证:
- 默认拒绝。 全新安装时无法读取任何内容。访问权限按目录授予,每个工具都会通过同一个验证器处理路径,并在检查前解析符号链接,因此允许目录中的链接无法指向目录之外。没有任何环境变量可以扩大允许列表,也没有任何工具可以在运行时更改它。
- 明确声明不联网。 petromcp 不会发起任何出站连接。全部五个工具都设置了
openWorldHint: false和readOnlyHint: true,宿主可以自行验证这一点,而不必只听信声明。 - 审计记录。 每次工具调用都会记录时间戳、工具名称和解析后的路径。
- 限制输出大小。 曲线读取有数量上限,并会报告
downsampled和original_count,因此不会让包含 20,000 个点的测井数据悄无声息地塞满上下文窗口。
威胁模型以及哪些情况不算漏洞,见 SECURITY.md。将其用于真实数据前,请先阅读 docs/DATA_PRIVACY.md——该文档具有权威性;如果代码与文档矛盾,问题就在代码。
安装
需要 Python 3.10+ 和 uv。
将 petromcp 添加到 MCP 宿主的配置中——无需克隆或构建:
{
"mcpServers": {
"petromcp": {
"command": "uvx",
"args": ["petroleum-mcp", "serve"]
}
}
}
在 macOS 上,该文件位于
~/Library/Application Support/Claude/claude_desktop_config.json。之后重启宿主。macOS 说明和故障排除:
docs/INSTALL.md。
如需参与 petromcp 开发,而不只是使用它:
git clone https://github.com/ameyxd/petromcp
cd petromcp
make setup
make install-claude
配置
默认情况下,petromcp 无法读取任何内容。指定允许访问的目录:
uvx petroleum-mcp config init
uvx petroleum-mcp config add-path ~/petroleum/wells
或者,如果你想先试用而不使用自己的数据,可以从代码检出版本生成合成样例,并将其加入允许列表:
make generate
uvx petroleum-mcp config add-path "$(pwd)/examples/sample_data"
编辑允许列表后,请重启 MCP 宿主——它只会在启动时读取一次。
使用
开启新对话,然后用自然语言提问:
What's wrong with this well log? /path/to/well.las
Compare these two wells: /path/to/A.las and /path/to/B.las
Convert 1500 psi to kPa.
Claude 会选择合适的工具,通过 petromcp 读取文件并给出回答。
实用示例,展示真实工具输出而非文字描述:
- 对测井数据进行质量控制 — 找出预先植入的密度缺口、井径扩大段和伽马射线尖峰
- 比较两口井 — 深度重叠、缺失曲线,以及单个文件中无法察觉的单位不匹配
- 单位换算
- 读取 DLIS 文件 — 逻辑文件、帧,以及通道名称不明确时的处理方式
这些文档中的每个值都由调用工具生成;如果内容发生偏差,CI 就会失败。
工具
| 工具 | 功能说明 |
|---|---|
read_las_file | LAS 文件的头部摘要 |
summarize_las_curves | 每条曲线的最小值、最大值、平均值、标准差、间隙百分比 |
read_las_curve | 一条曲线的深度和值,并设有采样上限 |
compare_well_logs | 共有曲线、深度重叠、单位一致性、标记 |
convert_units | ft<->m、psi<->kPa、psi<->bar、bbl<->m3、degF<->degC、mD<->m2 |
list_supported_units | 所有可转换的单位对及其物理量 |
read_dlis_file | DLIS 结构:逻辑文件、帧、索引类型 |
list_dlis_channels | 所有 DLIS 通道及其帧、单位和长度 |
read_dlis_channel | 一条 DLIS 通道的值,并设有采样上限 |
qc_a_well_log prompt | 引导 Claude 完成标准质检流程 |
所有工具均为只读,不会建立网络连接,并在其 MCP 注释中声明了这一点。完整参考: docs/TOOLS_REFERENCE.md。
DLIS 文件包含多次测井作业,每次作业又包含多个帧,因此通道名称仅在单个帧内唯一。read_dlis_channel 遇到有歧义的名称时会拒绝执行,并列出候选项,而不会猜测,因为这些候选项的值各不相同。
SEG-Y 和泵卡支持将在后续版本中推出。
状态
v0.7 提供了 LAS 和 DLIS 功能、比较工具、单位实用工具以及配置管理 CLI 子命令。其余格式列于 SPEC_petromcp.md 中。该文档中的非目标列表是认真的;提交功能请求前请先阅读。
发布历史:CHANGELOG.md。安全策略和威胁模型:SECURITY.md。
许可证
MIT。
mcp-name: io.github.ameyxd/petromcp
由 Amey Ambade 构建。我撰写有关 AI 系统的文章,聚焦数据无法离开企业环境的行业,见 writing.heyamey.com。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。