Skip to main content

petromcp

Read well logs with Claude without the data ever leaving your machine.

petromcp is an MCP server for petroleum data formats, built for teams whose files legally cannot be uploaded to a cloud service. No telemetry, no phone-home, no automatic updates, and a default-deny path allowlist that refuses to open anything you have not explicitly permitted. LAS today; DLIS, SEG-Y, and pump cards next.

If you can upload your data somewhere, you have more options than this. If you can't, this was written for you.

What this gives you

LLM hosts cannot read binary or semi-structured petroleum formats. petromcp wraps the established open-source parsers — lasio and dlisio today, with segyio queued for a later slice — and exposes them as MCP tools, so you can have a conversation with your data instead of copy-pasting curve values into chat.

What "local-first" means here, concretely

Not a posture. Four things you can verify in the source:

  • Default deny. A fresh install can read nothing. Access is granted per directory, and every tool routes through one validator that resolves symlinks before checking, so a link inside an allowed directory cannot reach outside it. There is no environment variable that widens the allowlist and no tool that changes it at runtime.
  • No network, declared. petromcp opens no outbound connections. All five tools ship openWorldHint: false and readOnlyHint: true, so your host can verify that claim rather than take it.
  • An audit trail. Every tool call is logged with a timestamp, the tool name, and the resolved path.
  • Bounded output. Curve reads are capped and report downsampled and original_count, so a 20,000-point log cannot silently dump into a context window.

The threat model, and what does not count as a vulnerability, are in SECURITY.md. Read docs/DATA_PRIVACY.md before pointing this at real data — it is authoritative, and if the code contradicts it the code is the bug.

Install

Requires Python 3.10+ and uv.

Add petromcp to your MCP host's config — no clone, no build:

{
  "mcpServers": {
    "petromcp": {
      "command": "uvx",
      "args": ["petroleum-mcp", "serve"]
    }
  }
}

On macOS that file is ~/Library/Application Support/Claude/claude_desktop_config.json. Restart the host afterwards. macOS notes and troubleshooting: docs/INSTALL.md.

To work on petromcp rather than just use it:

git clone https://github.com/ameyxd/petromcp
cd petromcp
make setup
make install-claude

Configure

By default petromcp can read nothing. Tell it which directories are fair game:

uvx petroleum-mcp config init
uvx petroleum-mcp config add-path ~/petroleum/wells

Or, if you want to try it without your own data, generate the synthetic sample from a checkout and allowlist that:

make generate
uvx petroleum-mcp config add-path "$(pwd)/examples/sample_data"

Restart your MCP host after editing the allowlist — it is read once at startup.

Use

Open a new conversation and ask, in plain language:

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 picks the right tool, reads the file through petromcp, and answers.

Worked examples, with real tool output rather than prose:

Every value in those documents is generated by calling the tools; CI fails if they drift.

Tools

Tool What it does
read_las_file Header-level summary of a LAS file
summarize_las_curves Per-curve min, max, mean, stddev, gap percentage
read_las_curve Depths and values for one curve, with sampling cap
compare_well_logs Common curves, depth overlap, unit consistency, flags
convert_units ft<->m, psi<->kPa, psi<->bar, bbl<->m3, degF<->degC, mD<->m2
list_supported_units Every convertible pair with its physical quantity
read_dlis_file DLIS structure: logical files, frames, index types
list_dlis_channels Every DLIS channel with its frame, units, and length
read_dlis_channel One DLIS channel's values, with a sampling cap
qc_a_well_log prompt Walks Claude through a standard QC pass

Every tool is read-only and opens no network connection, and declares that in its MCP annotations. Full reference: docs/TOOLS_REFERENCE.md.

DLIS files hold several logging runs, each with several frames, so a channel name is unique only within a frame. read_dlis_channel refuses an ambiguous name and lists the candidates rather than guessing, because the values differ.

SEG-Y and pump card support land in subsequent releases.

Status

v0.7 ships the LAS and DLIS slices, a comparison tool, a units utility, and config-management CLI subcommands. The remaining formats are tracked in SPEC_petromcp.md. The non-goals list there is real; read it before filing feature requests.

Release history: CHANGELOG.md. Security policy and threat model: SECURITY.md.

License

MIT.

mcp-name: io.github.ameyxd/petromcp


Built by Amey Ambade. I write about AI systems in industries where the data can't leave the building, at writing.heyamey.com.

Metadata

Release files for petroleum-mcp 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for petroleum-mcp 0.8.1
File Size Uploaded Provenance
petroleum_mcp-0.8.1.tar.gz 123.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for petroleum-mcp 0.8.1
File Interpreter ABI Platform
petroleum_mcp-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 162.9 kB

Release files / petroleum_mcp-0.8.1.tar.gz

Download URL petroleum_mcp-0.8.1.tar.gz
Size 123.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4cb682638ffa2aae11c3aa807442bbdcef4f24957479f46edae3eb7bbd8988cc
BLAKE2b-256 checksum
How to use checksums
b8fa72f646c4efafd3ed753ddb682a2d703d9043decf01d136db50ea480d1eab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / petroleum_mcp-0.8.1-py3-none-any.whl

Download URL petroleum_mcp-0.8.1-py3-none-any.whl
Size 39.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c5c04eabd193fba1d339d80c4a864a26e6ab690dd132dc7ec1724b74cc2ab7c
BLAKE2b-256 checksum
How to use checksums
377b1d047d6ae2cbb74427c43436bccf7894d647df286edcf10ea7d72ca6be69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Security for petroleum-mcp 0.8.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for petroleum_mcp-0.8.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page