Manage mailboxes, parser fields, documents, exports, and webhooks to automate document parsing at scale.
Also known as parseur/parseur-py, parseur-py
- Stars
- 8
- Tools
- —
- Downloads, 30 days
- 1,448
- Latest version
- 1.6.0
- Last commit
- Nov 11, 2026
- License
- MIT
What is Parseur MCP?
Parseur manages mailboxes, parser fields, documents, exports, and webhooks to automate document parsing at scale.
Summary generated from the project's README
About Parseur MCP server
Parseur provides a Python client and a remote MCP server to automate document parsing at scale. Developers can use the library to manage mailboxes, extract data from documents, and handle webhooks. The service is accessible via a command line interface or as a standard Python library, requiring a Parseur API key for authentication. Users can configure their credentials through a local configuration file or by passing keys directly to specific method calls.
The tool allows for extensive document lifecycle management, including uploading files, reprocessing documents, or deleting them. It supports advanced searching and filtering for both mailboxes and documents, enabling users to sort by status, date, or specific metadata. For real-time integration, the client can create custom webhooks or use a listener feature to monitor events like document processing. This makes it suitable for building automated workflows that react instantly to incoming parsed data.
What you can do with it
- 1Automate document uploadsUpload a local PDF file to a specific mailbox and wait for the parsing process to complete.
- 2Manage document lifecyclesPerform administrative tasks on existing documents such as copying, splitting, or deleting them.
Written from the project's README. Every use case is checked against a quote from it.
How to install Parseur MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Parseur MCP in Claude Code
$ claude mcp add --env 'PARSEUR_API_KEY=<YOUR_PARSEUR_API_KEY>' parseur-py -- uvx parseur-pyInstall Parseur MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"parseur-py": {
"command": "uvx",
"args": [
"parseur-py"
],
"env": {
"PARSEUR_API_KEY": "<YOUR_PARSEUR_API_KEY>"
}
}
}
}Install Parseur MCP in VS Code
.vscode/mcp.json
{
"servers": {
"parseur-py": {
"type": "stdio",
"command": "uvx",
"args": [
"parseur-py"
],
"env": {
"PARSEUR_API_KEY": "<YOUR_PARSEUR_API_KEY>"
}
}
}
}Install Parseur MCP in VS Code CLI
$ code --add-mcp '{"name":"parseur-py","type":"stdio","command":"uvx","args":["parseur-py"],"env":{"PARSEUR_API_KEY":"<YOUR_PARSEUR_API_KEY>"}}'Install Parseur MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"parseur-py": {
"command": "uvx",
"args": [
"parseur-py"
],
"env": {
"PARSEUR_API_KEY": "<YOUR_PARSEUR_API_KEY>"
}
}
}
}Install Parseur MCP in Codex
$ codex mcp add parseur-py --env 'PARSEUR_API_KEY=<YOUR_PARSEUR_API_KEY>' -- uvx parseur-pyInstall Parseur MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.parseur-py] command = "uvx" args = ["parseur-py"] [mcp_servers.parseur-py.env] PARSEUR_API_KEY = "<YOUR_PARSEUR_API_KEY>"
Install Parseur MCP in Gemini CLI
$ gemini mcp add -s user -e 'PARSEUR_API_KEY=<YOUR_PARSEUR_API_KEY>' parseur-py uvx -- parseur-pyInstall Parseur MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"parseur-py": {
"command": "uvx",
"args": [
"parseur-py"
],
"env": {
"PARSEUR_API_KEY": "<YOUR_PARSEUR_API_KEY>"
}
}
}
}Configuration
PARSEUR_API_KEYRequiredSecretYour Parseur API key (from https://app.parseur.com/account/api).
PARSEUR_API_BASEOverride the Parseur API base URL (defaults to https://api.parseur.com).
| Name | Description | |
|---|---|---|
| PARSEUR_API_KEY | Your Parseur API key (from https://app.parseur.com/account/api). | RequiredSecret |
| PARSEUR_API_BASE | Override the Parseur API base URL (defaults to https://api.parseur.com). |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHub🤖🧙parseur-py
parseur-py is a modern Python client for the Parseur API.
It lets you manage mailboxes, documents, uploads, and webhooks programmatically or from the command line.
Built to help you automate document parsing at scale, parseur-py makes integrating with Parseur fast, easy, and Pythonic.
✨ Features
✅ List, search, and sort mailboxes
✅ Get mailbox details and schema
✅ List, search, filter, and sort documents
✅ Upload documents by file or email content
✅ Reprocess, skip, copy, or delete documents
✅ Manage custom webhooks for real-time events
✅ Listen to events in real time with a temporary webhook & tunnel
✅ Fully-featured Command Line Interface (CLI)
⚠️ Disclaimer about Localtunnel
When using the parseur listen command (with event listener support), your data is forwarded through localtunnel servers.
These servers are not affiliated with Parseur and are not covered by Parseur’s Privacy Policy or Data Processing Agreement.
Data transmitted through localtunnel is not encrypted end-to-end.
➡️ Use this feature at your own risk.
For production-grade setups, we strongly recommend configuring your own secure webhook endpoint instead of relying on localtunnel.
🚀 Quick Start
Install the package
pip install parseur-py
With event listener support (Flask + localtunnel)
pip install "parseur-py[listener]"
Install the package from source
pip install -e .
Build documentation
pip install -r requirements-doc.txt
cd docs
make html
Run the tests
Unit tests run fully offline:
pytest
Integration tests hit the real Parseur API. They create and delete real
resources, so they're skipped unless credentials are provided via the
environment (never committed or stored in ~/.parseur.conf):
PARSEUR_API_BASE=https://api.parseur.com \
PARSEUR_API_KEY=sk_your_key \
pytest tests/integration -v
Initialize your configuration
Store your Parseur API credentials securely:
parseur init --api-key YOUR_PARSEUR_API_KEY
Your config is saved (by default) in:
~/.parseur.conf
Example usage
List all your mailboxes:
parseur list-mailboxes
List documents in a mailbox:
parseur list-documents 12345
Upload a file to a mailbox (add --wait to block until it is parsed, with a live progress bar):
parseur upload-file 12345 ./path/to/document.pdf
parseur upload-file 12345 ./path/to/document.pdf --wait
Download a mailbox's results as a file (stdout by default, or --output):
parseur download-mailbox 12345 --format csv -o results.csv # whole mailbox
parseur list-parser-fields 12345 # find a table field id
parseur download-field 12345 PF951 --format xlsx -o lines.xlsx # a table field
Register a custom webhook:
parseur create-webhook --event document.processed --target-url https://yourserver.com/webhook --mailbox-id 12345
Listen to events in real time (requires [listener]):
parseur listen --event document.processed --mailbox-id 12345
With forwarding:
parseur listen --event document.processed --mailbox-id 12345 --redirect-url http://localhost --redirect-port 8000
📜 CLI Commands
Run:
parseur --help
for a full list of available commands.
Highlights
- init: Set your API token and (optional) base URL
- list-mailboxes: Search and sort mailboxes
- get-mailbox: Fetch a mailbox by ID
- get-mailbox-schema: Get the mailbox parsing schema
- list-parser-fields: List the fields extracted by a mailbox
- download-mailbox / download-field / download-export: Download results as a file (csv/json/xlsx)
- list-export-configs: List a mailbox's custom export configurations
- list-documents: Advanced document search, filtering, sorting
- get-document / get-document-logs: Fetch document details and processing logs
- reprocess-document / skip-document / copy-document / split-document / reverse-split-document / delete-document: Document lifecycle operations
- upload-file / upload-text: Upload new documents (add
--waitfor synchronous parsing) - upload-folder: Upload every file matching a glob path
- create-webhook / get-webhook / list-webhooks / delete-webhook: Create, get, list, and delete custom webhook integrations.
- enable-webhook / pause-webhook: Activate or pause a webhook for a specific mailbox.
- listen: Create a temporary webhook and listen to events in real time (with optional redirect & silent mode)
🔎 Advanced Search & Filtering
Mailbox listing supports:
- Search by name or email prefix
- Sort by:
- name
- document_count
- template_count
- PARSEDOK_count (processed)
- PARSEDKO_count (failed)
- QUOTAEXC_count (quota exceeded)
- EXPORTKO_count (export failed)
Document listing supports:
- Search in:
- document ID
- document name
- template name
- email addresses (from, to, cc, bcc)
- document metadata header
- Sort by:
- name
- created (received date)
- processed date
- status
- Filter by:
- received_after / received_before dates
- Include parsed result in response
⚡ Webhooks Support
Easily register custom webhooks for events like:
document.processeddocument.processed.flatteneddocument.template_neededdocument.export_failedtable.processedtable.processed.flattened
Your webhook endpoint will receive POST notifications with Parseur payloads, enabling real-time integrations with your systems.
🤖 MCP Server (AI assistants)
Parseur hosts an MCP server at https://api.parseur.com/mcp. Add this URL to any MCP-compatible AI assistant (Claude, Codex, Cursor, …) to drive Parseur from it. No local install is needed.
🛠️ Configuration
Your API token and settings are stored in a simple INI file:
[parseur]
api_token = YOUR_API_KEY
base_url = https://api.parseur.com
You can customize the path by setting `--config-path` in your calls if needed.
🐍 Python Client Usage
Beyond the CLI, parseur-py is a standard Python library. Example:
import parseur
parseur.api_key = "YOUR_API_KEY"
for mailbox in parseur.Mailbox.list():
print(mailbox.name)
Per-call API key override
Every method accepts an optional api_key argument that takes priority over
the global parseur.api_key for that single call — useful for multi-account
or multi-tenant code:
parseur.Mailbox.list(api_key="sk_account_a")
parseur.Document.upload_file(123, "invoice.pdf", api_key="sk_account_b")
📖 Documentation
- Parseur Official API Docs
- This package mirrors Parseur’s REST API, adding pagination handling, schema support, and convenient CLI commands.
💼 License
MIT License
🤝 Contributing
We welcome contributions! Please:
- Fork the repo
- Create your feature branch (
git checkout -b feature/foo) - Commit your changes (
git commit -am 'Add foo') - Push to the branch (
git push origin feature/foo) - Open a pull request
✨ Credits
Developed with ❤️ by the Parseur team.
Parseur is the easiest way to automatically extract data from emails and documents. Stop copy-pasting data and automate your workflows!
Parseur MCP questions
How do I add Parseur MCP to Claude Code?
Run claude mcp add --env 'PARSEUR_API_KEY=<YOUR_PARSEUR_API_KEY>' parseur-py -- uvx parseur-py in your terminal. Add --scope user to make it available in every project.
How do I add Parseur MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Can I listen to Parseur events in real time?
Yes, you can use the 'listen' command to create a temporary webhook and listen to events in real time using a tunnel.
How do I initialize my Parseur configuration?
You can securely store your API credentials using the command 'parseur init --api-key YOUR_PARSEUR_API_KEY'.