AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Sn Mcp Server

mcp-signnow-sn-mcp-server · by signnow

Official SignNow MCP server for AI agents. Access e-signature workflows, templates, embedded signing, documents via the Model Context Protocol.

No reviews yet
0 installs
33 views
0.0% view→install

Install

$ agentstack add mcp-signnow-sn-mcp-server

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution Used
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-signnow-sn-mcp-server)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Sn Mcp Server? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

About SignNow API

The SignNow REST API empowers users to deliver a seamless eSignature experience for signers, preparers, and senders. Pre-fill documents, create embedded branded workflows for multiple signers, request payments, and track signature status in real-time. Ensure signing is simple, secure, and intuitive on any device.

What you can do with the SignNow API:

  • Send documents and document groups for signature in a role-based order
  • Create reusable templates from documents
  • Pre-fill document fields with data
  • Collect payments as part of the signing flow
  • Embed the document sending, signing, or editing experience into your website, application, or any system of record
  • Track signing progress and download the completed documents

SignNow MCP Server

> A Model Context Protocol (MCP) server that gives AI agents secure, structured access to SignNow eSignature workflows — templates, embedded signing, invites, status tracking, and document downloads — over STDIO or Streamable HTTP.

> mcp-name: io.github.signnow/sn-mcp-server ---

Table of contents

  • [Features](#features)
  • [Quick start](#quick-start)
  • [Prerequisites](#prerequisites)
  • [Quick run (uvx)](#quick-run-uvx)
  • [1. Setup Environment Variables](#1-setup-environment-variables)
  • [2. Install and Run](#2-install-and-run)
  • [Local/Remote (HTTP)](#localremote-http)
  • [Docker](#docker)
  • [Docker Compose](#docker-compose)
  • [Configuration](#configuration)
  • [Authentication options](#authentication-options)
  • [SignNow & OAuth settings](#signnow--oauth-settings)
  • [Production key management](#production-key-management)
  • [Client setup](#client-setup)
  • [VS Code — GitHub Copilot (Agent Mode) / Cursor](#vs-code--github-copilot-agent-mode--cursor)
  • [Claude Desktop](#claude-desktop)
  • [Glama (hosted MCP)](#glama-hosted-mcp)
  • [MCP Inspector (testing)](#mcp-inspector-testing)
  • [Tools](#tools)
  • [FAQ / tips](#faq--tips)
  • [Examples](#examples)
  • [Useful resources](#useful-resources)
  • [Sample apps](#sample-apps)
  • [API documentation](#api-documentation)
  • [SignNow API Helper MCP](#signnow-api-helper-mcp)
  • [License](#license)

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)

Quick start

Prerequisites

  • SignNow account. Create a free developer account.
  • SignNow Credentials: You will need your account email, password, and the application Basic Authorization Token. Getting started.
  • An active SignNow API application.
  • Python 3.11+ installed on your system (check with python3 --version)
  • UVX installed  (check with uvx --version). Recommended for the quickest setup.
  • Environment variables configured
  • 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

# Create .env file with your SignNow credentials
# You can copy from env.example if you have the source code
# Or create .env file manually with required variables (see Environment Variables section below)

2. Install and Run

Option A: Install from PyPI (Recommended)
# Install the package from PyPI
pip install signnow-mcp-server

# Run MCP server in standalone mode
sn-mcp serve
Option B: Install from Source (Development)
# 1) Clone & configure
git clone https://github.com/signnow/sn-mcp-server.git
cd sn-mcp-server
cp .env.example .env
# fill in your values in .env

# 2) Install (editable for dev)
pip install -e .

# 3) Run as STDIO MCP server (recommended for local tools & Inspector)
sn-mcp serve

> STDIO is ideal for desktop clients and local testing.

Local/Remote (HTTP)

# Start HTTP server on 127.0.0.1:8000
sn-mcp http

# Custom host/port
sn-mcp http --host 0.0.0.0 --port 8000

# Dev reload
sn-mcp http --reload

By default, the Streamable HTTP MCP endpoint is served under /mcp. Example URL:

http://localhost:8000/mcp

Docker

# Build
docker build -t sn-mcp-server .

# Run HTTP mode (recommended for containers)
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

# Only the MCP server
docker-compose up sn-mcp-server

# Both services (if defined)
docker-compose up

Configuration

Copy .env.example.env and fill in values. All settings are validated via pydantic-settings at startup.

Authentication options

1) API Key / Access Token (simplest)

SIGNNOW_ACCESS_TOKEN=
# or equivalently:
SIGNNOW_API_KEY=

Generate an API key →

2) Username / Password

SIGNNOW_USER_EMAIL=
SIGNNOW_PASSWORD=
SIGNNOW_API_BASIC_TOKEN=

3) OAuth 2.0 (for hosted/advanced scenarios)

SIGNNOW_CLIENT_ID=
SIGNNOW_CLIENT_SECRET=
# + OAuth server & RSA settings below

> When running via some desktop clients, only user/password may be supported.

Per-request access token (HTTP transport)

For multi-tenant / proxy deployments, a wrapping backend can attach the raw SignNow access token per request via a dedicated HTTP header — no env config, and without reusing Authorization (which carries the MCP/OAuth bearer):

X-SignNow-Access-Token: 
  • Value is the raw token — no Bearer prefix.
  • Resolved per request; nothing is cached or stored (stateless).
  • Precedence: an env-configured SIGNNOW_ACCESS_TOKEN (Option 1) still wins. To use

the header as a true per-request credential, do not also set SIGNNOW_ACCESS_TOKEN — otherwise every request collapses to the env token. The header outranks a generic Authorization: Bearer.

  • HTTP transport only (sn-mcp http). It is not exposed as a tool argument, so the

token never enters the model's context or conversation logs. Send over HTTPS.

SignNow & OAuth settings

# SignNow endpoints (defaults shown)
SIGNNOW_APP_BASE=https://app.signnow.com
SIGNNOW_API_BASE=https://api.signnow.com

# OAuth server (if you enable OAuth mode)
OAUTH_ISSUER=
ACCESS_TTL=3600
REFRESH_TTL=2592000
ALLOWED_REDIRECTS=

# RSA keys for OAuth (critical in production)
OAUTH_RSA_PRIVATE_PEM=
OAUTH_JWK_KID=

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:

  1. Open Claude Desktop → Developer → Edit config
  2. Add a new server entry under mcpServers
  3. 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:

  1. Open the server page on Glama: sn-mcp-server on Glama
  2. Click the red "Deploy Server" button
  3. In environment variables, provide:
  • SIGNNOW_USER_EMAIL
  • SIGNNOW_PASSWORD
  • SIGNNOW_API_BASIC_TOKEN
  • (other variables can be left as defaults)
  1. 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.

# Start Inspector (opens UI on localhost)
npx @modelcontextprotocol/inspector

# Connect (STDIO): run your server locally and attach
sn-mcp serve

# Or connect (HTTP): use http://localhost:8000/mcp

You can list tools, call them with JSON args, and inspect responses.


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_contacts — Search CRM contacts by name, email, or phone. Returns id, email, first/last name, and company. Use before send_invite to resolve a recipient's email address by their name. Supports per_page (default 15, max 100).
  • 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.
  • create_template — Convert a document or document group into a reusable template for signing.
  • send_invite — Email invites (documents or groups), ordered recipients supported. Auto-detects freeform documents (no fields) — omit role for freeform recipients. Pass self_sign=True (with no orders) to sign the document yourself: the tool resolves your email server-side and returns a SendInviteResponse whose optional link field holds a ready-to-open signing link (also populated when a freeform recipient email matches the authenticated user). For template/template group it auto-creates document/document group first.
  • create_embedded_invite — Embedded signing session without email delivery for documents/groups/templates. For template/template group it auto-creates document/document group first.
  • create_embedded_sending — Embedded “sending/management” experience for documents/groups/templates. For template/template group it auto-creates document/document group first.
  • create_embedded_editor — Embedded editor link to place/adjust fields for documents/groups/templates. For template/template group it auto-creates document/document group first.
  • 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. Covers field invites and freeform invites (field path preferred when both exist). Response includes invite_mode (field or freeform). For freeform document groups, signer emails come from the group documents list (signature_requests).
  • 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.
  • upload_document — Upload a document from a local file path (file_path), public URL (file_url), or MCP resource attachment (resource_uri). For file_path, the resolved path must stay within the configured safe base directory (by default, the user's home directory); paths outside that base fail validation. Supported: PDF, DOC, DOCX, PNG, JPG, JPEG. Max 40 MB. Returns document_id, filename, source.
  • send_invite_reminder — Send a signing reminder to pending signers on a document or document group.
  • cancel_invite — Cancel all active (pending) signing invites on a document or document group. Auto-detects entity type and invite type (field vs freeform). Returns status: cancelled, completed (already done), or invite_not_sent.
  • update_invite_recipient — Replace the signing recipient on a pending field invite. Finds the pending invite for the current signer and swaps in a new email. Supports both documents and document groups. Only field invites — freeform/embedded are unsupported.
  • view_document — Generate a read-only embedded view link for a document or document group. In MCP Apps-compatible clients the document renders inline; in other hosts the link is returned as a clickable URL.
  • rename_entity — Rename a document, document group, template, or template group. Auto-detects entity type when not provided.
  • signnow_skills — Query the bundled SignNow skill library. Omit skill_name to list all available skills with descriptions; provide skill_name (e.g. signnow101) to fetch the full Markdown body. Use signnow101 to learn SignNow entity types, invite types, and tool mappings.
  • List mode example: {"skills": [{"name": "signnow101", "description": "SignNow 101 concepts reference... (description truncated for brevity)"}]}
  • Fetch mode example: {"name": "signnow101", "body": "# SignNow 101 — Concepts Reference\n..."}

> Tip: Start with signnow_skills (no arguments) to discover available skills, then list_all_templatescreate_from_templatecreate_embedded_* / send_invite, then get_invite_status and get_document_download_link.


FAQ / tips

  • **

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.