GoCanvas MCP Server (read-only)
Exposes read-only GoCanvas API v3 endpoints as MCP tools, enabling listing and retrieval of forms, submissions, reports, and reference data.
README
GoCanvas MCP Server (read-only)
A minimal Model Context Protocol server that exposes the read-only endpoints of the GoCanvas API v3 as MCP tools. Scope is limited to four areas: Forms, Submissions, Reports, and Reference Data. No create/update/delete operations are exposed.
Tools
Forms
| Tool | Endpoint |
|---|---|
list_forms |
GET /forms |
get_form |
GET /forms/{form_id} |
list_form_assigned_users |
GET /forms/{form_id}/assigned_users |
list_form_shared_departments |
GET /forms/{form_id}/shared_departments |
Submissions
| Tool | Endpoint |
|---|---|
list_submissions |
GET /submissions (requires form_id) |
get_submission |
GET /submissions/{submission_id} |
list_submission_revisions |
GET /submissions/{submission_id}/revisions |
get_submission_value |
GET /submissions/{submission_id}/values/{value_id} |
Reports
| Tool | Endpoint |
|---|---|
list_form_reports |
GET /forms/{form_id}/reports |
get_form_report |
GET /forms/{form_id}/reports/{report_id} |
get_submission_default_pdf |
GET /submissions/{submission_id}/pdf (PDF) |
get_submission_report_pdf |
GET /submissions/{submission_id}/reports/{report_id} (PDF) |
get_submission_standard_pdf |
GET /submissions/{submission_id}/standard_pdf (PDF) |
The three PDF tools download the binary response to GOCANVAS_PDF_DIR
(default ./pdf_output) and return the saved file path, content type, and size.
Reference Data
| Tool | Endpoint |
|---|---|
list_reference_data |
GET /reference_data |
get_reference_data |
GET /reference_data/{reference_data_id} |
Authentication
| Tool | Endpoint |
|---|---|
refresh_oauth_token |
POST /oauth/token (client-credentials) |
refresh_oauth_token forces a fresh bearer token to be fetched and cached. It is
normally unnecessary — the server fetches a token on startup and refreshes it
automatically before expiry and on a 401 — but it is exposed so the agent can
rotate the token explicitly. The returned access token is masked.
Setup
This project uses uv. With uv installed, no
manual environment setup is required — uv run resolves and installs
dependencies (from pyproject.toml) automatically on first launch.
# optional: pre-create the environment
uv sync
<details> <summary>Alternative: plain pip + venv</summary>
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
</details>
Configuration
Set credentials via environment variables (see .env.example). Authentication is
resolved in the following priority order:
| Variable | Description |
|---|---|
GOCANVAS_CLIENT_ID / GOCANVAS_CLIENT_SECRET |
OAuth 2.0 client credentials (preferred). A short-lived bearer token is fetched from /oauth/token, cached, and auto-refreshed on expiry or 401. |
GOCANVAS_OAUTH_SCOPE |
Optional OAuth scope to request. |
GOCANVAS_API_TOKEN |
Static bearer token. |
GOCANVAS_USERNAME / GOCANVAS_PASSWORD |
HTTP Basic auth (fallback). |
GOCANVAS_BASE_URL |
Optional. Defaults to https://api.gocanvas.com/api/v3. |
GOCANVAS_PDF_DIR |
Optional. Output directory for downloaded PDFs (default ./pdf_output). |
GOCANVAS_TIMEOUT |
Optional. HTTP timeout in seconds (default 30). |
Running
The server communicates over stdio. Run it with uv from the project directory:
GOCANVAS_CLIENT_ID=... GOCANVAS_CLIENT_SECRET=... uv run server.py
MCP client configuration
Use uv run as the command. --directory points uv at this project so it
uses the right dependencies regardless of the client's working directory:
{
"mcpServers": {
"gocanvas": {
"command": "uv",
"args": [
"run",
"--directory", "/absolute/path/to/GoCanvas",
"server.py"
],
"env": {
"GOCANVAS_CLIENT_ID": "your_client_id",
"GOCANVAS_CLIENT_SECRET": "your_client_secret"
}
}
}
}
If uv isn't on the client's PATH, use its absolute path (e.g.
~/.local/bin/uv) as the command.
<details> <summary>Alternative: point at a virtualenv interpreter (pip users)</summary>
{
"mcpServers": {
"gocanvas": {
"command": "/absolute/path/to/GoCanvas/.venv/bin/python",
"args": ["/absolute/path/to/GoCanvas/server.py"],
"env": {
"GOCANVAS_CLIENT_ID": "your_client_id",
"GOCANVAS_CLIENT_SECRET": "your_client_secret"
}
}
}
}
On Windows the interpreter is at .venv\Scripts\python.exe. Using a bare
python will fail with ModuleNotFoundError: httpx because the client does not
use your activated shell environment.
</details>
Notes
- Pagination: list tools accept a
pageargument. Response pagination headers (link,current-page,page-items,total-count,total-pages) are surfaced under apaginationkey in the tool result. - Rate limiting: the server honors
429 Too Many Requestsresponses, waiting according to theRateLimit-Reset/RateLimit-Remainingheaders (or a bounded exponential backoff) before retrying, per GoCanvas best practices.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.