@textwatermarking/mcp-server
v1.1.1
Published
A Unicode-based text watermarking MCP server that embeds invisible watermarks using variation selectors. Ready for use with Cursor AI and other MCP clients.
Maintainers
Readme
🔐 TextWatermarking MCP Server
A Unicode-based text watermarking MCP (Model Context Protocol) server that embeds invisible watermarks using variation selectors. Perfect for AI applications, content protection, and text authentication.
✨ Features
- 🔒 Invisible Watermarking: Embed secret text using Unicode variation selectors
- ⚡ Fast & Robust Algorithms: Multiple encoding strategies for different use cases
- 🤖 Cursor AI Integration: Ready-to-use MCP server for Cursor and other AI tools
- 🚀 Zero Configuration: Works out of the box with npx
- 🔑 Secure API: Token-based authentication
- 📱 Cross-Platform: Works on Windows, macOS, and Linux
🚀 Quick Start
📋 Prerequisites: You'll need an API token from TextWatermarking.com (free registration required).
Using with npx (Recommended)
# Run with command-line token
npx @textwatermarking/mcp-server --token YOUR_API_TOKEN
# Or with environment variable
USER_API_TOKEN="your_token_here" npx @textwatermarking/mcp-serverUsing with Cursor AI
Add to your mcp.json configuration:
{
"mcpServers": {
"watermark-mcp": {
"command": "npx",
"args": [
"@textwatermarking/mcp-server",
"--token",
"YOUR_API_TOKEN"
],
"description": "Text watermarking with invisible Unicode markers"
}
}
}📦 Installation
Global Installation
npm install -g @textwatermarking/mcp-serverLocal Installation
npm install @textwatermarking/mcp-server🔧 Configuration
Getting Your API Token
⚠️ Important: You need a valid API token to use this MCP server.
Step 1: Register for an Account
- Visit TextWatermarking.com
- Create a free account or sign in to your existing account
- Navigate to your account dashboard or API settings
Step 2: Generate Your API Token
- In your account dashboard, find the "API Keys" or "API Tokens" section
- Generate a new API token for MCP server usage
- Copy the token securely (you'll need it for configuration)
Step 3: Configure the Token
Once you have your API token, configure it using one of these methods:
Method 1: Command Line (Recommended for Cursor)
watermark-mcp --token YOUR_API_TOKENMethod 2: Environment Variable
export USER_API_TOKEN="YOUR_API_TOKEN"
watermark-mcpMethod 3: Cursor MCP Configuration
{
"mcpServers": {
"watermark-mcp": {
"command": "npx",
"args": ["@textwatermarking/mcp-server", "--token", "YOUR_API_TOKEN"]
}
}
}Available Options
watermark-mcp [options]
Options:
--token, -t <token> API token for authentication
--api-url, -u <url> API base URL (default: https://api.textwatermarking.com)
--help, -h Show help message🛠️ Available Tools
Fast Encoding/Decoding
fast_encode: Quick watermark embeddingfast_decode: Quick watermark extraction
Robust Encoding/Decoding
robust_encode: Advanced watermarking with stealth levelsrobust_decode: Extract robust watermarks
Example Usage
// Fast encoding
const result = await mcp.call("fast_encode", {
visible_text: "Hello World",
hidden_text: "Secret Message"
});
// Returns: "H󠅄󠅘󠅙󠅣󠄐󠅙󠅣󠄐󠅑󠄐󠅣󠅕󠅓󠅢󠅕󠅤"
// Fast decoding
const decoded = await mcp.call("fast_decode", {
input_text: "H󠅄󠅘󠅙󠅣󠄐󠅙󠅣󠄐󠅑󠄐󠅣󠅕󠅓󠅢󠅕󠅤"
});
// Returns: "Secret Message"🔍 How It Works
This MCP server uses Unicode Variation Selectors to embed invisible watermarks:
- Encoding: Hidden text is converted to Unicode variation selectors
- Embedding: Selectors are inserted between characters in the visible text
- Invisibility: The watermarked text appears identical to the original
- Decoding: Variation selectors are extracted and converted back to hidden text
📚 API Reference
fast_encode
Embeds hidden text using the fast algorithm.
Parameters:
visible_text(string): Text shown to usershidden_text(string): Secret text to embed
Returns: Watermarked text with invisible markers
fast_decode
Extracts hidden text using the fast algorithm.
Parameters:
input_text(string): Text that may contain watermarks
Returns: Extracted hidden text or empty if none found
robust_encode
Advanced watermarking with configurable stealth levels.
Parameters:
visible_text(string): Text shown to usershidden_text(string): Secret text to embedstealth_level(optional): "standard" | "high" | "maximum"distribution(optional): "even" | "random"
Returns: Watermarked text with robust encoding
robust_decode
Extracts robust watermarks.
Parameters:
input_text(string): Text with potential robust watermarks
Returns: Extracted hidden text
🚨 Troubleshooting
Common Issues
❌ "Authentication failed"
- Verify your API token is correct
- Check token hasn't expired
- Ensure token is properly set via
--tokenorUSER_API_TOKEN - If you don't have a token, register at TextWatermarking.com
❌ "Need help getting an API token?"
- Visit TextWatermarking.com to register
- Contact support at [email protected]
- Check the API documentation for detailed setup instructions
❌ "Command not found: watermark-mcp"
- Use
npx @textwatermarking/mcp-serverinstead - Or install globally:
npm install -g @textwatermarking/mcp-server
❌ "MCP server connection failed"
- Ensure you're using the correct MCP configuration
- Check that all dependencies are installed
- Verify Node.js version (requires ≥18.0.0)
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Links
- API Documentation: https://textwatermarking.com/docs
- Support: [email protected]
- Issues: GitHub Issues
⭐ Show Your Support
Give a ⭐️ if this project helped you!
Made with ❤️ by the TextWatermarking Team
