# neither-mcp [![AllMCPs Verified](https://allmcps.com/api/badge/neither-mcp)](https://allmcps.com/mcp/neither-mcp?verify=986a5304-287d-4b8f-9cb9-8ebb70941948) Public source mirror for the Neither CLI and MCP server. Neither is decision memory for **Cursor**, **Claude Desktop**, and **Claude Code**, with Gemini CLI as an additional install surface. Start / get a workspace API key: [https://www.neither.online/start/?product=dev&utm_source=plugin&utm_campaign=neither-mcp](https://www.neither.online/start/?product=dev&utm_source=plugin&utm_campaign=neither-mcp). The npm package homepage uses the same `/start` URL with `utm_source=npm`. **Install (Node 20+):** `npx -y @neitherai/mcp-server@latest` — then set `NEITHER_API_KEY` in your MCP config (Cursor `mcp.json`, Claude Desktop, or Claude Code `claude mcp add`). ### Try Neither in Cursor Get your workspace key from [https://www.neither.online/start/?product=dev&utm_source=plugin&utm_campaign=neither-mcp](https://www.neither.online/start/?product=dev&utm_source=plugin&utm_campaign=neither-mcp). Then [Add to Cursor](https://cursor.com/en/install-mcp?name=neither&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuZWl0aGVyYWkvbWNwLXNlcnZlckBsYXRlc3QiXSwiZW52Ijp7Ik5FSVRIRVJfQVBJX0tFWSI6IlJFUExBQ0VfV0lUSF9ZT1VSX1dPUktTUEFDRV9LRVkiLCJORUlUSEVSX0FQSV9CQVNFIjoiaHR0cHM6Ly9hcGkubmVpdGhlci5vbmxpbmUifX0%3D): [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=neither&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuZWl0aGVyYWkvbWNwLXNlcnZlckBsYXRlc3QiXSwiZW52Ijp7Ik5FSVRIRVJfQVBJX0tFWSI6IlJFUExBQ0VfV0lUSF9ZT1VSX1dPUktTUEFDRV9LRVkiLCJORUlUSEVSX0FQSV9CQVNFIjoiaHR0cHM6Ly9hcGkubmVpdGhlci5vbmxpbmUifX0%3D) [![Add to Cursor](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/en/install-mcp?name=neither&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuZWl0aGVyYWkvbWNwLXNlcnZlckBsYXRlc3QiXSwiZW52Ijp7Ik5FSVRIRVJfQVBJX0tFWSI6IlJFUExBQ0VfV0lUSF9ZT1VSX1dPUktTUEFDRV9LRVkiLCJORUlUSEVSX0FQSV9CQVNFIjoiaHR0cHM6Ly9hcGkubmVpdGhlci5vbmxpbmUifX0%3D) Configure the key locally in Cursor (replace `REPLACE_WITH_YOUR_WORKSPACE_KEY`). Node.js 20+ required. Then follow the existing own-project walkthrough: [llms-install.md](./llms-install.md) (first-use section). ## MCP server (Cursor / Claude Desktop / Claude Code) Canonical install: `npx -y @neitherai/mcp-server@latest` **Fallback** — add this to Cursor MCP settings (`mcp.json`), Claude Desktop config, or Claude Code user MCP config: ```json { "mcpServers": { "neither": { "command": "npx", "args": ["-y", "@neitherai/mcp-server@latest"], "env": { "NEITHER_API_KEY": "REPLACE_WITH_YOUR_WORKSPACE_KEY", "NEITHER_API_BASE": "https://api.neither.online" } } } } ``` - `NEITHER_API_KEY` — required workspace key - `NEITHER_API_BASE` — optional; defaults to `https://api.neither.online` Docs: [https://www.neither.online/docs/mcp](https://www.neither.online/docs/mcp) The root `Dockerfile` builds this stdio server (not a remote HTTP process) so hosts such as [Glama](https://glama.ai/mcp/servers/stonianua/neither-mcp) can introspect `tools/list`. The image sets a placeholder `NEITHER_API_KEY` so the process can start; inject a real workspace key at run time. Agent install: [llms-install.md](./llms-install.md) ## Claude Code (CLI) Neither is not listed in a Claude Code marketplace card today. Use the same local stdio server via Claude Code’s MCP commands (Node 20+): ```bash claude mcp add neither -s user \ -e NEITHER_API_KEY=sk_ctx_… \ -e NEITHER_API_BASE=https://api.neither.online \ -- npx -y @neitherai/mcp-server@latest ``` Then `claude mcp list` should show `neither` as Connected. Put the workspace key only in that `-e` / config env (never in chat). Restart or open a new Claude Code session, then ask for `memory_search` on a note you pushed (see [llms-install.md](./llms-install.md)). Equivalent JSON (if you edit Claude Code user MCP config by hand) matches the Cursor / Claude Desktop block below. Guide: [Keeping Claude Code's rules and memory from being rewritten or lost](./docs/claude-code-protect-rules.md) (deny rules, a PreToolUse hook, git, and what survives `/compact`). ## Claude Desktop (MCPB) One-click local stdio bundle for Claude Desktop. Pack command: ```bash bash scripts/pack-mcpb.sh ``` That vendors `packages/mcp-server` into the `.mcpb` and spawns Claude’s bundled Node (`node ${__dirname}/server/index.js`). Cursor JSON config still uses `npx -y @neitherai/mcp-server@latest`. Sideload steps, env vars, and the Windows + macOS smoke checklist (human; not run in CI): [DESKTOP-EXTENSION.md](./DESKTOP-EXTENSION.md). This packaging does **not** mean the extension is listed or submitted to Anthropic. See also [mcpb/README.md](./mcpb/README.md). The `release-assets` workflow attaches the `.mcpb` and Gemini CLI archives together on a published GitHub Release. Do not remove the `.mcpb`. ## Gemini CLI (additional install) Primary tested clients remain **Cursor** and **Claude Desktop**. Gemini CLI uses the same stdio server (`npx -y @neitherai/mcp-server@0.1.3` in `gemini-extension.json`; Cursor JSON uses `@latest`). This is **not** a claim that a Gemini gallery card is live. ```bash gemini extensions install https://github.com/stonianua/neither-mcp ``` Enter `NEITHER_API_KEY` when prompted (required). Node.js 20+. MCP stays Disconnected until the key is set. Gemini CLI 0.59 treats that GitHub URL as a **github-release** install: it downloads a custom Release asset and only extracts `.tar.gz` / `.zip`. Release `v0.1.3` attaches `linux.neither-mcp.tar.gz`, `darwin.neither-mcp.tar.gz`, and `win32.neither-mcp.zip` (`gemini-extension.json` at archive root, npm pin `@neitherai/mcp-server@0.1.3`) in addition to the Claude Desktop `.mcpb`. A Release whose only custom asset is the `.mcpb` still makes 0.59 unpack a non-extension tree, then `git clone` into the same non-empty temp dir fails — do not remove the `.mcpb`. If those Gemini archives misbehave, clone `main` instead: ```bash gemini extensions install https://github.com/stonianua/neither-mcp --ref=main ``` Local-path install of this repo (a checkout that already contains `gemini-extension.json`) also works. ## Cursor Marketplace packaging This repo is a **single Cursor Plugin** (not a multi-plugin marketplace). Manifests follow [cursor/plugin-template](https://github.com/cursor/plugin-template) and the [Cursor Plugins reference](https://cursor.com/docs/reference/plugins): | Path | Role | | --- | --- | | `.cursor-plugin/plugin.json` | Cursor Plugin manifest + `NEITHER_API_KEY` user variable | | `mcp.json` | Local stdio MCP: `npx -y @neitherai/mcp-server@latest` | There is no `.cursor-plugin/marketplace.json` (that file is only for multi-plugin repos). There is no remote MCP URL and no OAuth-only install path. After a marketplace install, set `NEITHER_API_KEY` under **Plugins → Configure** (workspace key from [quickstart](https://www.neither.online/developers/quickstart)). Node 20+ and `npx` must be on PATH. This packaging does **not** mean Neither is listed on the Cursor Marketplace; a maintainer still submits the public repo at [cursor.com/marketplace/publish](https://cursor.com/marketplace/publish) for manual review. Try-it sample: [https://github.com/stonianua/neither-demo](https://github.com/stonianua/neither-demo) ## CLI Push local docs to decision memory (separate from MCP install): ```bash npx -y neither@latest push ``` Homebrew (macOS / Linuxbrew): ```bash brew install stonianua/neither/neither ``` Docs: [https://www.neither.online/docs/cli](https://www.neither.online/docs/cli) ## Packages Published npm packages: - [`@neitherai/mcp-server`](https://www.npmjs.com/package/@neitherai/mcp-server) — MCP server for Cursor, Claude Desktop, Claude Code, and Gemini CLI - [`neither`](https://www.npmjs.com/package/neither) — CLI for pushing local docs to decision memory ## Privacy Policy The Neither privacy policy (collection, use and storage, third-party sharing / subprocessors, retention, and contact) is published at [https://www.neither.online/privacy/](https://www.neither.online/privacy/). Privacy contact: [privacy@neither.online](mailto:privacy@neither.online). Support: [support@neither.online](mailto:support@neither.online). This repository’s MCP server, Claude Desktop extension, and Gemini CLI extension are a **local stdio** process. They are not a remote HTTPS MCP server. - **Collection.** Tool arguments you or the model supply (search queries, repo-relative file paths, snippet ids, and for `memory_push` snippet text and optional provenance). The workspace API key is sent as an HTTP Bearer token to the Neither API (`NEITHER_API_BASE`, default `https://api.neither.online`). - **Use and storage.** The local process uses the key only to call that API. Claude Desktop stores sensitive `user_config` values in the OS keychain. Neither stores workspace decision memory as described in the privacy policy. - **Third-party sharing.** The connector sends requests to the Neither API host you configure. Neither’s subprocessors and sharing rules are in the privacy policy. This connector does not add a second vendor beyond that API host. - **Retention.** Per the privacy policy, workspace data is kept while the account is active; account or data deletion is removed within 30 days (backup window). The local extension does not keep a second copy of API responses on disk. - **Contact.** [privacy@neither.online](mailto:privacy@neither.online), [support@neither.online](mailto:support@neither.online), or [GitHub issues](https://github.com/stonianua/neither-mcp/issues). ## Issues Report bugs and feature requests at [https://github.com/stonianua/neither-mcp/issues](https://github.com/stonianua/neither-mcp/issues). ## Repository layout | Path | Package | | --- | --- | | `packages/mcp-server/` | `@neitherai/mcp-server` | | `packages/cli/` | `neither` CLI | | `mcpb/` | Claude Desktop MCPB (bundled Node stdio) | | `gemini-extension.json` | Gemini CLI extension manifest (stdio `npx`) | | `GEMINI.md` | Gemini CLI extension context | | `DESKTOP-EXTENSION.md` | Build, sideload, env, Win/macOS smoke checklist | | `.cursor-plugin/plugin.json` | Cursor Plugin manifest (marketplace packaging) | | `mcp.json` | Cursor Plugin stdio MCP config (`npx` spawn) | | `llms-install.md` | Short agent-installable steps | | `scripts/pack-gemini-extension.sh` | Gemini CLI github-release archives (`.tar.gz` / `.zip`) | License: MIT (see LICENSE).