Skip to main content
Glama
DocuSign MCP Server (patched)

DocuSign MCP Server (patched)

mcp-server-docusign (patched)

A Model Context Protocol server exposing DocuSign eSignature operations, authenticated via JWT Grant (headless / service-to-service — no browser OAuth). Suitable for unattended AI-agent runtimes.

Fork of luthersystems/mcp-server-docusign (MIT) with bug fixes found during live integration testing. Used as a self-hosted MCP tool channel in an internal multi-agent AI platform.

Why this fork

The upstream server's status/document tools had several bugs surfaced when integrating against the DocuSign demo environment. This fork fixes them:

Tool

Bug

Fix

get_envelope_status

Accessed non-existent Envelope.signed_date_time (a recipient-level field) → AttributeError

Removed the field

list_envelope_documents

Returned doc.pages (a list of non-serializable Page objects) → MCP "no structured output" error

Return page count instead

list_envelopes

DocuSign requires from_date; omitting it raised INVALID_REQUEST_PARAMETER

Default from_date to a far-past date so no-arg calls list all envelopes

download_envelope_document works as-is — pass a valid document_id such as combined, certificate, or an id returned by list_envelope_documents.

Related MCP server: MCP Server ZapSign

Tools (8)

  • Templates: list_templates, get_template_definition

  • Send: create_envelope_from_template, create_envelope_from_documents

  • Track: get_envelope_status, list_envelopes

  • Documents: list_envelope_documents, download_envelope_document

Configuration (JWT Grant)

Provide via environment variables:

Env

Description

DS_AUTH_BASE

https://account-d.docusign.com (demo) / https://account.docusign.com (prod)

DS_INTEGRATION_KEY

DocuSign app Integration Key (client ID)

DS_USER_ID

User GUID to impersonate

DS_PRIVATE_KEY

RSA private key, base64-encoded (single line); or DS_PRIVATE_KEY_PATH for a file

DS_OAUTH_SCOPE

signature impersonation

One-time DocuSign setup: create an Integration Key, add an RSA keypair, grant consent for signature impersonation. See DocuSign JWT Grant.

Run

stdio MCP server (Python ≥ 3.11):

uvx --from git+https://github.com/<you>/mcp-server-docusign@<commit> mcp-server-docusign

License

MIT — inherited from upstream luthersystems/mcp-server-docusign. See LICENSE.

Available Tools

9 tools
create_envelope_from_documentsA

Create an envelope from documents (not using a template).

Args: documents: List of documents, each with name, documentId, fileExtension, and EXACTLY ONE content source: - documentBase64: inline base64 content, OR - documentPath: a file path readable by the server, OR - documentUrl: an HTTP(S) URL to download recipients: Dictionary of recipient types to lists: - signers: List of signers with name, email, recipientId, routingOrder email_subject: Subject line for the email. email_blurb: Optional body text for the email. status: Envelope status - "sent" to send immediately or "created" for draft.

Returns: Dictionary with envelopeId and status.

Inputs: documents (required), recipients (required), email_subject (required), status, +1 more. Returns: object

create_envelope_from_templateA

Create an envelope from a DocuSign template.

Args: template_id: The template ID to use. email_subject: Subject line for the email. role_assignments: List of role assignments with keys: - roleName: The role name in the template - name: Recipient's full name - email: Recipient's email address - clientUserId: (optional) For embedded signing email_blurb: Optional body text for the email. status: Envelope status - "sent" to send immediately or "created" for draft.

Returns: Dictionary with envelopeId and status.

Inputs: template_id (required), email_subject (required), role_assignments (required), status, +1 more. Returns: object

create_templateA

Create a new DocuSign template (documents + signer roles + signing fields).

Args: name: Template name. documents: List of documents, each with name, documentId, optional fileExtension, and EXACTLY ONE content source: - documentBase64: inline base64 content, OR - documentPath: a file path readable by the server, OR - documentUrl: an HTTP(S) URL to download signers: List of signer roles, each: - roleName: Role name (e.g. "Signer", "甲方") - recipientId: Recipient ID (e.g. "1") - routingOrder: (optional) signing order — lower signs first ("1" then "2" = sequential; same value = parallel) - name / email: (optional) default signer for the role; usually left empty and filled at envelope time via create_envelope_from_template - tabs: (optional) signing-field positions; a dict of lists where each tab has documentId, pageNumber, xPosition, yPosition (+ optional tabLabel). Supported tab types: signHereTabs, initialHereTabs, dateSignedTabs, textTabs description: Optional template description. email_subject: Optional default email subject (defaults to template name).

Returns: Dictionary with templateId, name, uri.

Inputs: name (required), signers (required), documents (required), description, +1 more. Returns: object

download_envelope_documentA

Download a specific document from an envelope.

Args: envelope_id: The envelope ID. document_id: The document ID to download.

Returns: Dictionary with document content (base64-encoded) and metadata.

Inputs: document_id (required), envelope_id (required). Returns: object

get_envelope_statusA

Get the status and metadata of an envelope.

Args: envelope_id: The envelope ID to query.

Returns: Dictionary with envelope details including envelopeId, status, emailSubject, createdDateTime, sentDateTime, completedDateTime, etc.

Inputs: envelope_id (required). Returns: object

get_template_definitionA

Get the definition and details of a specific template.

Args: template_id: The template ID to retrieve.

Returns: Dictionary with complete template details including roles, tabs, documents, and other metadata.

Inputs: template_id (required). Returns: object

list_envelope_documentsB

List all documents in an envelope.

Args: envelope_id: The envelope ID to query.

Returns: Dictionary with list of documents in the envelope.

Inputs: envelope_id (required). Returns: object

list_envelopesA

List envelopes with optional filters.

Args: from_date: Start date filter (ISO 8601 format, e.g., "2024-01-01T00:00:00Z"). to_date: End date filter (ISO 8601 format). status: Status filter (e.g., "sent", "delivered", "completed", "declined").

Returns: Dictionary with list of envelopes and metadata.

Inputs: status, to_date, from_date. Returns: object

list_templatesA

List available DocuSign templates.

Args: search_text: Optional search text to filter templates by name.

Returns: Dictionary with list of templates and metadata.

Inputs: search_text. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 9 tools

    Disambiguation5/5

    Each tool has a clear, distinct purpose: envelope creation (two distinct modes), envelope querying, document listing/downloading, and template operations are all well-separated. The only near-overlap is create_envelope_from_template vs create_envelope_from_documents, but their input parameters and use cases are clearly different.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern (download_, get_, create_, list_). The two create_envelope variants are clearly named to indicate their source. No mixed conventions or vague verbs.

    Tool Count5/5

    With 9 tools, the server is well-scoped for DocuSign envelope and template management. Each tool covers a meaningful operation without excessive fragmentation or redundancy.

    Completeness4/5

    The core lifecycle for envelopes (create, list, status, documents) and templates (create, list, get definition) is covered. Minor gaps exist: no envelope void/update, no template update/delete, but these are not critical for basic signing workflows and can be worked around.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables users to create, manage, and track electronic signing requests and templates through Claude Desktop and other MCP-compatible clients. Provides multi-tenant authentication with customer API keys for secure document workflow operations.
      66 npm
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables integration with the ZapSign API for electronic document signing and management, including document, template, signer, webhook, and background check operations through MCP tools.
      454 npm
      1
      MIT