Local-first MCP server for petroleum data. Read LAS well logs from Claude, behind a default-deny path allowlist.
claude mcp add petromcp -- uvx petroleum-mcp{
"mcpServers": {
"petromcp": {
"command": "uvx",
"args": ["petroleum-mcp"]
}
}
}Resumen de MCP Servers
# 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](SECURITY.md). Read
[docs/DATA_PRIVACY.md](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](https://docs.astral.sh/uv/).
Add petromcp to your MCP host's config — no clone, no build:
```json
{
"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](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:
- [QC a well log](examples/walkthroughs/01-qc-a-well-log.md) — finds a planted
density gap, a washout, and a gamma ray spike
- [Compare two wells](examples/walkthroughs/02-compare-two-wells.md) — depth
overlap, a missing curve, and a unit mismatch that is invisible in one file
- [Unit conversion](examples/walkthroughs/03-unit-conversion.md)
- [Read a DLIS file](examples/walkthroughs/04-read-a-dlis-file.md) — logical
files, frames, and what happens when a channel name is ambiguous
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](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](SPEC_petromcp.md). The non-goals list there is real;
read it before filing feature requests.
Release history: [CHANGELOG.md](CHANGELOG.md). Security policy and threat
model: [SECURITY.md](SECURITY.md).
## License
MIT.
<!--
The official MCP registry verifies that whoever publishes
`io.github.ameyxd/petromcp` also controls the PyPI package, by looking for this
marker in the package's README. Removing it makes registry publishing fail with
a 400; `make release-check` guards it.
-->
mcp-name: io.github.ameyxd/petromcp
---
Built by [Amey Ambade](https://heyamey.com). I write about AI systems in
industries where the data can't leave the building, at
[writing.heyamey.com](https://writing.heyamey.com).
Lo que la gente pregunta sobre petromcp
¿Qué es ameyxd/petromcp?
+
ameyxd/petromcp es mcp servers para el ecosistema de Claude AI. Local-first MCP server for petroleum data. Read LAS well logs from Claude, behind a default-deny path allowlist. Tiene 2 estrellas en GitHub y se actualizó por última vez today.
¿Cómo se instala petromcp?
+
Puedes instalar petromcp clonando el repositorio (https://github.com/ameyxd/petromcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar ameyxd/petromcp?
+
ameyxd/petromcp aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.
¿Quién mantiene ameyxd/petromcp?
+
ameyxd/petromcp es mantenido por ameyxd. La última actividad registrada en GitHub es de today, con 0 issues abiertos.
¿Hay alternativas a petromcp?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega petromcp en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/ameyxd-petromcp)<a href="https://claudewave.com/repo/ameyxd-petromcp"><img src="https://claudewave.com/api/badge/ameyxd-petromcp" alt="Featured on ClaudeWave: ameyxd/petromcp" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!