SparrowDesk
Connect to SparrowDesk using MCP and manage your tickets, knowledge base and more.
README
SparrowDesk MCP Server
A Model Context Protocol (MCP) server for SparrowDesk. Connect AI assistants like Claude to your SparrowDesk account to read and manage tickets, contacts, Knowledge Base content, tags, companies, and team data.
Authentication is handled via OAuth — no API keys to manage. Your MCP client will open a browser window to log in with your SparrowDesk account the first time you connect.
Available Tools
Tools mirror the SparrowDesk Developer API. Knowledge Base collections and related endpoints require VIEW_COLLECTIONS and MANAGE_COLLECTIONS (included in the MCP default OAuth scope list). Other KB behavior may still depend on additional scopes or account features.
| Tool | Description |
|---|---|
| Account | |
get_me |
Current account information (subdomain, company, timezone, language) |
| Conversations | |
get_conversation |
Retrieve a conversation by ID |
list_conversations |
List conversations with optional filters |
create_conversation |
Create a new conversation/ticket |
update_conversation |
Update subject, status, priority, assignee, team, custom fields |
delete_conversation |
Delete a conversation |
list_conversation_replies |
List replies for a conversation |
add_conversation_reply |
Add a reply or internal note |
| Conversation fields | |
list_conversation_fields |
List ticket custom field definitions |
get_conversation_field |
Get one conversation field by ID |
create_conversation_field |
Create a custom conversation field |
update_conversation_field |
Update a conversation field |
| Contacts & companies | |
list_contacts |
List contacts (search, email, phone, pagination) |
get_contact |
Retrieve a contact by ID |
create_contact |
Create a contact |
update_contact |
Update a contact |
delete_contact |
Delete a contact |
bulk_create_contacts |
Bulk create contacts (returns job id) |
get_bulk_job_status |
Poll bulk contact job status |
list_companies |
List companies |
| Contact fields | |
list_contact_fields |
List contact field definitions |
| Members & tags | |
list_members |
List team members |
list_tags |
List tags |
| Knowledge Base | |
list_helpcenters |
List help centers |
list_collections |
List KB collections for a help center |
get_collection |
Get a collection with subcollections and articles |
create_collection |
Create a KB collection |
list_articles |
List articles for a help center |
get_article |
Get one article |
create_article |
Create an article (draft or publish) |
update_article |
Update an article draft / publish |
archive_article |
Archive an article |
Installing in Claude
Add to your claude_desktop_config.json:
{
"mcpServers": {
"sparrowdesk": {
"type": "http",
"url": "https://mcp.sparrowdesk.com/mcp"
}
}
}
Or with Claude Code:
claude mcp add --transport http sparrowdesk https://mcp.sparrowdesk.com/mcp
Installing in Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"sparrowdesk": {
"type": "http",
"url": "https://mcp.sparrowdesk.com/mcp"
}
}
}
Restart Cursor after saving. The SparrowDesk tools will appear in the Agent tool list. Cursor will open a browser window to complete the OAuth login with your SparrowDesk account.
Tool Reference
get_conversation
Fetch a single conversation by its numeric ID.
Parameters:
id(integer, required) — The conversation ID
list_conversations
List conversations with optional filters, sorting, and pagination.
Parameters:
starting_after(string, optional) — Pagination cursorper_page(integer, optional) — Items per page, 1–100 (default: 25)status(array, optional) — Filter by status:Open,Pending,Resolved,Closedpriority(array, optional) — Filter by priority:Low,Medium,High,Urgentassigned_to_member_id(array of integers, optional) — Filter by assigned agent IDsassigned_to_team_id(array of integers, optional) — Filter by assigned team IDsbrand_id(array of integers, optional) — Filter by brand IDsrequested_by_id(integer, optional) — Filter by requestor contact IDrequested_by_company(integer, optional) — Filter by requester contact company ID (intersects withrequested_by_idwhen both are set)sort_by(string, optional) —created_atorupdated_at(default:created_at)sort_order(string, optional) —ascordesc(default:desc)
update_conversation
Patch an existing conversation.
Parameters:
id(integer, required) — Conversation IDsubject,priority,status,assignee(email),team(string) — Optional updatescustom_fields(array, optional) —{ internal_name, value }(values as strings)
delete_conversation
Delete a conversation by ID.
Parameters:
id(integer, required)
list_conversation_replies
List replies for a conversation, with optional filtering and pagination.
Parameters:
id(integer, required) — The conversation IDstarting_after(string, optional) — Pagination cursorper_page(integer, optional) — Items per page, 1–100 (default: 25)type(string, optional) — Filter byINTERNAL_NOTEorREPLYsort_order(string, optional) —ascordesc(default:desc)
add_conversation_reply
Add a reply or internal note to a conversation.
Parameters:
id(integer, required) — The conversation IDreply_text(string, required) — The content of the reply messagetype(string, required) —REPLY(visible to customer) orINTERNAL_NOTE(agents only)
create_conversation
Create a new conversation/ticket in SparrowDesk.
Parameters:
subject(string, required) — Conversation subjectdescription(string, required) — Conversation descriptionrequested_by(string, required) — Email or phone number of the requesterpriority(string, optional) —Low,Medium,High, orUrgent(default:Medium)source(string, optional) —MailorCall(default:Call)status(string, optional) —Open,Pending,Resolved, orClosed(default:Open)brand_id(integer, optional) — Brand ID (uses account default if omitted)assignee(string, optional) — Agent email address to assign the conversation toteam_id(integer, optional) — Team ID to assign the conversation tocustom_fields(array, optional) — Array of{ internal_name, value }objects
Conversation field tools
list_conversation_fields—starting_after,per_page,is_active,is_defaultget_conversation_field—idcreate_conversation_field—name,type(single_line_text|multi_line_text|dropdown|number|date|email), optionalinternal_name,description,is_mandatory_on_close,field_options(required for dropdowns)update_conversation_field—idplus any ofname,description,is_active,is_mandatory_on_close,field_options
list_contacts
List contacts with filters (requires view contacts scope where enforced).
Parameters: search, requested_by_email, requested_by_phone, starting_after, per_page
delete_contact
Parameters: id (integer, required)
bulk_create_contacts / get_bulk_job_status
Bulk create accepts contacts: array of objects with optional first_name, last_name, email, phone, company_id, custom_fields. Response includes job_id. Poll get_bulk_job_status with job_id until completed or failed.
list_companies
Parameters: starting_after, per_page, domain (exact), name (exact)
create_contact
Create a new contact. Either email or phone must be provided.
Parameters:
first_name(string, required) — Contact's first namelast_name(string, optional) — Contact's last nameemail(string, optional) — Contact's email address (required if phone not provided)phone(string, optional) — Contact's phone number (required if email not provided)company_id(integer, optional) — ID of the company to associate withcustom_fields(object, optional) — Custom field key-value pairs
update_contact
Update an existing contact.
Parameters:
id(integer, required) — The contact ID to updatefirst_name(string, optional) — Contact's first namelast_name(string, optional) — Contact's last nameemail(string, optional) — Contact's email addressphone(string, optional) — Contact's phone numbercompany_id(integer, optional) — ID of the company to associate withblocked(boolean, optional) — Whether the contact is blockedcustom_fields(object, optional) — Custom field key-value pairs
get_contact
Fetch a single contact by its numeric ID.
Parameters:
id(integer, required) — The contact ID
list_contact_fields
Retrieve all contact fields defined in the account.
Parameters:
search(string, optional) — Search contact fields by namepage(integer, optional) — Page number for paginationlimit(integer, optional) — Results per page
list_members
Retrieve a paginated list of all team members in the account.
Parameters:
starting_after(string, optional) — Pagination cursorper_page(integer, optional) — Items per page, 1–100 (default: 25)
get_me
Retrieve current SparrowDesk account information (not a user profile).
Parameters: None
list_tags
Parameters: starting_after, per_page, search
Knowledge Base tools
Use list_helpcenters first to obtain helpCenterId. Collections and articles are scoped per help center and brand.
list_collections—helpCenterId(required); optionalpage,limit,collectionId,isRootget_collection—id; optionalpage,limitfor articlescreate_collection—name,helpCenterId,brandId; optionaldescription,parentCollectionIdlist_articles—helpCenterId(required); optionalpublished,draft,archived,page,limit,search,collectionIdget_article—idcreate_article—helpCenterId,brandId; optionaltitle,content(HTML),publish,collectionId,isPublic(publish flow per API docs)update_article—id; optionaltitle,content,collectionId(null to remove from collection),brandId,publish,isPublic,aiAgentEnabled,aiCopilotEnabledarchive_article—id
Local Development
See SETUP.md for local development instructions, environment variables, and Docker setup.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。