Consist-Systems/doxi-mcp-server
If you are the rightful owner of doxi-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Doxi Sign MCP Server is a .NET Core application designed to manage document signing flows using the Doxi Sign API.
Doxi Sign MCP Server (.NET Core)
Overview
This project provides a Model Context Protocol (MCP) Server implemented in ASP.NET Core for managing document signing flows via the Doxi Sign API.
It exposes JSON-RPC 2.0 methods that allow AI clients (ChatGPT, Claude, etc.) to create, edit, and manage signing flows, documents, and attachments.
Setup Guide
-
Clone & build git clone https://github.com/yourorg/doxi-mcp-server.git cd doxi-mcp-server dotnet build
-
Run locally dotnet run
Default endpoint: http://localhost:5287/{Your Company Name}/mcp
Headers
All requests must include: Mcp-Session-Id: test Content-Type: application/json
Example Requests
List available tools:
POST http://localhost:5287/{Your Company Name}/mcp { "jsonrpc": "2.0", "id": 1, "method": "tools/list" }
Example response: { "jsonrpc": "2.0", "id": 1, "result": { "tools": [...] } }
Get Flow Status Example:
POST http://localhost:5287/{Your Company Name}/mcp { "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "GetFlowStatus", "arguments": { "username": "apiuser", "password": "apipass", "signFlowId": "123456" } } }
Response: { "jsonrpc": "2.0", "id": 2, "result": { "status": "Approved" } }
Available Tools
- GetAllWebhookSubscription — Lists all webhook subscriptions (GET /ex/webhook).
- DeleteUserTemplate — Deletes a user template (DELETE /ex/template/{templateId}).
- GetFormSettings — Downloads form settings for a company form (GET /ex/company/{companyId}/forms/{formId}/settings).
- ReplaceSigner — Replaces an existing signer in a signing flow (POST /flow/ReplaceSigner).
- MergeDocuments — Merges multiple documents into a single file (POST /ex/document/merge).
- DocumentInfoBase64 — Extracts information from a document provided as base64 (POST /ex/document/info/base64).
- AddTemplate — Creates a new user template (POST /ex/template).
- GetFlowAttachments — Gets all attachments of a flow (GET /flow/{signFlowId}/attachments).
- AddAttachmentAsBase64ToFlow — Adds a base64-encoded attachment to a flow (POST /flow/{signFlowId}/attachments/base64).
- DeleteSubscription — Deletes a webhook subscription (DELETE /ex/webhook/{subscriptionId}).
- GetFlowAttachmentField — Gets a specific attachment field from a flow (POST /flow/{signFlowId}/AttachmentField).
- UpdateKit — Updates an existing kit (PUT /ex/kit/{kitId}).
- EditSignFlow — Edits an existing signing flow (POST /flow/edit).
- SetSignatures — Updates or adds signatures to a flow (POST /flow/{signFlowId}/SetSignatures).
- GetKits — Lists kits for the tenant (GET /ex/kit).
- SearchWebhookCallLogs — Searches webhook call logs for a subscription (POST /ex/webhook/{subscriptionId}/logs/search).
- GetUserTemplates — Retrieves templates of a user identified by key type and value (GET /ex/user/{searchType}/{searchValue}/templates).
- GetFlowsStatus — Retrieves statuses for multiple flows at once (POST /flow/status).
- WebHookCheck — Validates and previews a webhook payload (POST /ex/webhook/check).
- UpdateWebhookSubscription — Updates a webhook subscription (PUT /ex/webhook/{subscriptionId}).
- GetFlowStatus — Gets the current status of a specific flow (GET /flow/{signFlowId}/status).
- UpdateTemplate — Updates an existing template (PUT /ex/template/{templateId}).
- GetTemplate — Retrieves template metadata (GET /ex/template/{templateId}).
- DeleteAttachmentFromTemplate — Deletes an attachment from a template (DELETE /ex/template/{templateId}/attachments/{attachmentId}).
- GetUserIdByEmail — Retrieves the user ID by email (GET /ex/user/byEmail/{email}/id).
- GetUsers — Queries users with filter parameters (GET /ex/users).
- GetFlow — Retrieves metadata for a specific signing flow (GET /flow/{signFlowId}).
- SearchInDocumentBase64 — Searches for text or patterns in a base64-encoded document (POST /ex/document/search/base64).
- GetAllFlows — Retrieves all signing flows available for the current tenant (GET /flow).
- DocumentInfo — Extracts information from a document file (POST /ex/document/info).
- SearchInDocument — Searches for text or patterns in an uploaded document (POST /ex/document/search).
- CreateFlowFromTemplate — Creates a new signing flow from a template (POST /ex/template/CreateFlowFromTemplate/{templateId}).
- GetUserGroups — Retrieves groups for a user identified by key type and value (GET /ex/user/{searchType}/{searchValue}/groups).
- SearchFlow — Searches signing flows by filters such as signer, date, or status (POST /flow/search).
- AddKit — Creates a new kit (POST /ex/kit).
- AddSubscription — Adds a new webhook subscription (POST /ex/webhook).
- GetKit — Retrieves kit metadata (GET /ex/kit/{kitId}).
- GetDocument — Downloads a document from a signing flow (GET /flow/{signFlowId}/Document).
- AddSignFlow — Creates a new signing flow and uploads a document (POST /flow).
- SetFlowAction — Sets an action on a flow such as approve, reject, or delegate (POST /flow/{signFlowId}/action).
Integration (Claude / ChatGPT)
Windows config (claude_desktop_config.json): { "mcpServers": { "doxi_flows": { "command": "dotnet", "args": [ "run", "--project", "C:\path\to\DoxiMcpServer.csproj" ] } } }
macOS/Linux: { "mcpServers": { "doxi_flows": { "command": "/usr/local/bin/dotnet", "args": [ "run", "--project", "/path/to/DoxiMcpServer.csproj" ] } } }
Troubleshooting
- Bad Request: Mcp-Session-Id header is required → Add header.
- Session not found → Use fixed session ID.
- Method not available → Ensure method name is tools/list or tools/call.
- Empty tool list → Verify metadata.json is loaded.
License
Licensed under the MIT License.