{"_id":"@cherrypeak-org/cherryboard-mcp","_rev":"3-c7ad8ec1d0947017a896c1db5b2a8e69","name":"@cherrypeak-org/cherryboard-mcp","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@cherrypeak-org/cherryboard-mcp","version":"0.1.0","license":"Apache-2.0","_id":"@cherrypeak-org/cherryboard-mcp@0.1.0","maintainers":[{"name":"cherrypeak","email":"dev@cherrypeak.eu"}],"homepage":"https://github.com/CherryPeak-org/CherryDashboard_BE#readme","bugs":{"url":"https://github.com/CherryPeak-org/CherryDashboard_BE/issues"},"bin":{"cherryboard-mcp":"dist/index.js"},"dist":{"shasum":"acb25110ee1a74b5a47fd7d8c3045624e22f7b05","tarball":"https://registry.npmjs.org/@cherrypeak-org/cherryboard-mcp/-/cherryboard-mcp-0.1.0.tgz","fileCount":9,"integrity":"sha512-Zlm6hO0ORWxJ2+6cxOwbaaq/9jG6Px18wXoz/ZQ6M1robLjI5Q5AVUEOMZYqnQK8XEDFcdFLrbtwXH7o7FE+xA==","signatures":[{"sig":"MEQCIHRG4XxbRGYacPumkEZUZQ9mai0NQbxyYD3zMebJTl7ZAiBVJ0XbMeezN3xAdcA9Of5+9n501KD+tizrRbIKun4XYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32877},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c78855e8ef7695a6e530581e51a6ec0e5e057056","scripts":{"test":"node test/smoke.mjs","build":"tsc && chmod +x dist/index.js","clean":"rm -rf dist","pretest":"npm run build","prebuild":"npm run clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"cherrypeak","email":"dev@cherrypeak.eu"},"repository":{"url":"git+https://github.com/CherryPeak-org/CherryDashboard_BE.git","type":"git","directory":"client/cherryboard-mcp"},"_npmVersion":"11.12.1","description":"MCP server exposing CherryBoard issues and performance data to AI agents","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cherryboard-mcp_0.1.0_1788263668488_0.5038709677650035","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Superseded by the hosted MCP server — add https://api.cherryboard.cherrypeak.eu/mcp as a custom connector instead. No install needed."},"0.2.0":{"name":"@cherrypeak-org/cherryboard-mcp","version":"0.2.0","license":"Apache-2.0","_id":"@cherrypeak-org/cherryboard-mcp@0.2.0","maintainers":[{"name":"cherrypeak","email":"dev@cherrypeak.eu"}],"homepage":"https://github.com/CherryPeak-org/CherryDashboard_BE#readme","bugs":{"url":"https://github.com/CherryPeak-org/CherryDashboard_BE/issues"},"bin":{"cherryboard-mcp":"dist/index.js"},"dist":{"shasum":"d2dcbd789a36fd2a02661d9fdfec30cda275adf0","tarball":"https://registry.npmjs.org/@cherrypeak-org/cherryboard-mcp/-/cherryboard-mcp-0.2.0.tgz","fileCount":10,"integrity":"sha512-16aMeJJtrhJZQJlkIg2SWZ5hZuWdR0ZOZQXlTobi6w5XwWxk60ZhSadjRIA0h7RdW1EZ9+TNzX9bLdIt91zmtw==","signatures":[{"sig":"MEUCIQCGQ8Y9bxuodUOvHK41mOidbRu6PO/F58brTyfmYvxBzgIgElBveCQMtykUakYpjtzNl2kamL9mWsGhFEfYYzCKO3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36119},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d881dc40c4218ae9d5e9b3cd04c43c550ec06183","scripts":{"test":"node test/smoke.mjs","build":"tsc && chmod +x dist/index.js","clean":"rm -rf dist","pretest":"npm run build","prebuild":"npm run clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d653743f-06ec-4a24-b8ad-687b955b55b9"}},"repository":{"url":"git+https://github.com/CherryPeak-org/CherryDashboard_BE.git","type":"git","directory":"client/cherryboard-mcp"},"_npmVersion":"11.19.1","description":"MCP server exposing CherryBoard issues and performance data to AI agents","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cherryboard-mcp_0.2.0_1788604211044_0.5499379648688811","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Superseded by the hosted MCP server — add https://api.cherryboard.cherrypeak.eu/mcp as a custom connector instead. No install needed."}},"time":{"created":"2026-09-01T11:54:28.221Z","modified":"2026-09-11T11:49:36.937Z","0.1.0":"2026-09-01T11:54:28.624Z","0.2.0":"2026-09-05T10:30:11.179Z"},"bugs":{"url":"https://github.com/CherryPeak-org/CherryDashboard_BE/issues"},"license":"Apache-2.0","homepage":"https://github.com/CherryPeak-org/CherryDashboard_BE#readme","repository":{"url":"git+https://github.com/CherryPeak-org/CherryDashboard_BE.git","type":"git","directory":"client/cherryboard-mcp"},"description":"MCP server exposing CherryBoard issues and performance data to AI agents","maintainers":[{"name":"cherrypeak","email":"dev@cherrypeak.eu"}],"readme":"# CherryBoard MCP Server\n\nGives an AI agent access to your CherryBoard issues, so it can read a real\nfailure — stack trace, how often it happens, which side it came from — and go\nand fix it in the codebase.\n\n```bash\nnpx @cherrypeak-org/cherryboard-mcp\n```\n\n## Setup\n\n### 1. Create a personal access token\n\nIn the dashboard: **Settings → Personal access tokens → New token**.\n\nPick the access level:\n\n- **Read only** — reads issues and performance, changes nothing.\n- **Read & write** — the above, plus resolving, reopening and assigning issues.\n\nThis is not the key your applications use, and it is not tied to a project or an\nenvironment. A token belongs to *you*: it reaches every project you are a member\nof, and nothing else. One token covers all of them.\n\nIt never exceeds you, either. A write token only writes where you are an Editor,\nand no token can create or delete projects, environments, members or tokens,\nhowever senior its owner is.\n\nTwo consequences worth knowing. Being added to a project extends your agents'\nreach with it, and being removed revokes it — offboarding does not depend on\nremembering which tokens someone made. And revoking a token stops the agent\nwithout touching anyone's sign-in.\n\n### 2. Point your agent at it\n\nClaude Code — `.mcp.json` in the project, or `claude mcp add`:\n\n```json\n{\n  \"mcpServers\": {\n    \"cherryboard\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cherrypeak-org/cherryboard-mcp\"],\n      \"env\": {\n        \"CHERRYBOARD_API_KEY\": \"cbp_xxxxxxxxxxxxxxxx\",\n        \"CHERRYBOARD_API_URL\": \"https://api.cherryboard.cherrypeak.eu\"\n      }\n    }\n  }\n}\n```\n\n`CHERRYBOARD_API_URL` defaults to the hosted API, so it can be omitted unless\nyou run your own.\n\n## Tools\n\n| Tool | What it answers |\n|---|---|\n| `list_projects` | What can I see, and what are the environment ids? |\n| `list_issues` | What is broken, and how often? |\n| `get_issue` | What exactly happened — stack trace, recent occurrences, context |\n| `get_environment_performance` | What is slow, and is it the server or the network? |\n| `get_error_trend` | Is this new, or has it always been like this? |\n| `set_issue_status` | Resolve, reopen, or ignore an issue *(write)* |\n| `assign_issue` | Give an issue to someone *(write)* |\n| `list_assignable_users` | Who can this issue be assigned to? *(write)* |\n| `list_issue_tags` | Which tags exist, and how many issues carry each? |\n\nThe three marked *(write)* need a **Read & write** token. With a read-only token\nthey are still listed, and refused with an explanation if called.\n\n`list_assignable_users` only reads, but the API gates it at the same level as\nassigning — knowing who is on a project is not something a read-only token is\ngiven.\n\n## Tags\n\nIssues carry tags lifted from the metadata the reporting apps attach —\n`service`, `release`, `repo`, `category`, whatever they send. `list_issues`\nfilters on them:\n\n```json\n{ \"tags\": [\"service:meishi-fe\", \"release:release-production-2026-09-02\"] }\n```\n\nCombined with AND, so each one narrows further. Call `list_issue_tags` first:\nthe useful keys differ per project and are not worth guessing.\n\nA useful opening prompt:\n\n> Look at the unresolved errors in our PROD environment, pick the one affecting\n> the most users, and work out what is causing it.\n\n## What a token can and cannot do\n\nReading is the point: the agent's real job is changing code, not dashboard state.\nTriage is included because closing the issue you just fixed is part of fixing it.\n\nEverything else is out of reach. A token stops at Editor, so it cannot create or\ndelete projects, environments, members or other tokens — and cannot mint itself a\nstronger token. It cannot submit errors either; that is what your applications'\nAPI keys are for.\n\nThis is enforced by the server, not promised by this process. The token carries\nits own ceiling and is resolved against its owner's memberships on every request,\nso the same limits apply to anything else holding it.\n\nIf you want an agent that provably cannot alter anything, give it a read-only\ntoken: the write tools are then refused at the API, not merely unused.\n\n## What the agent sees\n\nResponses are trimmed for a context window, not dumped whole. Stack traces are\ncapped, occurrence lists are cut to the most recent few, and metadata is\ntruncated — the raw payloads are far larger than the useful part, and burying a\nstack trace under a hundred occurrences helps nobody.\n\nWhere source maps have been uploaded, `get_issue` returns the de-minified stack\nand sets `stackTraceIsSymbolicated`. Check it before trusting line numbers: a\nminified trace will point at the wrong place with total confidence.\n\n## Requirements\n\nNode 18 or later. No runtime dependencies beyond the MCP SDK.\n","readmeFilename":"README.md"}