{"_id":"@arabica-social/mcp","_rev":"3-e2a5f1c9352768f73b98390ce38b6260","name":"@arabica-social/mcp","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@arabica-social/mcp","version":"0.1.0","_id":"@arabica-social/mcp@0.1.0","maintainers":[{"name":"ptdewey","email":"patrick@pdewey.com"}],"bin":{"arabica-mcp":"dist/cli.js"},"dist":{"shasum":"8dfaef8c47f3be82fbe4bfe373935546b9510ea3","tarball":"https://registry.npmjs.org/@arabica-social/mcp/-/mcp-0.1.0.tgz","fileCount":172,"integrity":"sha512-5Vv9ioI0CMOkSRX21IEgiDNKIz0hQGGRJFr90g8ecrBEAp7YS5nrFeeilTJ45eFo4ycKxJDr03cwN1c79p2Swg==","signatures":[{"sig":"MEUCIEUWnTyTvU83kWDCwsVCBsX3Bq5XOamuWPNBioHZwzLIAiEAnv0f08yqVzzBPYyoHgDieDcOLNFbevySY3q6xreWjFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474429},"type":"module","engines":{"node":">=22.5"},"gitHead":"2453514711fa6bf4a21bc8cc4e38bf78dbc6f239","scripts":{"dev":"tsx src/cli.ts serve","test":"vitest run","build":"tsc -p tsconfig.json","format":"prettier --write .","generate":"tsx scripts/generate-lexicons.ts","format:check":"prettier --check .","check-generated":"tsx scripts/generate-lexicons.ts --check","lexicons:update":"lex-cli pull && tsx scripts/generate-lexicons.ts"},"_npmUser":{"name":"ptdewey","email":"patrick@pdewey.com"},"_npmVersion":"11.17.0","description":"Local MCP server for interacting with arabica.social records","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"3.25.76","@atcute/tid":"1.1.4","@atcute/client":"5.1.1","@atcute/atproto":"4.0.4","@atcute/lexicons":"2.1.0","@modelcontextprotocol/sdk":"1.27.1","@atproto/oauth-client-node":"0.3.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.22.0","devDependencies":{"tsx":"^4.19.4","vitest":"^3.2.4","prettier":"^3.9.6","typescript":"^5.8.3","@types/node":"^22.15.0","@atcute/lex-cli":"3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1788135861175_0.765169147909941","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arabica-social/mcp","version":"0.2.0","_id":"@arabica-social/mcp@0.2.0","maintainers":[{"name":"ptdewey","email":"patrick@pdewey.com"}],"bin":{"arabica-mcp":"dist/cli.js"},"dist":{"shasum":"789e8dea5d54038d1ac2bf5287b2c1a0e10fed09","tarball":"https://registry.npmjs.org/@arabica-social/mcp/-/mcp-0.2.0.tgz","fileCount":58,"integrity":"sha512-o75q8o59MRfSPhDiiOQCO8SAW0aSRDEDGNFYrsAkDBDsIAM+GYR2TdPDDOT8xsyeM4gU40gJtVfSQacBIM/XXQ==","signatures":[{"sig":"MEUCIQDtHv+P4ctFG/GP33RvBtge8ML31TBmkSAkQF1bXL+PKAIgUOSeozKy9dl27j5PlMKdm5mT4+rTLHCcg2SN3OuG3nI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220242},"type":"module","engines":{"node":">=22.5"},"scripts":{"dev":"tsx src/cli.ts serve","test":"vitest run","build":"tsc -p tsconfig.json","format":"prettier --write .","generate":"tsx scripts/generate-lexicons.ts","format:check":"prettier --check .","check-generated":"tsx scripts/generate-lexicons.ts --check","lexicons:update":"lex-cli pull && tsx scripts/generate-lexicons.ts"},"_npmUser":{"name":"ptdewey","email":"patrick@pdewey.com"},"description":"Local MCP server for interacting with arabica.social records","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"3.25.76","@atcute/tid":"1.1.4","@atcute/client":"5.1.1","@atcute/atproto":"4.0.4","@atcute/lexicons":"2.1.0","@modelcontextprotocol/sdk":"1.27.1","@atproto/oauth-client-node":"0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vitest":"^3.2.4","prettier":"^3.9.6","typescript":"^5.8.3","@types/node":"^22.15.0","@atcute/lex-cli":"3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1789519204696_0.24038933883837954","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@arabica-social/mcp","version":"0.2.1","description":"Local MCP server for interacting with arabica.social records","type":"module","bin":{"arabica-mcp":"dist/cli.js"},"engines":{"node":">=22.5"},"dependencies":{"@atcute/atproto":"4.0.4","@atcute/client":"5.1.1","@atcute/lexicons":"2.1.0","@atcute/tid":"1.1.4","@atproto/oauth-client-node":"0.3.1","@modelcontextprotocol/sdk":"1.27.1","zod":"3.25.76"},"devDependencies":{"@atcute/lex-cli":"3.3.0","@types/node":"^22.15.0","prettier":"^3.9.6","tsx":"^4.19.4","typescript":"^5.8.3","vitest":"^3.2.4"},"scripts":{"build":"tsc -p tsconfig.json","test":"vitest run","lexicons:update":"lex-cli pull && tsx scripts/generate-lexicons.ts","generate":"tsx scripts/generate-lexicons.ts","check-generated":"tsx scripts/generate-lexicons.ts --check","format":"prettier --write .","format:check":"prettier --check .","dev":"tsx src/cli.ts serve"},"_nodeVersion":"24.20.0","_id":"@arabica-social/mcp@0.2.1","dist":{"integrity":"sha512-m0g0BWfZk5UbZcB9rSZ8GvMurJ+Rzn1b4jJZT0bC4rrqUfx64hnKn/Ph/gDIeeTC0s0kUmgmNGhEBuBr/KsARw==","shasum":"f8e1156c63d546ba07112cbc621c2b2fc6cbd024","tarball":"https://registry.npmjs.org/@arabica-social/mcp/-/mcp-0.2.1.tgz","fileCount":176,"unpackedSize":503555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGXCuf8hwMLvpGRXBHZomn8bEZ++Vz1G+x7WNemuk4svAiEAsqa6+H/FDkvHa3vSVwwEvwUh0FnR9fprqmTW+e/pQbM="}]},"_npmUser":{"name":"ptdewey","email":"patrick@pdewey.com"},"directories":{},"maintainers":[{"name":"ptdewey","email":"patrick@pdewey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.2.1_1789558134203_0.9652258310198989"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T00:24:20.942Z","modified":"2026-09-16T11:28:54.489Z","0.1.0":"2026-08-31T00:24:21.322Z","0.2.0":"2026-09-16T00:40:04.835Z","0.2.1":"2026-09-16T11:28:54.342Z"},"description":"Local MCP server for interacting with arabica.social records","maintainers":[{"name":"ptdewey","email":"patrick@pdewey.com"}],"readme":"# Arabica MCP\n\n`@arabica-social/mcp` is a local, personal-use MCP server. It writes Arabica coffee records directly to the authenticated AT Protocol PDS. It does not use the Arabica web app or private APIs.\n\n## Install and Configure\n\n```sh\nnpm install -g @arabica-social/mcp\narabica-mcp login your-handle.example.com\n```\n\n`login` opens the authorization page automatically in the default browser. If it cannot find a browser, it prints the URL so you can open it manually.\n\nConfigure a stdio MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"arabica\": {\n      \"command\": \"arabica-mcp\",\n      \"args\": [\"serve\"]\n    }\n  }\n}\n```\n\n## Usage\n\nOnce you are logged in and the MCP is registered, your agent will be able to list, create, and edit your arabica.social records.\n\nFor example, you could use a model with vision capabilities to create a bean given a picture of the bag!\n\n---\n\n## Development\n\nWhen working from this repository, log in and run the server directly from TypeScript:\n\n```sh\nnpx tsx src/cli.ts login your-handle.example\nnpx tsx src/cli.ts status\nnpm run dev\n```\n\n`npm run dev` only starts the stdio MCP server; run the login command separately.\nUse the same user and `XDG_DATA_HOME` for login and the server.\n\nConfigure your MCP client to launch\n`npm run dev` from the repository directory, or use the built `arabica-mcp serve`\ncommand.\n\nThe server provides bean and brew tools, plus list/create/edit tools for roasters, grinders, brewers, recipes, comments, and likes. Use `arabica_list_roasters` when a roaster is not known. Before logging a brew, select a bean and ensure it has a `roasterRef`; if it does not, ask the user, attach the roaster with `arabica_edit_bean`, then retry `arabica_log_brew`. Use exact AT-URIs returned by list tools. `arabica_edit_brew` updates an existing brew in place with `putRecord`. `grinderRef` identifies the grinder record, while `grindSize` is the separate setting. Brews have no separate description field; use `tastingNotes`. Keep the same opaque `requestId` when retrying a mutation.\n\n## Lexicons\n\nRecord schemas come from the lexicons published on the AT Protocol network\n(`social.arabica.alpha.*`). Pull the published schemas and regenerate the\nTypeScript when you want to pick up upstream changes:\n\n```sh\npnpm lexicons:update\n```\n\nGeneration alone (from the checked-in `lexicons/` copies) is `pnpm generate`.\nCI regenerates and fails if the committed output is stale.\n\nOAuth state, session material, and idempotency data are stored below `${XDG_DATA_HOME:-~/.local/share}/arabica-mcp`. Session files are owner-only. Run `arabica-mcp status` to check the session and `arabica-mcp logout` to revoke it when possible and remove local data.\n","readmeFilename":""}