SignNow MCP Server

io.github.signnow由 GitHub 帳號 signnow 發布v0.3.1更新於 Oct 24, 2026

A MCP server that gives AI agents access to SignNow eSignature workflows over STDIO.

概覽

AI 產生的概覽

SignNow MCP 伺服器,讓 AI 助理管理電子簽名流程:範本、邀請、嵌入式簽署連結、狀態追蹤與文件下載。

可以做什麼
  • 瀏覽與管理範本、範本群組、文件與文件群組,從範本建立文件,並把文件轉為可重複使用的範本
  • 搜尋 CRM 聯絡人,寄送含順序收件人的電子郵件邀請,支援範本一鍵邀請、提醒、更換收件人與取消邀請
  • 建立嵌入式簽署、寄送與編輯器連結,以及唯讀文件檢視連結
  • 查詢邀請狀態與步驟細節,讀取正規化文件結構與欄位值,取得已完成文件的下載連結
  • 從本機路徑、公開網址或 MCP 資源上傳檔案,預填文字欄位,重新命名實體
  • 查詢內建的 SignNow 技能庫以了解概念說明
適用情境
適合想讓助理在聊天用戶端內準備、寄送並追蹤 SignNow 簽署請求,或建立嵌入式簽署與寄送體驗的情境。對已在使用 SignNow 的團隊最有價值。
執行需求
需要 SignNow 帳號與已啟用的 SignNow API 應用程式。憑證透過環境變數提供:SIGNNOW_ACCESS_TOKEN 或 SIGNNOW_API_KEY,或 SIGNNOW_USER_EMAIL、SIGNNOW_PASSWORD 與 SIGNNOW_API_BASIC_TOKEN,或 OAuth 相關值如 SIGNNOW_CLIENT_ID 與 SIGNNOW_CLIENT_SECRET。本機執行需 Python 3.11+,可選用 uvx;另提供預先部署的 HTTP 端點。需能連線至 SignNow API。
安裝前請注意
需要 SignNow 帳號憑證,使用者名稱密碼模式包含密碼,須存放在環境變數或 .env 檔案中。工具會寄送郵件、取消邀請、更換收件人、上傳文件並修改文件資料,操作會影響真實簽署人。本機路徑上傳被限制在設定的安全基礎目錄內。OAuth 模式下若缺少 OAUTH_RSA_PRIVATE_PEM,重新啟動會重新產生金鑰並使既有權杖失效。透過 X-SignNow-Access-Token 標頭傳送的權杖只應走 HTTPS。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 SignNow MCP Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

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

  • 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:

bash
uvx --from signnow-mcp-server sn-mcp serve

1. Setup Environment Variables

bash
# 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)
bash
# Install the package from PyPIpip install signnow-mcp-server
# Run MCP server in standalone modesn-mcp serve
Option B: Install from Source (Development)
bash
# 1) Clone & configuregit clone https://github.com/signnow/sn-mcp-server.gitcd sn-mcp-servercp .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)

bash
# Start HTTP server on 127.0.0.1:8000sn-mcp http
# Custom host/portsn-mcp http --host 0.0.0.0 --port 8000
# Dev reloadsn-mcp http --reload

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

http://localhost:8000/mcp

Docker

bash
# Builddocker 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

bash
# Only the MCP serverdocker-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=<your_api_key># or equivalently:SIGNNOW_API_KEY=<your_api_key>

Generate an API key →

2) Username / Password

SIGNNOW_USER_EMAIL=<email>SIGNNOW_PASSWORD=<password>SIGNNOW_API_BASIC_TOKEN=<base64 basic token>

3) 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.

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: <raw 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.comSIGNNOW_API_BASE=https://api.signnow.com
# OAuth server (if you enable OAuth mode)OAUTH_ISSUER=<your_issuer_url>ACCESS_TTL=3600REFRESH_TTL=2592000ALLOWED_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):

json
{  "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):

json
{  "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):

json
{  "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):

json
{  "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):

json
{  "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):

json
{  "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)
  4. 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.

bash
# Start Inspector (opens UI on localhost)npx @modelcontextprotocol/inspector
# Connect (STDIO): run your server locally and attachsn-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, plus the folder the entity is stored in (folder_id/folder_name) at v3.0.
  • update_document_fields — Prefill text fields in individual documents.
  • upload_document — Upload a file from a local file path (file_path), public URL (file_url), or MCP resource attachment (resource_uri). Set kind='template' (default 'document') to store it as a reusable template instead of a regular document (the returned document_id is then a template ID and next_steps switch to the template follow-ups). 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_templates → create_from_template → create_embedded_* / send_invite, then get_invite_status and get_document_download_link.


FAQ / tips

  • STDIO vs Docker? Prefer STDIO for local dev; inside Docker, use HTTP.
  • Sandbox vs production? Start with SignNow’s sandbox/dev credentials; production requires proper OAuth and persistent RSA private key.
  • Where do I see exact tool schemas? Use MCP Inspector or your client’s “tool details” view.
  • Where are examples? See examples/ in this repo for starter integrations.

Examples

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:

bash
# Make sure you have the required dependencies installedpip install langchain-openai langchain-mcp-adapters  # for LangChain examplepip install llama-index-tools-mcp                   # for LlamaIndex example  pip install smolagents                              # for SmolAgents example
# Set up your .env file with SignNow credentials and LLM configuration# Then run the examplepython examples/langchain/langchain_example.pypython examples/llamaindex/llamaindex_example.pypython examples/smolagents/stdio_demo.py

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


License

MIT — see LICENSE.md.


About SignNow MCP Server — maintained by the SignNow team. Issues and contributions welcome via GitHub pull requests.


來源:README.md,提交 80c7de5

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分