SignNow MCP Server について
SignNow MCP Server は、AI エージェントを SignNow の電子署名ワークフローに接続し、テンプレート、招待、埋め込み署名、状態確認、文書取得のツールを提供します。ローカル stdio と Streamable HTTP に対応します。
主な機能
- 01テンプレートとテンプレートグループの閲覧
- 02テンプレートからの文書作成
- 03署名者の順序を指定した招待送信
- 04埋め込み署名・編集リンクの生成
- 05署名状態の確認と完了文書のダウンロード
活用シーン
- 01再利用可能なテンプレートによる文書準備
- 02複数の署名者への順番どおりの文書送信
- 03アプリへの署名フローの埋め込み
- 04完了文書の取得と進捗確認
MCP 対応
stdio または Streamable HTTP を介して、SignNow の電子署名ワークフローツールを MCP クライアントに提供します。サーバーへの認証情報設定に加え、HTTP ではリクエストごとのアクセストークンにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SignNow API について
SignNow REST API を使うと、署名者、書類作成者、送信者にシームレスな電子署名エクスペリエンスを提供できます。書類への事前入力、複数の署名者向けのブランド化された埋め込みワークフローの作成、支払いのリクエスト、署名状況のリアルタイム追跡が可能です。どのデバイスでも、シンプルで安全かつ直感的に署名できるようにします。
SignNow API でできること:
- 役割に基づく順序で、署名用の書類や書類グループを送信する
- 書類から再利用可能なテンプレートを作成する
- データを使って書類のフィールドに事前入力する
- 署名フローの一部として支払いを受け付ける
- 書類の送信、署名、編集のエクスペリエンスをウェブサイト、アプリケーション、または任意の記録システムに埋め込む
- 署名の進捗を追跡し、署名済みの書類をダウンロードする
SignNow MCP サーバー
AI エージェントに、STDIO または Streamable HTTP 経由で、SignNow の電子署名ワークフロー(テンプレート、埋め込み署名、招待、ステータス追跡、書類のダウンロード)への安全で構造化されたアクセスを提供する Model Context Protocol(MCP)サーバーです。
mcp-name: io.github.signnow/sn-mcp-server
目次
機能
-
テンプレートとグループ
- すべてのテンプレートとテンプレートグループを参照する
- テンプレートから書類やグループを作成する(ワンショットのワークフローにも対応)
-
招待と埋め込み UX
- メールでの招待と、順序を指定した受信者
- アプリ内エクスペリエンス向けの埋め込み署名/送信/編集リンク
-
ステータスと取得
- 招待のステータスと各ステップの詳細を確認する
- 最終書類をダウンロードする(単一または結合済み)
- プログラムによる判断に使える、標準化された書類/グループ構造を読み取る
-
トランスポート
- STDIO(ローカルクライアントに最適)
- Streamable HTTP(Docker/リモートに最適)
クイックスタート
前提条件
- SignNow アカウント。無料の開発者アカウントを作成してください。
- SignNow の認証情報:アカウントのメールアドレス、パスワード、アプリケーションの Basic Authorization Token が必要です。利用開始ガイドをご覧ください。
- 有効な SignNow API アプリケーション。
- Python 3.11 以降がシステムにインストールされていること(python3 --version で確認してください)
- UVX がインストールされていること(uvx --version で確認してください)。最も手早くセットアップできるため、おすすめです。
- 環境変数が設定されていること
- クライアントが Streamable HTTP に対応している場合は、ローカルで実行する代わりに、デプロイ済みサーバーの URL
https://mcp-server.signnow.com/mcpを使用できます。
クイック実行(uvx)
uv を使用する場合、パッケージをインストールせずにサーバーを実行できます。
uvx --from signnow-mcp-server sn-mcp serve
1. 環境変数の設定
# 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. インストールと実行
オプション A:PyPI からインストール(推奨)
# Install the package from PyPI
pip install signnow-mcp-server
# Run MCP server in standalone mode
sn-mcp serve
オプション B:ソースからインストール(開発用)
# 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 はデスクトップクライアントやローカルでのテストに最適です。
ローカル/リモート(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
デフォルトでは、Streamable HTTP の MCP エンドポイントは /mcp 配下で提供されます。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 は安定しません。Docker を使用する場合は、HTTP をおすすめします。
Docker Compose
# Only the MCP server
docker-compose up sn-mcp-server
# Both services (if defined)
docker-compose up
設定
.env.example を .env にコピーして、値を入力します。すべての設定は起動時に pydantic-settings によって検証されます。
認証オプション
1)API キー/アクセストークン(最も簡単)
SIGNNOW_ACCESS_TOKEN=<your_api_key>
# or equivalently:
SIGNNOW_API_KEY=<your_api_key>
2)ユーザー名/パスワード
SIGNNOW_USER_EMAIL=<email>
SIGNNOW_PASSWORD=<password>
SIGNNOW_API_BASIC_TOKEN=<base64 basic token>
3)OAuth 2.0(ホスト型/高度なシナリオ向け)
SIGNNOW_CLIENT_ID=<client_id>
SIGNNOW_CLIENT_SECRET=<client_secret>
# + OAuth server & RSA settings below
一部のデスクトップクライアントから実行する場合、ユーザー名/パスワードのみがサポートされることがあります。
リクエストごとのアクセストークン(HTTP トランスポート)
マルチテナント/プロキシ環境では、ラッピングバックエンドが専用の HTTP ヘッダーを通じて、リクエストごとに SignNow の生のアクセストークンを付与できます。環境変数の設定は不要で、MCP/OAuth のベアラートークンを含む Authorization も再利用しません。
X-SignNow-Access-Token: <raw SignNow access_token>
- 値は生のトークンです。
Bearerプレフィックスは付けません。 - リクエストごとに解決され、キャッシュにも保存にも使われません(ステートレス)。
- 優先順位: 環境変数で設定した
SIGNNOW_ACCESS_TOKEN(オプション 1)が引き続き優先されます。ヘッダーをリクエストごとの認証情報として使うには、SIGNNOW_ACCESS_TOKENも設定することは避けてください。設定すると、すべてのリクエストで環境変数のトークンが使われます。このヘッダーは、汎用のAuthorization: Bearerより優先されます。 - HTTP トランスポートのみ(
sn-mcp http)。ツールの引数として公開されないため、トークンがモデルのコンテキストや会話ログに入ることはありません。HTTPS 経由で送信してください。
SignNow と OAuth の設定
# 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=<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>
本番環境でのキー管理
本番環境で OAUTH_RSA_PRIVATE_PEM が設定されていない場合、再起動のたびに新しい RSA キーが生成され、既存のすべてのトークンが無効になります。本番環境では、シークレット管理を通じて永続的な秘密鍵を必ず指定してください。
クライアントの設定
VS Code — GitHub Copilot(エージェントモード)/Cursor
ワークスペースに .vscode/mcp.json / .cursor/mcp.json を作成します。
STDIO(ローカル):
{
"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 — ローカルインストール不要):
{
"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(リモートまたは Docker):
{
"servers": {
"signnow": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
次に、チャットを開いて エージェントモードを選択し、signnow ツールを有効にして、プロンプトで使用します。
注:Cursor にも同じ設定を適用できます。MCP 設定(STDIO または HTTP)に追加してください。STDIO では、上記のように uvx も使用できます。
Claude Desktop
Desktop Extensions を使うか、MCP 設定を手動で編集します(Developer → Edit config)。
手順:
- Claude Desktop を開き、Developer → Edit config を選択します
mcpServersの下に新しいサーバーエントリを追加します- 保存して Claude Desktop を再起動します
例:
STDIO(ローカルインストール):
{
"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 — ローカルインストール不要):
{
"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(リモートまたは Docker):
{
"mcpServers": {
"signnow": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
次に、Claude のチャットでサーバーを有効にして、ツールを使い始めます。
Glama(ホスト型 MCP)
最小限の設定で、このサーバーを Glama にデプロイして実行できます。
手順:
- Glama のサーバーページを開きます:Glama 上の sn-mcp-server
- 赤い「Deploy Server」ボタンをクリックします
- 環境変数に次の値を指定します:
SIGNNOW_USER_EMAILSIGNNOW_PASSWORDSIGNNOW_API_BASIC_TOKEN- (その他の変数はデフォルトのままでかまいません)
- Glama でアクセストークンを作成し、エンドポイント URL をコピーします。次のような形式です。
https://glama.ai/endpoints/{someId}/mcp?token={glama-mcp-token}
この HTTP MCP URL は、HTTP トランスポートに対応する任意のクライアントで使用できます(例:VS Code/Cursor の JSON 設定、または上記の Claude Desktop の HTTP の例)。
MCP Inspector(テスト)
ツールやスキーマを視覚的に確認するのに便利です。
# 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
ツールの一覧表示、JSON 引数を使った呼び出し、レスポンスの確認ができます。
ツール
各ツールの説明は簡潔に記載されています。正確な JSON スキーマを確認するには、MCP クライアント(例:Inspector)を使用してください。
list_all_templates— 簡略化されたメタデータでテンプレートとテンプレートグループを一覧表示します。limit/offsetによるページネーションに対応しています(デフォルト:1ページあたり50件)。list_contacts— 名前、メールアドレス、電話番号で CRM の連絡先を検索します。ID、メールアドレス、名/姓、会社名を返します。名前から受信者のメールアドレスを特定するには、send_inviteの前に使用してください。per_pageに対応しています(デフォルト15、最大100)。list_documents— ドキュメント、ドキュメントグループ、ステータスを閲覧します。limit/offsetによるページネーションに対応しています(デフォルト:1ページあたり50件)。create_from_template— テンプレート/テンプレートグループからドキュメントまたはグループを作成します。create_template— ドキュメントまたはドキュメントグループを、署名に再利用できるテンプレートに変換します。send_invite— メールで招待を送信します(ドキュメントまたはグループ)。受信者の順序を指定できます。フィールドのない自由形式のドキュメントを自動検出します。自由形式の受信者ではroleを省略してください。self_sign=True(ordersなし)を渡すと、自分でドキュメントに署名できます。このツールはサーバー側でユーザーのメールアドレスを特定し、すぐに開ける署名リンクを任意のフィールドlinkに含むSendInviteResponseを返します(自由形式の受信者のメールアドレスが認証済みユーザーと一致する場合も、このフィールドに値が設定されます)。テンプレート/テンプレートグループの場合は、先にドキュメント/ドキュメントグループを自動作成します。create_embedded_invite— ドキュメント/グループ/テンプレート向けに、メールを送信せず埋め込み署名セッションを作成します。テンプレート/テンプレートグループの場合は、先にドキュメント/ドキュメントグループを自動作成します。create_embedded_sending— ドキュメント/グループ/テンプレート向けに、埋め込みの「送信/管理」エクスペリエンスを作成します。テンプレート/テンプレートグループの場合は、先にドキュメント/ドキュメントグループを自動作成します。create_embedded_editor— ドキュメント/グループ/テンプレートにフィールドを配置/調整するための埋め込みエディターリンクを作成します。テンプレート/テンプレートグループの場合は、先にドキュメント/ドキュメントグループを自動作成します。send_invite_from_template— ワンショットで、テンプレートから作成して招待を送信します。create_embedded_sending_from_template— ワンショットで、テンプレートから埋め込みの送信エクスペリエンスを作成します。create_embedded_editor_from_template— ワンショットで、テンプレートから埋め込みエディターを作成します。create_embedded_invite_from_template— ワンショットで、テンプレートから埋め込み署名を作成します。get_invite_status— ドキュメントまたはグループの現在の招待ステータス/手順を取得します。フィールド招待と自由形式の招待に対応しています(両方ある場合はフィールドの経路を優先します)。レスポンスにはinvite_mode(fieldまたはfreeform)が含まれます。自由形式のドキュメントグループでは、署名者のメールアドレスはグループのdocumentsリスト(signature_requests)から取得します。get_document_download_link— 直接ダウンロードリンクを取得します(グループの場合は統合された出力)。get_signing_link— ドキュメントまたはドキュメントグループの署名リンクを取得します。get_document— フィールド値を含む正規化されたドキュメント/グループ構造に加え、v3.0 ではエンティティが保存されているフォルダー(folder_id/folder_name)を取得します。update_document_fields— 個々のドキュメントのテキストフィールドに値を事前入力します。upload_document— ローカルファイルパス(file_path)、公開 URL(file_url)、または MCP リソース添付ファイル(resource_uri)からファイルをアップロードします。kind='template'(デフォルトは'document')を設定すると、通常のドキュメントではなく再利用可能なテンプレートとして保存されます(その場合、返されるdocument_idはテンプレート ID となり、next_stepsはテンプレート向けの後続手順に切り替わります)。file_pathの場合、解決後のパスは設定された安全なベースディレクトリ(デフォルトではユーザーのホームディレクトリ)内にある必要があります。このベースディレクトリ外のパスは検証に失敗します。対応形式:PDF、DOC、DOCX、PNG、JPG、JPEG。最大40 MB。document_id、filename、sourceを返します。send_invite_reminder— ドキュメントまたはドキュメントグループで、署名待ちの署名者に署名リマインダーを送信します。cancel_invite— ドキュメントまたはドキュメントグループに対する、保留中の有効な署名招待をすべてキャンセルします。エンティティの種類と招待の種類(フィールド/自由形式)を自動検出します。ステータスとしてcancelled、completed(すでに完了)、またはinvite_not_sentを返します。update_invite_recipient— 保留中のフィールド招待の署名受信者を置き換えます。現在の署名者に対する保留中の招待を検索し、新しいメールアドレスに差し替えます。ドキュメントとドキュメントグループの両方に対応しています。フィールド招待のみ対応しており、自由形式/埋め込み招待には対応していません。view_document— ドキュメントまたはドキュメントグループの読み取り専用埋め込み表示リンクを生成します。MCP Apps 対応クライアントではドキュメントがインライン表示されます。それ以外のホストでは、クリック可能な URL としてリンクが返されます。rename_entity— ドキュメント、ドキュメントグループ、テンプレート、またはテンプレートグループの名前を変更します。指定がない場合はエンティティの種類を自動検出します。signnow_skills— 同梱の SignNow スキルライブラリを検索します。skill_nameを省略すると、説明付きですべての利用可能なスキルを一覧表示します。skill_name(例:signnow101)を指定すると、Markdown 本文全体を取得します。SignNow のエンティティの種類、招待の種類、ツールの対応関係を学ぶにはsignnow101を使用してください。- 一覧表示モードの例:
{"skills": [{"name": "signnow101", "description": "SignNow の基本概念リファレンス...(説明は簡潔さのため省略)"}]} - 取得モードの例:
{"name": "signnow101", "body": "# SignNow 101 — 概念リファレンス\n..."}
- 一覧表示モードの例:
ヒント:まず引数なしで
signnow_skillsを実行して利用可能なスキルを確認し、次にlist_all_templates→create_from_template→create_embedded_*/send_inviteの順に実行します。その後、get_invite_statusとget_document_download_linkを実行してください。
FAQ / ヒント
- STDIO と Docker のどちらを使うべきですか? ローカル開発では STDIO を、Docker 内では HTTP を推奨します。
- サンドボックスと本番環境のどちらを使うべきですか? まず SignNow のサンドボックス/開発用認証情報を使用してください。本番環境では、適切な OAuth と永続化された RSA 秘密鍵が必要です。
- 正確なツールスキーマはどこで確認できますか? MCP Inspector またはクライアントの「ツールの詳細」ビューを使用してください。
- サンプルはどこにありますか? このリポジトリの
examples/を参照してください。導入の参考になるサンプルが用意されています。
サンプル
examples/ ディレクトリには、一般的な AI エージェントのフレームワークと SignNow MCP Server を連携させるための、実際に動作するサンプルが含まれています。
- LangChain -
langchain-mcp-adaptersを使用して LangChain エージェントと連携します - LlamaIndex -
llama-index-tools-mcpを使用して LlamaIndex エージェントと連携します - SmolAgents - MCP のネイティブサポートを使用して SmolAgents フレームワークと連携します
各サンプルでは、次の方法を紹介します。
- MCP サーバーをサブプロセスとして起動する
- MCP ツールをフレームワーク固有のツール形式に変換する
- SignNow の機能を利用できるエージェントを作成する
- 環境変数の設定を処理する
サンプルを実行するには:
# 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
便利なリソース
サンプルアプリ
すぐに使えるサンプルアプリを試して、SignNow API を使用したソフトウェアからの書類の準備、署名、送信をすばやくテストしましょう。
サンプルアプリをお試しください。
API ドキュメント
SignNow API のリクエスト、パラメーター、コード例、発生する可能性のあるエラーに関する技術的な詳細を確認できます。詳細なガイドやユースケースで、API の機能について学びましょう。
API ドキュメントをお読みください。
SignNow API Helper MCP
AI を接続すると、API ドキュメントへのアクセス、複雑な署名ワークフロー向けのコード生成、連携エラーの自動トラブルシューティングができます。 API Helper MCP にアクセス
ライセンス
MIT — LICENSE.mdを参照してください。
概要 SignNow MCP Server — SignNow チームがメンテナンスしています。GitHub のプルリクエストで、課題の報告や貢献を歓迎します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。