SparrowDesk
OfficialSparrowDesk 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 | |
| Current account information (subdomain, company, timezone, language) |
Conversations | |
| Retrieve a conversation by ID |
| List conversations with optional filters |
| Create a new conversation/ticket |
| Update subject, status, priority, assignee, team, custom fields |
| Delete a conversation |
| List conversations with their replies inlined in one call |
| List replies for a conversation |
| Add a reply or internal note |
Conversation fields | |
| List ticket custom field definitions |
| Get one conversation field by ID |
| Create a custom conversation field |
| Update a conversation field |
Contacts & companies | |
| List contacts (search, email, phone, pagination) |
| Retrieve a contact by ID |
| Create a contact |
| Update a contact |
| Delete a contact |
| Bulk create contacts (returns job id) |
| Poll bulk contact job status |
| List companies |
| Retrieve a company by ID |
| Create a company |
| Update a company |
Contact fields | |
| List contact field definitions |
Members & tags | |
| List team members |
| List tags |
Knowledge Base | |
| List help centers |
| List KB collections for a help center |
| Get a collection with subcollections and articles |
| Create a KB collection |
| List articles for a help center |
| Get one article |
| Create an article (draft or publish) |
| Update an article draft / publish |
| Archive an article |
Related MCP server: swsd-mcp
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/mcpInstalling 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)
list_conversations_with_replies
List conversations with their replies inlined in a single call — the same filters as list_conversations, plus reply controls. Root pages / total_count apply to conversations only; each row carries a replies object shaped like list_conversation_replies.
Parameters:
starting_after(string, optional) — Cursor for conversation list paginationper_page(integer, optional) — Conversations per page, 1–20 (default: 20)replies_per_page(integer, optional) — Replies per conversation, 1–50 (default: 50)replies_sort_order(string, optional) — Reply sort bysent_at:ascordesc(default:desc)type(string, optional) — Filter replies byINTERNAL_NOTEorREPLYstatus,priority,assigned_to_member_id,assigned_to_team_id,brand_id,requested_by_id— Same conversation filters aslist_conversationshandled_by_ai_agent(boolean, optional) — Filter by whether the conversation was handled by the AI agentsort_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)
get_company
Parameters: id (integer, required)
create_company
Create a new company.
Parameters:
name(string, required) — Company namedomain(string, optional) — Lowercase domain likeexample.comaddress(string, optional) — Company addressnotes(string, optional) — Free-form notes
update_company
Update an existing company. At least one field must be provided.
Parameters:
id(integer, required) — The company ID to updatename,domain,phone,address,notes— Optional updates
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
Privacy Policy
This server proxies requests to the SparrowDesk API on behalf of the signed-in user. It stores no ticket, contact, or Knowledge Base content — only in-memory OAuth session state (access and refresh tokens), which is discarded when the process restarts. What the server can read or write is bounded by the permissions of the SparrowDesk account you sign in with, and every action is recorded against your user in SparrowDesk.
Data collection, storage, retention, third-party sharing, and contact details are covered in the SparrowDesk Privacy Policy. Use of SparrowDesk is governed by the Terms of Service.
Support
Questions or issues: developer.sparrowdesk.com/mcp, or open an issue on this repository.
Local Development
See SETUP.md for local development instructions, environment variables, and Docker setup.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseAqualityDmaintenanceAn MCP server that lets AI assistants search and read support tickets from Jitbit Helpdesk. Works with both SaaS and on-premise installations.Last updated3572MIT- AlicenseAqualityAmaintenanceMCP server for SolarWinds Service Desk (SWSD/Samanage) enabling reading and modifying tickets, comments, knowledge-base articles, and more via each user's own API token.Last updated372143MIT
- AlicenseBqualityCmaintenanceEnables to interact with Re:lation support tickets via MCP. Allows searching, updating, replying to tickets, and managing customers and internal records.Last updated1124MIT
- Alicense-qualityDmaintenanceProvides a standard MCP interface for Freshdesk helpdesk operations, including ticket lifecycle management, draft/send replies and notes, contact lookup, and agent/group discovery.Last updatedMIT
Related MCP Connectors
Freshdesk MCP Pack — helpdesk ticket and contact management via Freshdesk API v2.
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
Zendesk MCP Pack — tickets, users, organizations via OAuth.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sparrowdesk/sparrowdesk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server