Metadata-Version: 2.4
Name: data-mcp
Version: 0.1.0
Summary: Modular curl-powered library to query internet data.
Project-URL: Homepage, https://github.com/artbrnv/data-mcp
Project-URL: Repository, https://github.com/artbrnv/data-mcp
Project-URL: Issues, https://github.com/artbrnv/data-mcp/issues
Author: Bruno
License: MIT
License-File: LICENSE
Keywords: api,curl,data,http,scraping
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# data-mcp

A modular Python library for querying internet data through `curl`.

## Why this library

- Uses `curl` under the hood for reliable HTTP querying.
- Keeps querying logic modular through provider classes.
- Works as both an importable library and a CLI.

## Install

```bash
pip install data-mcp
```

For local development:

```bash
pip install -e ".[dev]"
```

## Quick start

```python
from data_curl import DataClient
from data_curl.providers.generic import GenericProvider

client = DataClient()
provider = GenericProvider(client)
result = provider.query("https://httpbin.org/get", params={"q": "hello"})
print(result.status_code)
print(result.json())
```

## CLI

```bash
data-mcp generic https://httpbin.org/get --param q=hello
```

## Core concepts

- `DataClient`: wraps curl execution and response parsing.
- `BaseProvider`: extension point for modular providers.
- `QueryResult`: standardized response object.

## Add your own provider

```python
from data_curl.providers.base import BaseProvider

class WeatherProvider(BaseProvider):
    name = "weather"

    def query_city(self, city: str):
        return self.client.get(
            "https://example.com/weather",
            params={"city": city},
        )
```

## Publish to PyPI

```bash
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
python -m twine upload dist/*
```
