mcp server
VantaCore
Open-source, self-hosted Jira alternative — issue tracker, agile boards, sprints, docs with a local AI assistant and MCP server.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 22, 2026VantaCore
Status: beta. VantaCore is usable day to day, but APIs, database schema and UI can still change between releases, and there is no automated test suite yet. Don't run it as the only copy of data you can't afford to lose — back up the database.
Open-source, self-hosted Jira alternative — an issue tracker and agile project management tool (Scrum & Kanban) for software teams.
VantaCore puts tickets, boards, sprints, releases and documentation in one place, with a built-in AI assistant over your docs that runs entirely on your own hardware (no external AI service required). If you are looking for a free, open-source alternative to Jira, YouTrack, Linear or Redmine that you can run on your own server, VantaCore is built for exactly that.
Features
Planning & tracking
- Projects and sub-projects, with per-project issue types, statuses, workflows, custom fields and flags
- Tickets with hierarchy (parent/child), related tickets, assignees, tags, estimates and progress roll-up
- Boards, sprints (burndown, sprint report), releases and a cross-project roadmap
- Worklog with a start/stop timer, comments with @mentions, test cases, file attachments
- Full ticket history with previous-version view; full-text search across projects and tickets
Documentation
- Versioned platform and sub-project documentation with a Markdown editor (Mermaid diagrams supported)
- "Ask the docs": semantic search + answers generated by a local LLM via Ollama (pgvector embeddings)
Automation & integrations
- Automation engine (trigger → condition → action rules, with execution log)
- Outgoing webhooks with delivery log
- VCS integration — branches, commits and pull requests shown on the ticket
- CSV import / export and imports from external tools
- MCP server (
/api/mcp) — connect Claude or any other MCP client and work with VantaCore from an AI assistant, with exactly the permissions of the user who owns the token
Administration
- Roles with fine-grained permissions, audit log
- SSO: Microsoft Entra ID, Google, GitHub and generic OIDC
- Personal access tokens for scripts and integrations
- In-app notifications (instant or digest), realtime updates over WebSocket
Tech stack
| Part | Stack |
|---|---|
Api/ | Java 21, Spring Boot 3.3, PostgreSQL 16 + pgvector, Flyway, JWT |
Front/ | React 19, TypeScript, Vite, Tailwind CSS, shadcn/ui, Tiptap |
| AI | Ollama (bge-m3 embeddings, qwen2.5:3b-instruct generation — CPU-friendly) |
| Deploy | Docker Compose, Caddy (automatic HTTPS) for staging/production |
The backend follows hexagonal architecture / DDD with a custom command, query and event bus — see
Api/CLAUDE.md for the architecture guide.
Quick start (local development)
Requirements: Docker with Docker Compose and roughly 8 GB of free RAM (the local LLM runs on the CPU, no GPU needed). The first start downloads the Ollama models (a few GB), so the "ask the docs" feature becomes available only after that finishes.
git clone https://github.com/MateuszBochen/vantacore.git
cd vantacore
docker compose -f .deploy/docker/docker-compose.yml up -d
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| API | http://localhost:8083 |
| Swagger UI | http://localhost:8083/swagger-ui.html |
| pgAdmin | http://localhost:5050 |
Then open http://localhost:5173/registration and create the first administrator account (this works only once — after an admin exists, further users are created from the admin panel).
The dev stack runs the API with the dev Spring profile, which supplies public, insecure default
secrets and enables Swagger UI and debug logging. Never expose it to the internet.
The API container compiles and reloads the bind-mounted sources on change and exposes a remote debugger on
port 5005. To work on the frontend outside Docker:
cd Front
npm install
npm run dev # http://localhost:5173, talks to the API at http://localhost:8083
Deployment (staging / production)
.deploy/docker/docker-compose.staging.yml runs prebuilt images behind Caddy, which serves both the API
and the frontend on one domain and obtains a Let's Encrypt certificate automatically.
cd .deploy/docker
cp .env.staging .env.production # fill in real values (.env.production is gitignored)
./build.sh
docker compose -f docker-compose.staging.yml --env-file .env.production up -d
Configuration
The API refuses to start without the secrets below (outside the dev profile).
| Variable | Required | Description |
|---|---|---|
JWT_SECRET | yes | Signing key for login tokens — openssl rand -base64 48 |
CREDENTIAL_ENCRYPTION_KEY | yes | Encrypts stored secrets (SSO, VCS, webhooks, imports). Keep it stable — changing it makes stored secrets unreadable |
DOMAIN | yes | Public hostname Caddy gets the HTTPS certificate for |
CORS_ALLOWED_ORIGINS | yes | https://<DOMAIN> |
APP_PUBLIC_BASE_URL | no | Public API URL, used in VCS webhook URLs (default http://localhost) |
APP_FRONT_URL | no | Public frontend URL, used as the SSO redirect target |
JWT_EXPIRATION | no | Token lifetime in ms (default 3600000) |
SWAGGER_UI_ENABLED | no | true to expose Swagger UI (default false) |
OLLAMA_BASE_URL | no | Point to an external Ollama instance instead of the bundled one |
OLLAMA_EMBEDDING_MODEL / OLLAMA_GENERATION_MODEL | no | Override the models (changing the embedding model requires a migration + reindex) |
The compose file passes only the required variables to the API container — to set any of the optional
ones, add them to the environment: section of the api service in docker-compose.staging.yml.
Database migrations run automatically on startup (Flyway).
Upgrading and backups
Back up before every upgrade — migrations are forward-only.
# database
docker exec vantaCore-staging-db pg_dump -U vantacore vantacore > vantacore-$(date +%F).sql
# uploaded files live in .data-staging/storage/ — copy that directory as well
git pull
./build.sh
docker compose -f docker-compose.staging.yml --env-file .env.production up -d
Connecting an AI assistant (MCP)
VantaCore exposes an MCP server over Streamable HTTP:
| Endpoint | Tools |
|---|---|
/api/mcp | Every API operation as its own tool |
/api/mcp/compact | Three generic tools (list / describe / call operation) — for clients that struggle with many tools |
Create a personal access token in VantaCore and have the client send it as
Authorization: Bearer vc_pat_.... Every tool call runs as that user, with exactly their permissions.
For example, with Claude Code:
claude mcp add --transport http vantacore https://<DOMAIN>/api/mcp \
--header "Authorization: Bearer vc_pat_..."
Repository layout
Api/ Spring Boot backend
Front/ React frontend
.deploy/docker/ Docker Compose files (dev + staging), Caddyfile, image build script
Contributing
Contributions are welcome — please read CONTRIBUTING.md first. Contributors need to accept the Contributor License Agreement.
Bug reports and feature requests go to GitHub Issues.
Security
Please don't report security vulnerabilities in public issues. Use GitHub's private vulnerability reporting instead.
Support the project
VantaCore is developed in my free time. If it saves you a Jira subscription or you simply like it, you can support further development here:
Buy Me a Coffee works worldwide (cards, Apple Pay / Google Pay); buycoffee.to is the option for supporters in Poland (BLIK, Polish bank transfers).
Starring the repo ⭐ and reporting issues helps a lot too.
License
VantaCore is licensed under the GNU Affero General Public License v3.0 or later — see LICENSE, with additional terms in NOTICE. In short: if you run a modified version as a network service, you must publish its source, and the "Powered by VantaCore" attribution must stay visible in the UI.
The name "VantaCore" and its logo are not covered by the code license — see TRADEMARKS.md.
Copyright © 2026 Mateusz Bochen