Tickiti

io.github.tickiti由 GitHub 帳號 tickiti 發布v0.2.0更新於 Nov 1, 2026

Connect AI assistants to the Tickiti helpdesk API: tickets, queries, reports and admin.

概覽

AI 產生的概覽

把 AI 助理連接到 Tickiti 客服工單 API,可讀取、寫入與管理工單、範本、郵件和報表。

可以做什麼
  • 建立、回覆、關閉、合併、連結、拆分、刪除與還原工單,並管理參與者與附件
  • 讀取工單討論串、單筆回覆、附件、佇列、團隊、人員與解決方案,並搜尋或匯出回覆
  • 管理常用回覆、範本與範本圖片,並可在不寄送的情況下渲染範本
  • 寄送與搜尋郵件,檢視檢視條件與關注清單,執行報表,管理 API 權杖
  • 探索任意 API 端點,並透過通用呼叫工具存取 v1 API 其餘部分
適用情境
適合使用 Tickiti 的客服團隊,讓助理在對話中分流、回覆、檢索或統計工單,或自動處理客服後台作業。若只希望助理查看而不變更資料,請簽發唯讀權杖。
執行需求
以 stdio 本機程序執行,需從原始碼建置,要求 Node.js 20 或更新版本。需要 Tickiti API 權杖與 Tickiti 安裝實例的公開位址,透過 TICKITI_API_BASE 與 TICKITI_API_TOKEN 環境變數設定;可用 TICKITI_INSTANCES 設定多個實例。另需支援 MCP 的用戶端。
安裝前請注意
權杖的能力範圍是唯一的安全界線;寫入類工具可寄送郵件、刪除或合併工單、修改範本,以及建立或撤銷 API 權杖。僅在需要時授予寫入能力,優先使用唯讀權杖。工單內容、附件與郵件會送到 Tickiti 實例並經過模型;長內文與檔案可改用本機路徑傳入。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Tickiti,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

tickiti-mcp

An MCP (Model Context Protocol) server that exposes the Tickiti helpdesk API to AI assistants such as Claude. It is a thin shim over the Tickiti Public API v1 (/api/v1/...): each MCP tool forwards to a v1 endpoint, adding your bearer token and — for writes — an idempotency key. The token's abilities are the security boundary: the server only relays calls, it never widens them, so a read-only token gives a read-only assistant.

📖 Full documentation: https://www.tickiti.com/docs/topic/mcp_server/

Tools

The ticket tools have full, validated inputs; the rest of the API is reachable through two general tools, so the whole surface is available without a separate tool per endpoint.

Tickets

ToolAbilityPurpose
create_tickettickets:writeOpen a ticket (subject+content, template, or intervention), with assignee, priority, status and participants; is_public is required
respond_to_tickettickets:writePost a response; change status, hold, assignee, priority, queue, subject, participants; send_full_email for the whole reply by email
close_tickettickets:writeClose, optionally with a final reply and a resolution
edit_responsetickets:writeChange a response in place (whole body, find/replace, visibility) with no notification — or publish an internal note and notify
delete_responsetickets:writeSoft-delete a response
add_participants / remove_participantstickets:writeChange participants
delete_tickets / restore_tickettickets:writeDelete tickets (by number, or everything from one sender) and undo it
merge_ticketstickets:writeMerge two tickets (the older survives)
link_tickets / unlink_tickets / list_linked_ticketstickets:write / readThe Linked panel
move_responses / copy_responses / split_tickettickets:writeRepair a thread: move or copy responses, or split them off into a new linked ticket
change_originatortickets:writeChange who raised a ticket
delete_attachmenttickets:writeRemove one attachment (a malicious file, say), keeping a record of it
get_ticket / list_responsestickets:readA ticket's thread, participants and links; fields / max_body_chars keep long email threads small
get_responsetickets:readOne response by id
query_ticketstickets:readSearch tickets
query_responses / export_responsestickets:readResponses across tickets; counts and group-by tallies; NDJSON export to disk
get_attachment / download_attachmenttickets:readAttachment bytes (download streams any size to a file)
list_queues / list_teams / list_staff / list_resolutions / get_search_modestickets:readQueue names and settings, team keys, staff addresses, resolution categories, the search vocabulary

Settings, templates, mail, administration

ToolAbilityPurpose
list_perspectives / get_perspectivesettings:readSaved views, with conditions and sort orders
list_watchlistssettings:readWatchlists
list_stock_responses / get_stock_responsesettings:readStock responses (search, bodies)
create_stock_response / update_stock_response / delete_stock_responsesettings:writeEdit stock responses
get_template / search_templates / render_templatetemplates:readTemplates and FAQs; render one against data without sending
create_template / update_templatetemplates:writeEdit templates (updates change only the fields given)
upload_template_imagetemplates:write / settings:writeUpload an image for a template or stock response
send_email / search_sent_mailmail:write / mail:readSend mail; search what was sent
list_api_tokens / create_api_token / update_api_token / revoke_api_tokenadministration:*API keys (a token only grants abilities it holds)
list_workflowworkflow:readResolution categories, interventions, escalations
run_reportreports:readAnalytics reports
get_token_infoanyWhat this token can do: abilities, owner roles, plan
list_instances—The Tickiti instances configured (see below)
list_endpoints—Every API endpoint, with abilities, path and body parameters
tickiti_callper endpointCall any /api/v1 endpoint by family and action

For anything beyond the named tools (mail, templates, workflow writes, administration, supervisor), the assistant uses list_endpoints to discover the action, then tickiti_call to run it — covering all of the v1 API.

Requirements

  • Node.js 20 or newer
  • A Tickiti API token, minted from Administration → API keys, scoped to the abilities you want the assistant to have
  • An MCP-capable client — e.g. Claude Code or the Claude desktop app

Install

bash
git clone https://github.com/tickiti/tickiti-mcp.gitcd tickiti-mcpnpm installnpm run build

The built server is dist/server.js.

Configure

The server reads two environment variables (it fails fast on startup if either is missing):

VariablePurpose
TICKITI_API_BASEYour Tickiti install's public address, no trailing slash — e.g. https://support.example.com. The server appends /api/v1/….
TICKITI_API_TOKENThe bearer token. Its abilities determine what the assistant can do.

More than one instance

To reach several Tickiti installs from one server (production and staging, say), add TICKITI_INSTANCES: JSON, or the path of a JSON file, mapping a name to { "base", "token" }. The TICKITI_API_BASE / TICKITI_API_TOKEN pair stays the default instance, named by TICKITI_INSTANCE_NAME (default default).

bash
TICKITI_INSTANCE_NAME=productionTICKITI_INSTANCES='{"staging": {"base": "https://staging.example.com", "token": "…"}}'

Every tool then takes an optional instance argument; list_instances shows the names.

Use with Claude Code

bash
claude mcp add tickiti \  --env TICKITI_API_BASE=https://support.example.com \  --env TICKITI_API_TOKEN=YOUR_TICKITI_API_TOKEN \  -- node /absolute/path/to/tickiti-mcp/dist/server.js

Confirm with claude mcp list (or /mcp in a session). Remove with claude mcp remove tickiti.

Other MCP clients configure servers in their own settings file, but the shape is the same: run node /absolute/path/to/tickiti-mcp/dist/server.js as a stdio server with TICKITI_API_BASE and TICKITI_API_TOKEN set in its environment.

Permissions & security

The server adds no permissions of its own. Every call runs as the staff user the token belongs to, gated by the token's abilities — exactly as a direct API call would be. To limit what an assistant can do, mint a narrowly-scoped token:

  • A read-only token (e.g. tickets:read, reports:read) gives an assistant that can look but not change anything.
  • Grant write abilities only for the families the assistant needs to act on.
  • If a call is refused, the server reports the reason (missing ability, role or plan).

The ticket-writing tools send an idempotency key with every call, so a retried request never creates a duplicate ticket or response.

Long bodies can be given as content_path (a local file) instead of content, and files and images always go by path: the server reads them, so their bytes never pass through the model.

How it works

FileRole
src/client.tsRequest core: base URL, bearer auth, idempotency, error normalisation
src/result.tsMaps an API result into the MCP tool-result envelope
src/manifest.tsHelpers over the generated route manifest (lookup, path building)
src/generated/manifest.tsAuto-generated route table (do not edit)
src/tools/tickets.tsTicket writes — verified input schemas
src/tools/ticket-reads.tsTicket, response and attachment reads
src/tools/ticket-operations.tsDelete, merge, link, move, originator, attachment delete, lookups
src/tools/settings-writes.tsStock responses and templates
src/tools/admin.tsMail, template rendering and images, perspectives, API keys, instances
src/tools/reads.tsNamed read tools (settings / workflow / reports)
src/tools/generic.tslist_endpoints + tickiti_call
src/param-hints.tsBody parameters list_endpoints shows for endpoints without a dedicated tool
src/server.tsEntry point: registers tools, connects the stdio transport
scripts/build-manifest.mjsRegenerates the manifest from the Tickiti route table

Maintainers

src/generated/manifest.ts is generated from Tickiti's own route table (php artisan route:list --json), so abilities, roles, plan gates and path params are never hand-maintained. Regenerate against a Tickiti checkout after the API changes:

bash
TICKITI_DIR=/path/to/tickiti npm run manifest

There is an end-to-end sweep over every endpoint in tests/all-paths.mjs (npm run test:paths, needs a base URL and a full-ability token against a scratch instance), and an offline check of the tool registration in tests/smoke-tools.mjs (npm run build && node tests/smoke-tools.mjs).

Several tools call endpoints added to Tickiti in October 2026. Against an older install they return 404; list_endpoints describes the newest API.

License

MIT © Oxenic

來源:README.md,提交 e0d53b6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.2.0最新Oct 4, 2026
  2. v0.1.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分