[PR #2499] feat: add MCP server #8312

Open
opened 2026-04-20 18:08:45 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/go-vikunja/vikunja/pull/2499
Author: @HarryEMartland
Created: 3/28/2026
Status: 🔄 Open

Base: mainHead: mcp-server-integration


📝 Commits (10+)

  • 5ebd3cd adds basic mcp server for tasks
  • 1ce8cb7 fixes lint issues
  • 90a8721 removes option to hard code an api key
  • 0b5b060 adds tests
  • 79aa6b3 removes config reference
  • efb7ce6 use vikunja version for mcp
  • dff83f1 moves to same server as api
  • d46754c refactored mcp handlers and hacked oauth for client registration
  • 207b00d refactored oauth endpoints and adds rate limiting on the client endpoint
  • 96aea1d tidied up

📊 Changes

31 files changed (+2854 additions, -35 deletions)

View changed files

📝 config-raw.json (+15 -0)
📝 go.mod (+3 -0)
📝 go.sum (+6 -0)
📝 pkg/config/config.go (+8 -3)
pkg/mcp/config.go (+31 -0)
pkg/mcp/handler/create.go (+98 -0)
pkg/mcp/handler/create_test.go (+142 -0)
pkg/mcp/handler/delete.go (+112 -0)
pkg/mcp/handler/delete_test.go (+54 -0)
pkg/mcp/handler/helper.go (+136 -0)
pkg/mcp/handler/read_all.go (+100 -0)
pkg/mcp/handler/read_all_test.go (+111 -0)
pkg/mcp/handler/read_one.go (+107 -0)
pkg/mcp/handler/read_one_test.go (+129 -0)
pkg/mcp/handler/update.go (+97 -0)
pkg/mcp/handler/update_test.go (+65 -0)
pkg/mcp/handlers.go (+462 -0)
pkg/mcp/handlers_test.go (+515 -0)
pkg/mcp/server.go (+71 -0)
pkg/migration/20260401221453.go (+48 -0)

...and 11 more files

📄 Description

I have been playing round in how to get Vikunja into my agents e.g zeroclaw (like openclaw). Rather than building an integration into the agent or using a 3rd party MCP tool which I don't really trust I thought it would be good if Vikunja supported this natively.

The server is disabled by default and runs on a separate port and uses the existing auth tokens. Happy to take feedback on this.

No worries if this is not wanted I have learnt a fair bit along the way.

Further improvements could be made in the future to support other actions. I thought basic task management would be a good start.

Future Enhancements

  • Add more tools for models
  • Define response schema
  • Filter by index-able fields

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/go-vikunja/vikunja/pull/2499 **Author:** [@HarryEMartland](https://github.com/HarryEMartland) **Created:** 3/28/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `mcp-server-integration` --- ### 📝 Commits (10+) - [`5ebd3cd`](https://github.com/go-vikunja/vikunja/commit/5ebd3cd72a4a83a6d1cd22d1421f1da8caa532f0) adds basic mcp server for tasks - [`1ce8cb7`](https://github.com/go-vikunja/vikunja/commit/1ce8cb76da9f0eb9693e5027baa9bfbd4b46a366) fixes lint issues - [`90a8721`](https://github.com/go-vikunja/vikunja/commit/90a872116cfd7e6aa9089cb3262e89dd34e98658) removes option to hard code an api key - [`0b5b060`](https://github.com/go-vikunja/vikunja/commit/0b5b060f4dce17c1b070361343ffeea9004e933e) adds tests - [`79aa6b3`](https://github.com/go-vikunja/vikunja/commit/79aa6b358ce44ded869da6cc02a4433f4eab20dc) removes config reference - [`efb7ce6`](https://github.com/go-vikunja/vikunja/commit/efb7ce6c78c3fba1abb7d3747b9fe8c13c1da996) use vikunja version for mcp - [`dff83f1`](https://github.com/go-vikunja/vikunja/commit/dff83f1cb9307e3d6561f131d6740091f40a8b6c) moves to same server as api - [`d46754c`](https://github.com/go-vikunja/vikunja/commit/d46754c4d5eeb2f7b2e051019e16d9ea2fb76b7e) refactored mcp handlers and hacked oauth for client registration - [`207b00d`](https://github.com/go-vikunja/vikunja/commit/207b00ddda1a5657b738f32df5b83cfec829ae47) refactored oauth endpoints and adds rate limiting on the client endpoint - [`96aea1d`](https://github.com/go-vikunja/vikunja/commit/96aea1d402b9cad166a96b62b87f697bf7fae460) tidied up ### 📊 Changes **31 files changed** (+2854 additions, -35 deletions) <details> <summary>View changed files</summary> 📝 `config-raw.json` (+15 -0) 📝 `go.mod` (+3 -0) 📝 `go.sum` (+6 -0) 📝 `pkg/config/config.go` (+8 -3) ➕ `pkg/mcp/config.go` (+31 -0) ➕ `pkg/mcp/handler/create.go` (+98 -0) ➕ `pkg/mcp/handler/create_test.go` (+142 -0) ➕ `pkg/mcp/handler/delete.go` (+112 -0) ➕ `pkg/mcp/handler/delete_test.go` (+54 -0) ➕ `pkg/mcp/handler/helper.go` (+136 -0) ➕ `pkg/mcp/handler/read_all.go` (+100 -0) ➕ `pkg/mcp/handler/read_all_test.go` (+111 -0) ➕ `pkg/mcp/handler/read_one.go` (+107 -0) ➕ `pkg/mcp/handler/read_one_test.go` (+129 -0) ➕ `pkg/mcp/handler/update.go` (+97 -0) ➕ `pkg/mcp/handler/update_test.go` (+65 -0) ➕ `pkg/mcp/handlers.go` (+462 -0) ➕ `pkg/mcp/handlers_test.go` (+515 -0) ➕ `pkg/mcp/server.go` (+71 -0) ➕ `pkg/migration/20260401221453.go` (+48 -0) _...and 11 more files_ </details> ### 📄 Description I have been playing round in how to get Vikunja into my agents e.g zeroclaw (like openclaw). Rather than building an integration into the agent or using a 3rd party MCP tool which I don't really trust I thought it would be good if Vikunja supported this natively. The server is disabled by default and runs on a separate port and uses the existing auth tokens. Happy to take feedback on this. No worries if this is not wanted I have learnt a fair bit along the way. Further improvements could be made in the future to support other actions. I thought basic task management would be a good start. **Future Enhancements** - [ ] Add more tools for models - [ ] Define response schema - [ ] Filter by index-able fields --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-20 18:08:45 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#8312