semvec/pypi-packages huggingface dataset:
outlty-mcp 0.1.1
MCP server for routes as MCP tools
License: MIT
Requires Python: >=3.10

# outlty-mcp

A Python MCP server exposing your FastAPI API-key routes as MCP tools for use in Claude Code (and any MCP client).

## Tools
- list_user_apis
- get_user_api
- create_user_api
- make_request

## Prerequisites
- Python 3.10+
- Your backend running and accessible (default base URL: http://localhost:8000)
- An API key valid for the backend. The backend supports either:
  - `X-API-Key: <key>`
  - `Authorization: ApiKey <key>`

## Install
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```

## Run with uvx (recommended)
You can run this server without a local install using uv.

Local checkout:
```bash
uvx --from . outlty-mcp
```

From Git repository (example):
```bash
uvx --from git+https://github.com/your-org/outly-mcp-server.git outlty-mcp
```

You can also pin a version published to an index:
```bash
uvx outlty-mcp
```

## Run (standalone debug)
This server communicates via stdio when launched by an MCP client, but you can validate it imports:
```bash
python server.py
```

## Configuration (env)
- `OUTLY_MCP_API_BASE_URL` (default: `http://localhost:8000`)
- `OUTLY_MCP_API_KEY` (required)
- `OUTLY_MCP_AUTH_HEADER` (default: `X-API-Key`; set to `Authorization` to send `Authorization: ApiKey <key>`)

## Claude Code configuration (JSON)
Add this to your Claude configuration (e.g., `~/.config/anthropic/claude_desktop_config.json` or the workspace `.claued.json` depending on your setup). See Claude docs for exact location.

```json
{
  "mcpServers": {
    "outlty-mcp": {
      "command": "uvx",
      "args": ["outlty-mcp"],
      "env": {
        "OUTLY_MCP_API_BASE_URL": "http://localhost:8000",
        "OUTLY_MCP_API_KEY": "ak_xxx_your_secret",
        "OUTLY_MCP_AUTH_HEADER": "X-API-Key"
      }
    }
  }
}
```

If you prefer Authorization header:
```json
{
  "mcpServers": {
    "outlty-mcp": {
      "command": "uvx",
      "args": ["outlty-mcp"],
      "env": {
        "OUTLY_MCP_API_BASE_URL": "http://localhost:8000",
        "OUTLY_MCP_API_KEY": "ak_xxx_your_secret",
        "OUTLY_MCP_AUTH_HEADER": "Authorization"
      }
    }
  }
}
```

## Tool schemas
- list_user_apis: GET `/api-key/user-apis`
- get_user_api(id: string): GET `/api-key/user-apis/{id}`
- create_user_api(user_query: string): POST `/api-key/user-apis`
- make_request(url: string, input_data: object): POST `/api-key/user-apis/make-request`
textprep-lite 0.1.0
Lightweight text cleaning and anonymization for real-world NLP
License: MIT
Requires Python: >=3.9

# textprep-lite

**Lightweight text cleaning and anonymization for real-world NLP.**

`textprep-lite` is a tiny Python library that standardizes text normalization and anonymization in 1–2 function calls, designed for ML/NLP workflows.

## Installation

```bash
pip install textprep-lite
```

## Quickstart

```python
from textprep_lite import clean_text, anonymize_text, preprocess_text

raw = "Hey!!   <br> This is  John   \nContact: john.doe@example.com, +44 7700 900123"

# Basic cleaning
cleaned = clean_text(raw)
print(cleaned)
# Output: "hey!! this is john contact: john.doe@example.com, +44 7700 900123"

# Anonymization
anon = anonymize_text(raw)
print(anon)
# Output: "Hey!!   <br> This is  John   \nContact: [REDACTED], [REDACTED]"

# Full pipeline
processed = preprocess_text(raw)
print(processed)
# Output: "hey!! this is john contact: [redacted], [redacted]"
```

## Configuration

### `clean_text`

| Argument | Default | Description |
| :--- | :--- | :--- |
| `lowercase` | `True` | Convert text to lowercase. |
| `strip_html` | `True` | Remove HTML tags. |
| `normalize_whitespace` | `True` | Collapse multiple spaces/newlines. |
| `strip_accents` | `False` | Normalize Unicode accents to ASCII. |
| `remove_punct` | `False` | Remove punctuation. |
| `remove_digits` | `False` | Remove digits. |
| `keep_newlines` | `False` | Preserve newlines during whitespace normalization. |

### `anonymize_text`

| Argument | Default | Description |
| :--- | :--- | :--- |
| `mask_emails` | `True` | Mask email addresses. |
| `mask_phones` | `True` | Mask phone numbers. |
| `mask_urls` | `True` | Mask URLs. |
| `mask_ip` | `False` | Mask IPv4 addresses. |
| `replacement` | `"[REDACTED]"` | Replacement string for masked items. |

## Why `textprep-lite`?

Real-world text is messy. You repeatedly need to normalize whitespace, strip HTML, and mask PII. Instead of copying the same regex snippets into every notebook, `textprep-lite` offers a tested, reusable, and composable way to clean your text data.

## Testing & Quality

`textprep-lite` is designed for reliability.
- **Unit Tests**: Comprehensive coverage for all cleaning and anonymization logic.
- **Stress Tested**: Verified against edge cases (empty strings, emojis, mixed IP/phone formats) and synthetic logs.
- **Clean API**: Type-hinted and documented.

## Contributing

1. Clone the repo.
2. Install dependencies (e.g., `pip install -e .[dev]`).
3. Run tests:
    ```bash
    pytest
    ```