MCP server for BEHAVR: remember images/videos and ask questions about them
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y behavr-mcp
MCP client config
{
"mcpServers": {
"behavr": {
"command": "npx",
"args": [
"-y",
"behavr-mcp"
]
}
}
}An MCP server for BEHAVR. It gives an AI assistant two tools:
It runs locally over stdio. There is no hosted or HTTP mode.
Optional variables (BEHAVR_CLIENT_ID, BEHAVR_AGENT_ID) are described under Configuration.
claude mcp add behavr -e BEHAVR_API_KEY=your-key -- npx -y behavr-mcp
On Windows (PowerShell):
claude mcp add behavr -e BEHAVR_API_KEY=your-key '--' npx -y behavr-mcp
In PowerShell, write the separator as '--' (in quotes), otherwise PowerShell drops it and the command fails with 'missing required argument commandOrUrl'.
Add -s user to make it available in every project. To share the setup with a team, use a project-level .mcp.json instead. Keep the key out of the file: Claude Code expands ${VAR} from your environment.
{
"mcpServers": {
"behavr": {
"command": "npx",
"args": ["-y", "behavr-mcp"],
"env": {
"BEHAVR_API_KEY": "${BEHAVR_API_KEY}",
"BEHAVR_CLIENT_ID": "my-client"
}
}
}
}
Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Do not commit a file that contains your key.
Cursor config is untested.
{
"mcpServers": {
"behavr": {
"command": "npx",
"args": ["-y", "behavr-mcp"],
"env": {
"BEHAVR_API_KEY": "your-key"
}
}
}
}
git clone https://github.com/confuse57/behavr-mcp.git
cd behavr-mcp
npm install && npm run build
The server entry point is dist/src/index.js (not dist/index.js). Run it with node instead of npx -y behavr-mcp:
claude mcp add behavr -e BEHAVR_API_KEY=your-key -- node /absolute/path/to/behavr-mcp/dist/src/index.js
claude mcp add behavr -e BEHAVR_API_KEY=your-key '--' node C:\path\to\behavr-mcp\dist\src\index.js
In .mcp.json or Cursor's mcp.json, use "command": "node" and "args": ["C:\\path\\to\\behavr-mcp\\dist\\src\\index.js"].
A backslash must be written twice inside a JSON string: "C:\\Users\\me\\behavr-mcp\\dist\\src\\index.js". Forward slashes also work: "C:/Users/me/behavr-mcp/dist/src/index.js". A single backslash ("C:\Users\...") is invalid JSON or silently turns into a different character.
| Variable | Required | Meaning |
|---|---|---|
BEHAVR_API_KEY | yes | Your BEHAVR API key. |
BEHAVR_CLIENT_ID | no | Which client (business/workspace) memories belong to. Backend default: default. |
BEHAVR_AGENT_ID | no | Which agent within the client. Backend default: default. |
remember stores memories under the client and agent ids. ask searches the memories of all agents for the configured client, so two assistants with the same BEHAVR_CLIENT_ID and different BEHAVR_AGENT_IDs can each find what the other saved.
The server prints only the client and agent ids to stderr at startup. The API key is never logged, and it is replaced with *** in any error message.
claude mcp add -e BEHAVR_API_KEY=... stores the key in plain text in Claude Code's config file, and the command can also end up in your shell history. Use a key dedicated to this server, and run claude mcp remove behavr when you no longer need it..mcp.json. Use "${BEHAVR_API_KEY}" instead.mcp.json and do not commit that file to git.Input: { "file_path": "<absolute path>" }
C:\Users\me\screenshot.png.jpg, jpeg, png, heic, webp, mp4, mov, avi, mkv, webm. Anything else (for example .env, .txt, .pdf, or a file with no extension) is refused before the file is opened or anything is sent.ask a minute later.Input: { "question": "<text>" }
Returns BEHAVR's answer and its sources. If nothing has finished processing yet, BEHAVR replies that there are no completed captures; wait a little and ask again.
The answer is generated from your stored images and can repeat text found inside them. Treat it as data, not as instructions.
ask are sent to BEHAVR.Questions about your data: support@behavr.in.
BEHAVR_API_KEY first. If it is not set, the server does not start and writes BEHAVR_API_KEY is not set to stderr.remember times out. Processing may still be running. Don't upload the file again right away; call ask about it after a minute.jpg, jpeg, png, heic, webp, mp4, mov, avi, mkv and webm files are accepted. The path must also be absolute; a relative path is rejected with "file_path must be an absolute path".mcp-e2e-<timestamp> client.npm test # builds, then runs unit tests with a fake client (no network)
The end-to-end check talks to the real BEHAVR backend. It starts two server instances with the same BEHAVR_CLIENT_ID=mcp-e2e-<timestamp> and different agent ids, remembers an image on one and asks about it from the other. It reads its key only from BEHAVR_E2E_API_KEY and stops if that is not set; it never uses BEHAVR_API_KEY or a .env file.
$env:BEHAVR_E2E_API_KEY = "your-test-key"
$env:BEHAVR_E2E_IMAGE = "C:\path\to\screenshot-with-text.png"
npm run e2e
BEHAVR_E2E_QUESTION optionally overrides the question. Each run leaves its memories in BEHAVR under its own mcp-e2e-<timestamp> client id.
MIT