{"_id":"@diegotsi/flint-mcp","_rev":"4-db643f5f0493108c9ec5bce3a7876b86","name":"@diegotsi/flint-mcp","dist-tags":{"latest":"1.3.1"},"versions":{"1.1.0":{"name":"@diegotsi/flint-mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","bug-tracking","flint"],"_id":"@diegotsi/flint-mcp@1.1.0","maintainers":[{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"}],"bin":{"flint-mcp":"dist/index.js"},"dist":{"shasum":"b407cd56bb10b2a92eece4267c5f3b79ab47556b","tarball":"https://registry.npmjs.org/@diegotsi/flint-mcp/-/flint-mcp-1.1.0.tgz","fileCount":4,"integrity":"sha512-gLvotkwl7PpjPDIAfUG5W6dGHgnWv4DYwg6AUbnwGCsxQ3zcPhKi5B8hfbhc8otS1tYdO6axYjaPY+jviwP4hQ==","signatures":[{"sig":"MEYCIQC9R33DEgFbPdMDPv1LFCsxHXmbbKIEa6yf3/ZU/t6e8QIhAK0uQs0NH4iaKp2skt3ELx1UN72vBBT5vSHwX/auhcC8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76052},"type":"module","gitHead":"29f3abdd4316a93e0c4677c0e0bb9e40de3f9c7b","scripts":{"dev":"tsx src/index.ts","build":"tsup"},"_npmUser":{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"},"_npmVersion":"10.8.2","description":"Flint MCP server — list bugs, suggest fixes, triage issues and pull analytics from your editor via the Model Context Protocol.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.4.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/flint-mcp_1.1.0_1780509743798_0.49888000505833174","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@diegotsi/flint-mcp","version":"1.2.0","keywords":["mcp","model-context-protocol","bug-tracking","flint"],"_id":"@diegotsi/flint-mcp@1.2.0","maintainers":[{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"}],"bin":{"flint-mcp":"dist/index.js"},"dist":{"shasum":"f9ade3d07f067f38b2f77d1abfce5ed510f01427","tarball":"https://registry.npmjs.org/@diegotsi/flint-mcp/-/flint-mcp-1.2.0.tgz","fileCount":4,"integrity":"sha512-zKoaTUvESag6shqfgL58PwnyofnUSHNvG2wIym117b7kvS9agRMyPB6euY+T0Dzw9qtbzAIKrTqe9G8+3TmvuA==","signatures":[{"sig":"MEUCIAKwhgFJ1IcD/kAGoM2zm+xnETV8cVlajHMhmHn4EUBtAiEA4Fmn3p1gxSUPwZq9V0Zv8yezXP9Oo2zvi9e9bWHUNvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78455},"type":"module","gitHead":"023c138c58dff212181735213e872e177f045cd1","scripts":{"dev":"tsx src/index.ts","build":"tsup"},"_npmUser":{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"},"_npmVersion":"10.8.2","description":"Flint MCP server — list bugs, suggest fixes, triage issues and pull analytics from your editor via the Model Context Protocol.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.4.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/flint-mcp_1.2.0_1781955610409_0.566125007102533","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@diegotsi/flint-mcp","version":"1.3.0","keywords":["mcp","model-context-protocol","bug-tracking","flint"],"_id":"@diegotsi/flint-mcp@1.3.0","maintainers":[{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"}],"bin":{"flint-mcp":"dist/index.js"},"dist":{"shasum":"1c622a7c68e4923eac731fa2d6f02cbe2b3e8aa6","tarball":"https://registry.npmjs.org/@diegotsi/flint-mcp/-/flint-mcp-1.3.0.tgz","fileCount":4,"integrity":"sha512-XEsBOoW8AJe1igdc5J3HFPIex1ndxAJ7u3nrXtNrDv7vjXB4Of1TNsjHZkMKbKWroYfj+kUpbWc5lfIKdQq2xw==","signatures":[{"sig":"MEYCIQDIGgt5YCTlpm3Tg9hy5p09rDbKoEi8iqLbeRDUhGu25QIhALcMi56H2QwqXmH3haNyadqJ6JnLBv30PHtFvfKO3v8y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79415},"type":"module","gitHead":"a35debdbedc1c4eff1bd2d8aac0949eda8f77b56","scripts":{"dev":"tsx src/index.ts","build":"tsup"},"_npmUser":{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"},"_npmVersion":"10.8.2","description":"Flint MCP server — list bugs, suggest fixes, triage issues and pull analytics from your editor via the Model Context Protocol.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.4.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/flint-mcp_1.3.0_1781957347809_0.369186341249065","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@diegotsi/flint-mcp","version":"1.3.1","description":"Flint MCP server — list bugs, suggest fixes, triage issues and pull analytics from your editor via the Model Context Protocol.","type":"module","bin":{"flint-mcp":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsx src/index.ts"},"keywords":["mcp","model-context-protocol","bug-tracking","flint"],"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^3.25.0"},"devDependencies":{"tsup":"^8.4.0","tsx":"^4.19.0","typescript":"^5.6.0"},"_id":"@diegotsi/flint-mcp@1.3.1","gitHead":"bdbfea3bfc4a20db83ac4ce4fcab707b6cd3f56c","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-pKqbXQsnDRMvHyCKbs58B2tzbMRt/jLnGGIcPYh+YujWr9s8TM9twvzpNFrVeHDPy359X7/C5nGuGkjIFcJ0og==","shasum":"d6ac29b8f18a5f0de3ab1fb447997f8da000aff7","tarball":"https://registry.npmjs.org/@diegotsi/flint-mcp/-/flint-mcp-1.3.1.tgz","fileCount":4,"unpackedSize":82362,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEPedxgVwRCuDWp2LGr+bbnTGS7KI5IMjjCevaUZT3P9AiEA2mCMPlswZxf6813PgH0UTADuxCeFz0qXvJZTh0XRYrg="}]},"_npmUser":{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"},"directories":{},"maintainers":[{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flint-mcp_1.3.1_1782140119767_0.8621329415890884"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T18:02:23.581Z","modified":"2026-06-22T14:55:20.071Z","1.1.0":"2026-06-03T18:02:23.939Z","1.2.0":"2026-06-20T11:40:10.531Z","1.3.0":"2026-06-20T12:09:07.970Z","1.3.1":"2026-06-22T14:55:19.959Z"},"keywords":["mcp","model-context-protocol","bug-tracking","flint"],"description":"Flint MCP server — list bugs, suggest fixes, triage issues and pull analytics from your editor via the Model Context Protocol.","maintainers":[{"name":"diegotsi","email":"diegooliveira.tsi@gmail.com"}],"readme":"# @diegotsi/flint-mcp\n\nMCP (Model Context Protocol) server for [Flint](https://github.com/diegotsi/flint) — triage, analyze, and fix your bug reports straight from Claude Code, Cursor, Claude Desktop, or any MCP client.\n\n## Quick start\n\n1. **Get a personal access token** — a `flint_pat_…` string (step 1 below).\n2. **Add the MCP** to your client with that token (step 2 below).\n3. **Ask away** — _\"list my P1 bugs\"_, _\"what's the root cause of bug clxx123\"_, _\"open a PR for the suggested fix\"_.\n\n---\n\n## 1. Get a token\n\nThe MCP authenticates as **you**, with a personal access token — not the shared admin key. So actions are scoped to your account and role, and show up in the audit log under your name.\n\n1. Open the Flint **admin dashboard** and sign in.\n2. Go to **Settings → Team → Personal Access Tokens**.\n3. Click **New token**, give it a name (e.g. `My laptop MCP`), optionally pick an expiry, and **Create**.\n4. **Copy the token now** (`flint_pat_…`) — it's shown **once** and stored only as a hash. If you lose it, just create another.\n\nTokens are revocable any time from the same screen (they show their last-used time), so create one per machine and revoke it if a laptop is lost.\n\n> **Self-hosting without user accounts?** You can fall back to the server's shared `FLINT_ADMIN_KEY` (god-mode across every project). Prefer a per-user token whenever you have one.\n\n---\n\n## 2. Add the MCP\n\nYou'll also need:\n\n- **`FLINT_SERVER_URL`** — your Flint API URL, e.g. `https://api.yourflint.com`.\n- **`FLINT_PROJECT_ID`** _(optional)_ — a default project so you don't pass `projectId` on every call. Find it in the project's URL in the dashboard.\n\n### Claude Code\n\n```bash\nclaude mcp add flint \\\n  -e FLINT_SERVER_URL=https://api.yourflint.com \\\n  -e FLINT_API_TOKEN=flint_pat_your_token \\\n  -e FLINT_PROJECT_ID=your-project-id \\\n  -- npx -y @diegotsi/flint-mcp\n```\n\n### Cursor / Windsurf / Claude Desktop\n\nAdd to your MCP config (`.cursor/mcp.json`, `~/.codeium/windsurf/mcp_config.json`, or `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"flint\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@diegotsi/flint-mcp\"],\n      \"env\": {\n        \"FLINT_SERVER_URL\": \"https://api.yourflint.com\",\n        \"FLINT_API_TOKEN\": \"flint_pat_your_token\",\n        \"FLINT_PROJECT_ID\": \"your-project-id\"\n      }\n    }\n  }\n}\n```\n\nRestart the client (or reload the MCP servers) and Flint's tools become available.\n\n### Verify / alternatives\n\n`npx` fetches and runs the published package on demand — there's no separate install step. To confirm it works, run it once with no env; it tells you what's missing and exits, which means it fetched and launched fine:\n\n```bash\nnpx -y @diegotsi/flint-mcp\n# → [Flint MCP] Set FLINT_API_TOKEN (per-user, recommended) or FLINT_ADMIN_KEY\n```\n\nPrefer a pinned global binary instead of `npx`? Install once and point `command` at it:\n\n```bash\nnpm i -g @diegotsi/flint-mcp   # then use \"flint-mcp\" as the MCP command\n```\n\n---\n\n## 3. Use it\n\nOnce connected, ask your assistant things like:\n\n- _\"List the open P1 bugs in this project.\"_\n- _\"Show me bug `clxx123` — root cause and suggested fix.\"_\n- _\"Triage bug `clxx123`: assign it to me, set severity P2.\"_\n- _\"Open a GitHub PR with the suggested fix for `clxx123`.\"_\n- _\"What's our bug volume and SLA this week?\"_\n\n### Available tools\n\n| Tool | Description |\n|---|---|\n| `list_bugs` | List bug reports with filters (status, severity, release, …) |\n| `get_bug` | Full report detail — AI root cause, console logs, environment |\n| `search_code` | Search the indexed codebase (not yet available via MCP) |\n| `suggest_fix` | AI-generated fix suggestion for a bug |\n| `triage_bug` | Set assignee, severity, area or notes |\n| `resolve_bug` | Mark a bug as resolved |\n| `create_fix_pr` | Open a GitHub PR with an AI-generated fix |\n| `get_analytics` | Project analytics (volume, severity, releases, SLA) |\n| `chat_about_bug` | Ask questions about a bug with full AI context |\n\n---\n\n## Configuration reference\n\n| Env var | Required | Description |\n|---|---|---|\n| `FLINT_SERVER_URL` | yes | URL of your Flint server, e.g. `https://api.yourflint.com` |\n| `FLINT_API_TOKEN` | yes\\* | **Recommended.** Per-user personal access token (`flint_pat_…`) from **Settings → Team → Personal Access Tokens**. Scoped to your account, revocable, and audited. |\n| `FLINT_ADMIN_KEY` | yes\\* | Shared admin key (`X-Admin-Key`) — god-mode across all projects. Use only when a per-user token isn't available. |\n| `FLINT_PROJECT_ID` | no | Default project — avoids passing `projectId` on every call |\n\n> \\* Provide **either** `FLINT_API_TOKEN` (preferred) **or** `FLINT_ADMIN_KEY`. The token takes precedence. `FLINT_API_KEY` is still accepted as a fallback for `FLINT_ADMIN_KEY`.\n\n---\n\n## Troubleshooting\n\n- **401 / Unauthorized** — the token is wrong, expired, or revoked. Create a fresh one under **Settings → Team → Personal Access Tokens**. If you set both vars, `FLINT_API_TOKEN` wins over `FLINT_ADMIN_KEY`.\n- **`projectId is required`** — set `FLINT_PROJECT_ID`, or pass `projectId` in the request.\n- **Nothing happens / tools missing** — confirm `FLINT_SERVER_URL` points at your Flint **API** and that the client was restarted after editing its MCP config.\n\n---\n\n## Development\n\n```bash\nbun run dev    # run from source (tsx)\nbun run build  # bundle to dist/ (tsup)\n```\n\nTests live in `src/tools/mcpTools.test.ts` and run via the root vitest workspace (`bunx vitest run --project mcp`).\n","readmeFilename":"README.md"}