MCP Server
in progress
Jeff Vermeire
Develop an MCP server for agentic workflows. As more and more work moves toward AI-centric development and processing, agents are used extensively to automate and speed tasks. An MCP server would allow code editors like Cursor and Windsurf to directly interface with Sunsama and automatically manage tasks and schedules based on how and when tasks are completed. As more products move into agentic workflows, and more tools provide their own MCP servers, Sunsama is going to need this in order to keep up/stay ahead of other tools.
Michael Cage (Private)
Feature Request: Expose Timer / Time Spent via MCP
One of the most valuable AI use cases for us is seeing the relationship between ACTUAL time spent on a task and a) the estimate, and b) the category of task being worked on. But I can't find anyway to access the actual time worked -- or, alternatively, the actual timebox that the task fit inside of prior to completion.
Are we missing something or is this not exposed in the MCP?
If it isn't, can this be added? This is actually the "killer feature" that keeps us on Sunsama, but having it in the MCP is critical to make it all work.
Thanks!
Chi Zhang
Feature Request: Expose channel list and hierarchy via MCP
Hi Sunsama team, loving the MCP server, it's very useful!
One thing I ran into: there is currently no way to fetch the list of channels (or their hierarchy) through MCP. The only way to discover which channels a user has is to fetch tasks for a given day and extract the channel strings from each task — which means agent only see channels that happen to have tasks on that specific day, and you get no hierarchy information.
What I would love to see:
- A sunsama://channelsresource (or similar) that returns the full list of a user's channels, ideally with parent/child relationships so the hierarchy (e.g., personal > study, personal > travel) is preserved.
A dedicated channels resource would make it straightforward to give an agent a better view of the tasks and channels.
Thanks for the great work on the MCP — looking forward to seeing it mature!
Mark Grandjean
This is amazing. It would be great to be able to add a url so that tasks can be imported / linked to todoist tasks
Zane Mccaig
Mark Grandjean: This is very much on our radar. Thanks for the feedback. FYI for the time being we are recommending users to tell their LLM to add the URL into the notes field while creating the task
S
Søren Knudsen
Feature request: expose streams/channels list
Currently the official MCP server has no way to enumerate streams (channels). add_task_to_channel accepts a channel name and does fuzzy matching, but consumers — especially LLM agents — can't see what channels exist to match against. The result is hallucinated names, silent fuzzy mismatches, and workflows that have to reach for community MCP servers just to discover the catalog.
Use cases blocked or degraded:
Channel assignment by agents. Without a stream list, an LLM has to guess channel names from context. With it, the agent can pick a precise match instead of relying on fuzzy lookup (e.g. "personal" could match "Personal projects" or "personal life" — no way to know which).
Dashboards and digests grouped by channel. Rendering channel-grouped task views needs names, parent categories, and colors. Without the catalog, the data is there but the labels aren't.
Caching stream IDs for repeat use. Workflows that want to assign tasks by exact stream ID currently have to discover IDs out-of-band, either via a community MCP server or by manual copy-paste from the UI.
Suggested surface:
A read-only resource fits naturally alongside the existing ones:
sunsama://streams
Returns an array of stream objects with at minimum:
- _id
- streamName
- category and categoryStreamId (for the category → sub-stream hierarchy)
- color
- personal / private flags
Several community MCP servers already expose this shape via a get-streams tool, and it has held up well in practice.
Why it should be a small change:
The data already powers the Sunsama UI's channel picker. Read-only, idempotent, fits the existing resource pattern (sunsama://me, sunsama://backlog/folders, etc.). No design tradeoffs around mutation or filtering to litigate.
Thanks for the active work on this server — the recent additions have been useful.
Zane Mccaig
Søren Knudsen: This is fair. We settled on the fuzzy search stuff as a workaround to avoid enumeration of an unbounded set like the channels. Realistically in practice it would be a pretty small set though so having a way to enumerate them seems reasonable. Another option we could do would be to create a "search channel" tool so that LLMs can search for semantically similar channels before assigning them. In practice that would effectively solve the issue regardless of the number of channels.
Either way this should definitely be something we make possible. Thanks for your input.
S
Søren Knudsen
Zane Mccaig Great! I think the search approach would work well for simpler cases. However, having built Claude skills (yes, plural) around unofficial Sunsama MCP's, I do see value in being able to get all current channels.
For example, when starting chat sessions that appear to be real tasks, I have setup Claude to load a skill (using "Instructions for Claude"). The skill then uses AskUserQuestion to ask whether I want to start the Sunsama timer on a task from today/a new task with a context and time suggestion. The context only works because the skill already have the channel knowledge so doesn't need another MCP round-trip.
Anyway, thanks for responding and curious to see where this might land.
M
Morten Pettersen
I have tested the MCP heavily with n8n, and it is working perfectly. It works well with Grok and Mistral, and it's simply awesome when used with Claude. However, when trying to use it with Gemini, I get this error:
[GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse: [400 Bad Request] Invalid JSON payload received. Unknown name "type" at 'tools[0].function_declarations[3].parameters.properties[1].value': Proto field is not repeating, cannot start list. Invalid JSON payload received. Unknown name "type" at 'tools[0].function_declarations[13].parameters.properties[1].value': Proto field is not repeating, cannot start list. [{"@type":"type.googleapis.com/google.rpc.BadRequest","fieldViolations":[{"field":"tools[0].function_declarations[3].parameters.properties[1].value","description":"Invalid JSON payload received. Unknown name \"type\" at 'tools[0].function_declarations[3].parameters.properties[1].value': Proto field is not repeating, cannot start list."},{"field":"tools[0].function_declarations[13].parameters.properties[1].value","description":"Invalid JSON payload received. Unknown name \"type\" at 'tools[0].function_declarations[13].parameters.properties[1].value': Proto field is not repeating, cannot start list."}]}]
It happens whenever the Sunsama MCP is connected to the AI node. Whether it's used or not seems to be irrellevant.
Zane Mccaig
Morten Pettersen: hmm that is odd. It sounds like something in n8n might not be converting the tools to gemini's expected format.
One thing I did notice that gave me some pause is that your url says 'alt=sse' which might not be relevant at all but it is worth noting that our MCP server does not support sse. I think that would only really cause a problem is n8n was getting geminit to connect directly to our MCP rather than passing the tools into it (not really sure if that is even possible or not).
It is also worth mentioning that we use Gemini for Sunny with our MCP server so we do know that it works well through our setup. We use the AI sdk from vercel FYI https://ai-sdk.dev/.
Michael Crinnion
Has anybody got this MCP server working successfully with N8N? I've been able to add the credential and authorise via OAuth but I'm struggling creating or listing any tasks. I'm getting a 404. Am I missing some documentation somewhere?
Zane Mccaig
Michael Crinnion: 404 sounds like a pretty unexpected error since MCP tools generally return plain english errors not status code errors. Can you reach out to support either in the in-app chat or at support@sunsama.com and share your network logs. We can try and help you debug the issue.
Michael Crinnion
Zane Mccaig I agree. Especially as the oauth is going through. I've given up with n8n for now. I have managed to get it working with OpenWebUI but the authentication doesn't stick and I end up going through the process every time I want to use it. Likely something in my setup but equally not having this issue with other MCP servers. I'll send full details via email when we back at work. Thanks 🙏☀
Zane Mccaig
Michael Crinnion I wonder if that OpenWebUI issue is because it is not properly picking up the new refresh tokens after refreshing the access token the first time. We rotate the refresh token after each refresh so that a leaked refresh token is less risky. They should pick up the new token but if they have not implemented that on their side it would act as you say.
Stephen Gardner
MCP is working well. Any option for an outbound webhook when a task is completed, moved, a comment is added, etc.? My AI agent can now create and manage tasks and look things up, but there isn't a way to trigger a response when something happens in Sunsama to complete the loop.
Zane Mccaig
Stephen Gardner we do not have any webhooks setup but we do technically support websocket transports. Websocket transports did not really pick up traction or make it into the MCP spec but there are some implementations floating around for them. You could also write a custom websocket transport as well.
We will likely retain support for the websocket transport for a while yet since we use it for our voice version of Sunny at the moment. No guarantees that it will remain in there though since the MCP spec has moved in another direction.
Kat Zorz
Does this work with Claude Cowork? I've been trying to set it up but it can't seem to connect...
Zane Mccaig
Kat Zorz: It should work yes. Please checkout our help page and let us know if those solutions do not work for you https://help.sunsama.com/docs/integrations/mcp/#claude-proteam
PS - We have submitted an application to be included in the Claude and ChatGPT app stores so that those two can become one click installs. Both of those providers are pretty backlogged though so we have to wait.
Kat Zorz
Zane Mccaig amaze amaze amaze! it worked now thank you!
J
Jeremy Seekamp
MCP server is working great! However, editing the notes on a task would be really helpful. Icing on top would be the ability to write to daily shutdown notes.
C
Cole
Jeremy Seekamp just came back to say i have been absolutely loving it so far. and that being able to add text to existing tasks would be wild. My imagined use case would be as I do research / analysis in an AI tool, being able to say "okay add this to my task notes for my meeting with James" would be very impactful.
Zane Mccaig
Cole: Jeremy Seekamp Adding the ability to edit notes is definitely on our backlog. It is a bit of a special case since notes support rich markdown and can be much larger so we left it off initially.
Moshik Shechter
Zane Mccaig hi hi, any ETA for that? i am using the sunsama MCP and editing the notes of a task is a must! thanks
Zane Mccaig
Moshik Shechter Unfortunately we do not have an ETA at this time. It is on my list but there are a few things higher up the priority list so it is hard to say when it will get implemented.
C
Cole
I was successfully using the MCP server last week, however, now whenever I try to re-auth I get the following error:
{
error: "invalid_request",
error_description: "redirect_uri not allowed for this client"
}
I've tried wiping it and starting fresh, as well as going the bearer-token pathway as well to no avail - not sure what's going on to be honest :')
Zane Mccaig
Cole: Can you tell me what service you are using and or what the redirect uri is if you know it?
C
Cole
Zane Mccaig I'm using Claude Code, lemme send the details your way!
Zane Mccaig
Cole This issue should now be fixed. Thanks for reporting it.
C
Cole
Zane Mccaig Amazing! Thanks for such a quick fix!
Load More
→