SignNow MCP Server
平台与服务by signnow
一个通过 STDIO 向 AI agents 提供 SignNow eSignature workflows 访问能力的 MCP server,便于自动化签署流程。
什么是 SignNow MCP Server?
一个通过 STDIO 向 AI agents 提供 SignNow eSignature workflows 访问能力的 MCP server,便于自动化签署流程。
README
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/mcpinstead 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) 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_EMAILSIGNNOW_PASSWORDSIGNNOW_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.
# 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. Supportslimit/offsetpagination (default: 50 items per page).list_documents— Browse your documents, document groups and statuses. Supportslimit/offsetpagination (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.upload_document— Upload a document from a local file path (file_path), public URL (file_url), or MCP resource attachment (resource_uri). Forfile_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. Returnsdocument_id,filename,source.send_invite_reminder— Send a signing reminder to pending signers on a document or document group.signnow_skills— Query the bundled SignNow skill library. Omitskill_nameto list all available skills with descriptions; provideskill_name(e.g.signnow101) to fetch the full Markdown body. Usesignnow101to 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..."}
- List mode example:
Tip: Start with
signnow_skills(no arguments) to discover available skills, thenlist_all_templates→create_from_template→create_embedded_*/send_invite, thenget_invite_statusandget_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:
# Make sure you have the required dependencies installed
pip install langchain-openai langchain-mcp-adapters # for LangChain example
pip 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 example
python examples/langchain/langchain_example.py
python examples/llamaindex/llamaindex_example.py
python 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.
常见问题
SignNow MCP Server 是什么?
一个通过 STDIO 向 AI agents 提供 SignNow eSignature workflows 访问能力的 MCP server,便于自动化签署流程。
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
MCP服务构建器
by alirezarezvani
从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。
✎ 帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。