@rover-engineering/logio-mcp
v0.1.2
Published
MCP server wrapping the Logio worklog API for Claude Code.
Readme
logio-mcp
A minimal MCP server that wraps the Logio (jira_dashboard_be) worklog API so you can query Jira worklog data from Claude Code in natural language.
Example prompts once installed:
- "Give me Raza's worklogs from last week on LGO"
- "How many hours did the team log on COL this sprint?"
- "Show me all worklogs over 4 hours in the last 14 days"
Tools exposed
| Tool | Wraps | Use when |
|---|---|---|
| get_worklogs | GET /api/v1/worklog | You want individual entries (who, what, when, comment). |
| get_worklog_summary | GET /api/v1/worklog/summary | You want totals and per-issue rollups. |
Both accept the same optional filters: start_date, end_date, worklogAuthor, issueAssignee, project, status, priority, sprint, search_query, min_hours, max_hours. Multi-value filters take comma-separated strings (e.g. project: "LGO,COL").
Defaults to the last 30 days when no dates are given.
Requirements
- Node.js 20+
- A Logio API token (
lgo_...) — see Getting a token below - Network access to
https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net
Getting a token
You can generate your own API token from the Logio UI — no admin involvement needed.
- Log in to Logio.
- Open the Settings menu in the sidebar and click API Tokens.
- Click Generate Token, give it a name (e.g. "Claude Code — my laptop"), and click Generate.
- Copy the token immediately — it starts with
lgo_and is only shown once. Store it somewhere safe like a password manager. - Click I've saved it, dismiss this.
The token is bound to your currently active Jira account, so the data you can see through the MCP server is exactly the data you can see in the Logio dashboard — no more, no less.
You can revoke a token at any time from the same screen. Revoked tokens stop working immediately.
Setup
No clone, no install. The package runs straight from npm via npx.
Note on
LOGIO_BASE_URL: Logio's web UI lives athttps://logio.rover-engineering.ai, but the API is currently served from a separate Azure App Service. Use the long Azure URL shown in the examples below forLOGIO_BASE_URL— the SPA URL returns 404 for/api/v1/*routes. A future release will move the API behind the cleanlogio.rover-engineering.aidomain; you'll updateLOGIO_BASE_URLwhen that ships.
Option A — claude mcp add (recommended)
macOS
claude mcp add logio \
--env LOGIO_BASE_URL=https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net \
--env LOGIO_API_TOKEN=lgo_your_token_here \
-- npx -y @rover-engineering/logio-mcpWindows (PowerShell)
claude mcp add logio `
--env LOGIO_BASE_URL=https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net `
--env LOGIO_API_TOKEN=lgo_your_token_here `
-- npx -y @rover-engineering/logio-mcpHeads up — flag syntax can vary between Claude Code versions. Some accept
--env, others only-e. If the command errors withmissing required argument, runclaude mcp add --helpand use whatever flag your version shows. The-eflag is also greedy (it can eat the server name or command as another env var), so put the server name immediately afteraddand use--to separate env flags from the command.
If the flag-based form keeps fighting you — use add-json
claude mcp add-json takes the whole config as one JSON string, which sidesteps all the flag-parsing edge cases.
macOS:
claude mcp add-json logio '{
"command": "npx",
"args": ["-y", "@rover-engineering/logio-mcp"],
"env": {
"LOGIO_BASE_URL": "https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net",
"LOGIO_API_TOKEN": "lgo_your_token_here"
}
}'Windows (PowerShell):
claude mcp add-json logio '{\"command\":\"npx\",\"args\":[\"-y\",\"@rover-engineering/logio-mcp\"],\"env\":{\"LOGIO_BASE_URL\":\"https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net\",\"LOGIO_API_TOKEN\":\"lgo_your_token_here\"}}'Note the escaped quotes (\") — PowerShell requires it.
Option B — edit the Claude Code settings file directly
- macOS:
~/.claude/settings.json - Windows:
%USERPROFILE%\.claude\settings.json
Add a mcpServers entry:
{
"mcpServers": {
"logio": {
"command": "npx",
"args": ["-y", "@rover-engineering/logio-mcp"],
"env": {
"LOGIO_BASE_URL": "https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net",
"LOGIO_API_TOKEN": "lgo_your_token_here"
}
}
}
}The -y flag auto-confirms the npx download prompt. After saving, restart Claude Code.
First run is slow. The first time
npxruns the package on your machine, it downloads it from npm. After that it's cached and starts instantly.
Verify it's wired up
After registering, list the servers Claude Code knows about:
claude mcp listYou should see logio in the output. Then open Claude Code and ask:
List the MCP tools you have available.
You should see get_worklogs and get_worklog_summary. If not, restart Claude Code so it picks up the new config.
Then try a real query:
Use the logio MCP server to fetch a worklog summary for the last 7 days.
Claude will call get_worklog_summary and return the JSON.
Smoke test (optional — for debugging)
If something isn't working and you want to test the server in isolation, run it directly from a terminal with env vars set.
macOS
export LOGIO_BASE_URL="https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net"
export LOGIO_API_TOKEN="lgo_your_token_here"
npx -y @rover-engineering/logio-mcpWindows (PowerShell)
$env:LOGIO_BASE_URL="https://pmrailswebapp-bxgydpd8fecbdxd8.westeurope-01.azurewebsites.net"
$env:LOGIO_API_TOKEN="lgo_your_token_here"
npx -y @rover-engineering/logio-mcpThe process will sit waiting on stdin with no output. That's correct — MCP servers speak over stdio and expect a client to connect. Press Ctrl+C to exit. If you see logio-mcp: missing env vars instead, your env vars aren't set in this shell.
To verify the backend is reachable and the token works, hit it with curl in another shell with the same env vars set:
macOS
curl -H "Authorization: Bearer $LOGIO_API_TOKEN" "$LOGIO_BASE_URL/api/v1/worklog/summary"Windows (PowerShell)
curl.exe -H "Authorization: Bearer $env:LOGIO_API_TOKEN" "$env:LOGIO_BASE_URL/api/v1/worklog/summary"(Use curl.exe explicitly on Windows — PowerShell's built-in curl alias points at Invoke-WebRequest, which handles headers differently.)
You should get JSON back. 401 means bad token; connection error means wrong base URL or backend down.
Troubleshooting
logio-mcp: missing env vars— env vars didn't reach the process. If using Claude Code config, double-check theenvblock has both keys. If running manually, set them in the current shell.- 404 / HTML response instead of JSON — you're pointing at the SPA frontend (
https://logio.rover-engineering.ai) instead of the API. Use the long Azure App Service URL shown in the setup examples above. ✗ Failed to connectinclaude mcp list— Claude Code spawned the server but it exited immediately. Usually the same root cause as the missing env vars bullet. Runclaude mcp get logioto inspect what's actually stored, and re-register if theenvblock is missing or malformed.401 Invalid API token— token typo, or token was revoked. Generate a new one from Settings → API Tokens in the Logio UI.ECONNREFUSED/ DNS errors —LOGIO_BASE_URLis wrong, or you're offline.- Claude Code doesn't see the tools — restart Claude Code after editing
settings.json. Runclaude mcp listto confirm registration. command not found: claude— Claude Code CLI isn't on your PATH. Use Option B (settings.json) instead.npxhangs forever on first run — slow network or npm registry issues. Trynpm install -g @rover-engineering/logio-mcponce instead, then switchcommandfromnpxtologio-mcp(no args needed).- Need to redo a registration?
claude mcp remove logiodeletes it, then re-add.claude mcp get logioshows what's currently stored — useful for confirming env vars made it in.
Changelog
0.1.2
- README: point
LOGIO_BASE_URLat the Azure App Service URL. The SPA domain (logio.rover-engineering.ai) doesn't serve/api/v1/*routes and was returning 404 for everyone.
0.1.1
- Republished under
@rover-engineeringscope after the npm org rename.@npmrover/logio-mcpunpublished.
0.1.0
- Initial release.
get_worklogsandget_worklog_summarytools.
Development (backend devs only)
If you're working on jira_dashboard_be itself and want to test against your local Rails app, run from a local clone instead of npm:
git clone https://github.com/Rover-Engineering/jira_dashboard_be
cd jira_dashboard_be/logio-mcp
npm install
LOGIO_BASE_URL=http://localhost:3001 \
LOGIO_API_TOKEN=<token generated via rails console> \
node index.jsGenerate a local token either via the local UI (Settings → API Tokens while logged into your local Logio frontend), or via Rails console:
# rails console
user = User.first
ja = user.active_jira_account
token = ApiToken.create!(user: user, jira_account: ja, name: "local dev")
puts token.tokenTokens are scoped to the database they were created in — a prod token won't authenticate against your local Rails app, and vice versa. If you switch
LOGIO_BASE_URLbetween local and prod, switch the token too.
Publishing a new version
Maintainers only.
- Bump
versioninpackage.json(semver: patch for fixes, minor for new tools/features). - Add an entry at the top of the Changelog section above.
- From the
logio-mcp/directory:
npm publish- You'll be prompted for your npm 2FA code.
- Existing users running
npx -y @rover-engineering/logio-mcpwill automatically pick up the new version on next launch — they don't need to do anything.
npm doesn't allow republishing the same version, so always bump before publishing.
Security
- The token is plaintext in your Claude Code config. Treat that file like a password manager export.
- Don't commit
.envor any file containing a reallgo_...token..gitignorecovers.envby default. - If your token leaks, go to Settings → API Tokens in Logio and click Revoke next to it immediately, then generate a fresh one.
