seismic-waveform-processing
Process seismic waveform data including reading MinISEED/SAC files, extracting metadata, and visualizing earthquake signals.
Best use case
seismic-waveform-processing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Process seismic waveform data including reading MinISEED/SAC files, extracting metadata, and visualizing earthquake signals.
Teams using seismic-waveform-processing should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/seismic-waveform-processing/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How seismic-waveform-processing Compares
| Feature / Agent | seismic-waveform-processing | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Process seismic waveform data including reading MinISEED/SAC files, extracting metadata, and visualizing earthquake signals.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Seismic Waveform Processing
## Usage
### 1. MCP Server Definition
```python
import asyncio
import json
from contextlib import AsyncExitStack
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
class SeismicClient:
"""SeisOBS-Tool MCP Client"""
def __init__(self, server_url: str, api_key: str):
self.server_url = server_url
self.api_key = api_key
self.session = None
async def connect(self):
"""Establish connection and initialize session"""
try:
self.transport = streamablehttp_client(
url=self.server_url,
headers={"SCP-HUB-API-KEY": self.api_key}
)
self._stack = AsyncExitStack()
await self._stack.__aenter__()
self.read, self.write, self.get_session_id = await self._stack.enter_async_context(self.transport)
self.session_ctx = ClientSession(self.read, self.write)
self.session = await self._stack.enter_async_context(self.session_ctx)
await self.session.initialize()
return True
except Exception as e:
print(f"✗ connect failure: {e}")
return False
async def disconnect(self):
"""Disconnect from server"""
try:
if hasattr(self, '_stack'):
await self._stack.aclose()
print("✓ already disconnect")
except Exception as e:
print(f"✗ disconnect error: {e}")
def parse_result(self, result):
"""Parse MCP tool call result"""
try:
if hasattr(result, 'content') and result.content:
content = result.content[0]
if hasattr(content, 'text'):
return json.loads(content.text)
return str(result)
except Exception as e:
return {"error": f"parse error: {e}", "raw": str(result)}
```
### 2. Seismic Waveform Processing Workflow
This workflow processes seismic waveform data from MinISEED or SAC files.
**Workflow Steps:**
1. **Read Waveform Data** - Load seismic data from file
2. **Extract Metadata** - Retrieve station and instrument information
3. **Visualize Waveform** - Generate time-series plot
**Implementation:**
```python
## Initialize client
client = SeismicClient(
"https://scp.intern-ai.org.cn/api/v1/mcp/33/SeisOBS-Tool",
"<your-api-key>"
)
if not await client.connect():
print("connection failed")
exit()
## Input: Path to seismic data file (URL or local path)
data_path = "https://example.com/seismic_data.mseed"
channel_idx = 0 # Channel index to process
## Step 1: Read waveform data
result = await client.session.call_tool(
"read_mseed_file",
arguments={
"data_path": data_path,
"channel_idx": channel_idx
}
)
waveform_data = client.parse_result(result)
print(f"Waveform data shape: {len(waveform_data['st'])} samples")
## Step 2: Extract metadata
result = await client.session.call_tool(
"read_mseed_file_stats",
arguments={
"data_path": data_path,
"channel_idx": channel_idx,
"outfile": None
}
)
metadata = client.parse_result(result)
print(f"Station: {metadata.get('station', 'N/A')}")
print(f"Sampling rate: {metadata.get('sampling_rate', 'N/A')} Hz")
## Step 3: Visualize waveform
result = await client.session.call_tool(
"plot_single_waveform",
arguments={
"data_path": data_path,
"channel_idx": channel_idx,
"outfile": None,
"starttime": None,
"endtime": None
}
)
plot_result = client.parse_result(result)
print(f"Waveform plot saved to: {plot_result['st']}")
await client.disconnect()
```
### Tool Descriptions
**SeisOBS-Tool Server:**
- `read_mseed_file`: Read waveform data from MinISEED file
- Args:
- `data_path` (str): Path or URL to MinISEED file
- `channel_idx` (int): Channel index to read
- Returns: Waveform time series data
- `read_mseed_file_stats`: Extract metadata from MinISEED file
- Args:
- `data_path` (str): Path or URL to MinISEED file
- `channel_idx` (int): Channel index
- `outfile` (str, optional): Output file path
- Returns: Station metadata and instrument information
- `plot_single_waveform`: Generate waveform plot
- Args:
- `data_path` (str): Path or URL to MinISEED file
- `channel_idx` (int): Channel index
- `outfile` (str, optional): Output image path
- `starttime` (str, optional): Plot start time
- `endtime` (str, optional): Plot end time
- Returns: Path to generated plot image
### Input/Output
**Input:**
- `data_path`: Path or URL to seismic data file (MinISEED or SAC format)
- `channel_idx`: Index of the channel to process (0-based)
- `starttime`/`endtime`: Optional time window for plotting
**Output:**
- Waveform data array
- Metadata including station, sampling rate, start time
- Visualization image (PNG format)
### Use Cases
- Earthquake signal analysis
- Seismic station quality control
- Waveform data preprocessing
- P-wave and S-wave identification
- Ground motion visualization
### Performance Notes
- **File formats**: MinISEED (.mseed), SAC (.sac)
- **Execution time**: <5 seconds for typical earthquake recordings
- **Data size**: Handles files up to 100 MB efficientlyRelated Skills
signal_processing
Signal Processing Analysis - Analyze signals: duty cycle, frequency range, electron wavelength, and measurement error analysis. Use this skill for signal processing tasks involving calculate duty cycle calculate frequency range electron wavelength calculate absolute error. Combines 4 tools from 3 SCP server(s).
experimental_data_processing
Experimental Data Processing - Process experimental data: absolute error, mean square, max value, scientific notation formatting. Use this skill for experimental physics tasks involving calculate absolute error calculate mean square calculate max value format scientific notation convert to scientific notation. Combines 5 tools from 1 SCP server(s).
wind-site-assessment
Assess wind energy potential and perform site analysis using atmospheric science calculations.
web_literature_mining
Scientific Literature Mining - Mine scientific literature: PubMed search, arXiv search, web search, and Tavily deep search. Use this skill for scientific informatics tasks involving pubmed search search literature search web tavily search. Combines 4 tools from 2 SCP server(s).
virus_genomics
Virus Genomics Analysis - Analyze virus genomics: NCBI virus dataset, annotation, taxonomy, and literature search. Use this skill for virology tasks involving get virus dataset report get virus annotation report get taxonomy search literature. Combines 4 tools from 2 SCP server(s).
virtual_screening
Virtual Screening Pipeline - Virtual screening: search PubChem by substructure, compute similarity, filter by drug-likeness, and predict binding affinity. Use this skill for drug discovery tasks involving search pubchem by smiles calculate smiles similarity calculate mol drug chemistry boltz binding affinity. Combines 4 tools from 3 SCP server(s).
variant_pathogenicity
Variant Pathogenicity Assessment - Assess variant pathogenicity: Ensembl VEP prediction, ClinVar lookup, variation details, and gene phenotype associations. Use this skill for clinical genetics tasks involving get vep hgvs clinvar search get variation get phenotype gene. Combines 4 tools from 2 SCP server(s).
variant-population-frequency
Query gnomAD for variant allele frequency across populations. Uses FAVOR to convert rsID→variant_id first, then queries gnomAD.
variant-pharmacogenomics
Query PharmGKB (clinPGx) for pharmacogenomic clinical annotations — how a variant affects drug response, dosing, and adverse reactions.
variant-gwas-associations
Query EBI GWAS Catalog for GWAS statistical associations (p-value, effect size, risk allele) between a variant and traits/diseases.
variant-genomic-location
Query dbSNP + NCBI Gene to get variant genomic position (chromosome, coordinates, ref/alt alleles, mutation type) and associated gene coordinates.
variant-functional-prediction
Query FAVOR API for variant functional prediction scores (CADD, SIFT, PolyPhen, REVEL, etc.) and gene annotation.