๐ SignNow MCP Server
The SignNow MCP Server is a Model Context Protocol (MCP) server that provides AI agents with secure and structured access to SignNow eSignature workflows, including templates, embedded signing, invites, status tracking, and document downloads, via STDIO or Streamable HTTP.
๐ Quick Start
Prerequisites
- A SignNow account. You can create a free developer account.
- SignNow Credentials: You'll need your account email, password, and the application Basic Authorization Token. Refer to Getting started.
- An active SignNow API application.
- Python 3.11+ installed on your system (check with
python3 --version).
- UVX installed (check with
uvx --version). It's recommended for the quickest setup.
- Configured environment variables.
- If your client supports Streamable HTTP, you can use the pre - deployed server URL
https://mcp-server.signnow.com/mcp instead of running it locally.
Quick run (uvx)
If you use uv, you can run the server without installing the package:
uvx --from signnow-mcp-server sn-mcp serve
1. Setup Environment Variables
2. Install and Run
Option A: Install from PyPI (Recommended)
pip install signnow-mcp-server
sn-mcp serve
Option B: Install from Source (Development)
git clone https://github.com/signnow/sn-mcp-server.git
cd sn-mcp-server
cp .env.example .env
pip install -e .
sn-mcp serve
STDIO is ideal for desktop clients and local testing.
Local/Remote (HTTP)
sn-mcp http
sn-mcp http --host 0.0.0.0 --port 8000
sn-mcp http --reload
By default, the Streamable HTTP MCP endpoint is served under /mcp. Example URL:
http://localhost:8000/mcp
Docker
docker build -t sn-mcp-server .
docker run --env-file .env -p 8000:8000 sn-mcp-server sn-mcp http --host 0.0.0.0 --port 8000
STDIO inside containers is unreliable with many clients. Prefer HTTP when using Docker.
Docker Compose
docker-compose up sn-mcp-server
docker-compose up
โจ Features
Templates & groups
- Browse all templates and template groups.
- Create documents or groups from templates (one - shot flows included).
Invites & embedded UX
- Email invites and ordered recipients.
- Embedded signing/sending/editor links for in - app experiences.
Status & retrieval
- Check invite status and step details.
- Download final documents (single or merged).
- Read normalized document/group structure for programmatic decisions.
Transports
- STDIO (best for local clients).
- Streamable HTTP (best for Docker/remote).
๐ Documentation
Configuration
Copy .env.example โ .env and fill in values. All settings are validated via pydantic - settings at startup.
Authentication options
1) Username / Password (recommended for desktop dev flows)
SIGNNOW_USER_EMAIL=<email>
SIGNNOW_PASSWORD=<password>
SIGNNOW_API_BASIC_TOKEN=<base64 basic token>
2) OAuth 2.0 (for hosted/advanced scenarios)
SIGNNOW_CLIENT_ID=<client_id>
SIGNNOW_CLIENT_SECRET=<client_secret>
# + OAuth server & RSA settings below
When running via some desktop clients, only user/password may be supported.
SignNow & OAuth settings
# SignNow endpoints (defaults shown)
SIGNNOW_APP_BASE=https://app.signnow.com
SIGNNOW_API_BASE=https://api.signnow.com
# Optional direct API token (not required for normal use)
SIGNNOW_TOKEN=<access_token>
# OAuth server (if you enable OAuth mode)
OAUTH_ISSUER=<your_issuer_url>
ACCESS_TTL=3600
REFRESH_TTL=2592000
ALLOWED_REDIRECTS=<comma,separated,uris>
# RSA keys for OAuth (critical in production)
OAUTH_RSA_PRIVATE_PEM=<PEM content>
OAUTH_JWK_KID=<key id>
Production key management
If OAUTH_RSA_PRIVATE_PEM is missing in production, a new RSA key will be generated on each restart, invalidating all existing tokens. Always provide a persistent private key via secrets management in prod.
Client setup
VS Code โ GitHub Copilot (Agent Mode) / Cursor
Create .vscode/mcp.json / .cursor/mcp.json in your workspace:
STDIO (local):
{
"servers": {
"signnow": {
"command": "sn-mcp",
"args": ["serve"],
"env": {
"SIGNNOW_USER_EMAIL": "${env:SIGNNOW_USER_EMAIL}",
"SIGNNOW_PASSWORD": "${env:SIGNNOW_PASSWORD}",
"SIGNNOW_API_BASIC_TOKEN": "${env:SIGNNOW_API_BASIC_TOKEN}"
}
}
}
}
STDIO (uvx โ no local install):
{
"servers": {
"signnow": {
"command": "uvx",
"args": ["--from", "signnow-mcp-server", "sn-mcp", "serve"],
"env": {
"SIGNNOW_USER_EMAIL": "${env:SIGNNOW_USER_EMAIL}",
"SIGNNOW_PASSWORD": "${env:SIGNNOW_PASSWORD}",
"SIGNNOW_API_BASIC_TOKEN": "${env:SIGNNOW_API_BASIC_TOKEN}"
}
}
}
}
HTTP (remote or Docker):
{
"servers": {
"signnow": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
Then open Chat โ Agent mode, enable the signnow tools, and use them in prompts.
Note: The same configuration applies in Cursor โ add it under MCP settings (STDIO or HTTP). For STDIO, you can also use uvx as shown above.
Claude Desktop
Use Desktop Extensions or the manual MCP config (Developer โ Edit config).
Steps:
- Open Claude Desktop โ Developer โ Edit config.
- Add a new server entry under
mcpServers.
- Save and restart Claude Desktop.
Examples:
STDIO (local install):
{
"mcpServers": {
"signnow": {
"command": "sn-mcp",
"args": ["serve"],
"env": {
"SIGNNOW_USER_EMAIL": "${env:SIGNNOW_USER_EMAIL}",
"SIGNNOW_PASSWORD": "${env:SIGNNOW_PASSWORD}",
"SIGNNOW_API_BASIC_TOKEN": "${env:SIGNNOW_API_BASIC_TOKEN}"
}
}
}
}
STDIO (uvx โ no local install):
{
"mcpServers": {
"signnow": {
"command": "uvx",
"args": ["--from", "signnow-mcp-server", "sn-mcp", "serve"],
"env": {
"SIGNNOW_USER_EMAIL": "${env:SIGNNOW_USER_EMAIL}",
"SIGNNOW_PASSWORD": "${env:SIGNNOW_PASSWORD}",
"SIGNNOW_API_BASIC_TOKEN": "${env:SIGNNOW_API_BASIC_TOKEN}"
}
}
}
}
HTTP (remote or Docker):
{
"mcpServers": {
"signnow": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
Then enable the server in Claudeโs chat and start using the tools.
Glama (hosted MCP)
Deploy and run this server on Glama with minimal setup:
Steps:
- Open the server page on Glama: sn-mcp-server on Glama.
- Click the red "Deploy Server" button.
- In environment variables, provide:
SIGNNOW_USER_EMAIL
SIGNNOW_PASSWORD
SIGNNOW_API_BASIC_TOKEN
- (other variables can be left as defaults)
- Create an access token in Glama and copy the endpoint URL. It will look like:
https://glama.ai/endpoints/{someId}/mcp?token={glama-mcp-token}
Use this HTTP MCP URL in any client that supports HTTP transport (e.g., VS Code/Cursor JSON config or Claude Desktop HTTP example above).
MCP Inspector (testing)
Great for exploring tools & schemas visually.
npx @modelcontextprotocol/inspector
sn-mcp serve
You can list tools, call them with JSON args, and inspect responses.
๐ป Usage Examples
Integrating with Popular AI Agent Frameworks
The examples/ directory contains working examples of how to integrate the SignNow MCP Server with popular AI agent frameworks:
- LangChain - Integration with LangChain agents using
langchain-mcp-adapters
- LlamaIndex - Integration with LlamaIndex agents using
llama-index-tools-mcp
- SmolAgents - Integration with SmolAgents framework using native MCP support
Each example demonstrates how to:
- Start the MCP server as a subprocess.
- Convert MCP tools to framework - specific tool formats.
- Create agents that can use SignNow functionality.
- Handle environment variable configuration.
To run an example:
pip install langchain-openai langchain-mcp-adapters
pip install llama-index-tools-mcp
pip install smolagents
python examples/langchain/langchain_example.py
python examples/llamaindex/llamaindex_example.py
python examples/smolagents/stdio_demo.py
๐ง Technical Details
Tools
Each tool is described concisely; use an MCP client (e.g., Inspector) to view exact JSON schemas.
list_all_templates โ List templates & template groups with simplified metadata. Supports limit/offset pagination (default: 50 items per page).
list_documents โ Browse your documents, document groups and statuses. Supports limit/offset pagination (default: 50 items per page).
create_from_template โ Make a document or a group from a template/group.
send_invite โ Email invites (documents or groups), ordered recipients supported.
create_embedded_invite โ Embedded signing session without email delivery.
create_embedded_sending โ Embedded โsending/managementโ experience.
create_embedded_editor โ Embedded editor link to place/adjust fields.
send_invite_from_template โ One - shot: create from template and invite.
create_embedded_sending_from_template โ One - shot: template โ embedded sending.
create_embedded_editor_from_template โ One - shot: template โ embedded editor.
create_embedded_invite_from_template โ One - shot: template โ embedded signing.
get_invite_status โ Current invite status/steps for document or group.
get_document_download_link โ Direct download link (merged output for groups).
get_signing_link โ Get signing link for a document or document group.
get_document โ Normalized document/group structure with field values.
update_document_fields โ Prefill text fields in individual documents.
Tip: Start with list_all_templates โ create_from_template โ create_embedded_* / send_invite, then get_invite_status and get_document_download_link.
๐ License
MIT โ see LICENSE.md.
๐ฆ Useful resources
Sample apps
Explore ready - to - use sample apps to quickly test preparing, signing, and sending documents from your software using the SignNow API.
Try the sample apps.
API documentation
Find technical details on SignNow API requests, parameters, code examples, and possible errors. Learn more about the API functionality in detailed guides and use cases.
Read the API documentation.
SignNow API Helper MCP
Connect your AI to access API docs, generate code for complex signing workflows, and troubleshoot integration errors automatically.
Access the API Helper MCP
About
SignNow MCP Server โ maintained by the SignNow team. Issues and contributions welcome via GitHub pull requests.