Skip to main content
Glama
privacyflow-app

PrivacyFlow MCP Server

Official
README.md
<p align="center">
  <img src="https://raw.githubusercontent.com/privacyflow-app/privacyflow-agent-zero-channel/develop/banner.jpeg" alt="PrivacyFlow" width="600" />
</p>

# PrivacyFlow MCP Server

MCP server for [PrivacyFlow](https://privacyflow.app) — encrypted messaging via Signal, SimpleX, and Session.

## Setup

### Prerequisites

- Node.js >= 18
- A PrivacyFlow API key from the [PrivacyFlow dashboard](https://privacyflow.app)

### Installation

```bash
npm install -g privacyflow-mcp-server
```

Alternatively, use `npx` for on-demand execution without installing:

```bash
npx -y privacyflow-mcp-server
```

### Configuration

Set the following environment variables:

| Variable | Required | Default | Description |
|---|---|---|---|
| `PRIVACYFLOW_API_KEY` | Yes | — | Your PrivacyFlow API key |
| `PRIVACYFLOW_BASE_URL` | No | `https://api.privacyflow.app` | API base URL |
| `PRIVACYFLOW_API_KEY_HEADER` | No | `authorization` | Auth header: `authorization` or `x-api-key` |

### Usage

#### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "privacyflow": {
      "command": "npx",
      "args": ["-y", "privacyflow-mcp-server"],
      "env": {
        "PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
        "PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
      }
    }
  }
}
```

#### OpenCode (`.opencode.json`)

```json
{
  "mcp": {
    "privacyflow": {
      "type": "local",
      "command": "npx",
      "args": ["-y", "privacyflow-mcp-server"],
      "env": {
        "PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
        "PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
      },
      "enabled": true
    }
  }
}
```

#### Cursor

Add to your Cursor MCP config (`~/.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "privacyflow": {
      "command": "npx",
      "args": ["-y", "privacyflow-mcp-server"],
      "env": {
        "PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
        "PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
      }
    }
  }
}
```

## Tools

| Tool | Description |
|---|---|
| `privacyflow_check_health` | Check API health and version |
| `privacyflow_verify_api_key` | Verify API key validity and list authorized app IDs |
| `privacyflow_list_apps` | List authorized apps with names, active state, and configured messengers |
| `privacyflow_poll_messages` | Poll incoming messages from your app queue |
| `privacyflow_send_messages` | Send messages via PrivacyFlow |

## Resources

- `privacyflow://docs/api` — API endpoint documentation
- `privacyflow://docs/contact-formats` — Signal/Session/SimpleX contact ID formats

## Prompts

- `privacyflow_reply_to_message` — Reply to a polled message preserving routing fields
- `privacyflow_broadcast` — Broadcast a message to multiple contacts

## Development

```bash
npm install        # Install dependencies
npm run dev        # Run with tsx (development)
npm run build      # Build TypeScript
npm test           # Run tests
```

## Testing with MCP Inspector

```bash
npx @modelcontextprotocol/inspector node build/index.js
```

## License

MIT

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct action: health check, API key validation, app listing, polling incoming messages, and sending messages. Descriptions clearly differentiate the purpose of each tool, with no meaningful overlap.

Naming Consistency5/5

All tools follow a consistent pattern: the 'privacyflow' prefix followed by a verb_noun structure (check_health, verify_api_key, list_apps, poll_messages, send_messages). This uniform naming makes the toolset predictable and easy to navigate.

Tool Count5/5

With exactly 5 tools, the server is well-scoped for a messaging integration service. Each tool covers a necessary operation (health, auth, discovery, receive, send) without unnecessary bloat or redundancy.

Completeness4/5

The toolset covers the core lifecycle of a messaging service: authentication, app discovery, sending, and receiving messages. Minor gaps exist (e.g., no explicit message acknowledgment or per-app filtering on poll), but these are reasonable workarounds and do not cripple the primary workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues