Senja MCP Server & CLI
A free, open source Senja MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents find, approve and tag your testimonials, send invites and export them.
0.0(0 ratings)- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add senja \
-e SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
In Claude Code, type /mcp. Senja should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add senja -e SENJA_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/senja-mcp-cli@latest - 2
In Claude Code, type /mcp. Senja should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add senja \
-e SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
In Claude Code, type /mcp. Senja should show as connected.
/mcp
- 1Download the extension
Download the Claude Desktop extension.
- 2
Double-click it, and Claude Desktop installs it.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add senja \
--env SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add senja --env SENJA_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add senja \
--env SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 2
Add the server.
Put your own API key in place of the example.
{
"mcpServers": {
"senja": {
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Open the MCP tab again. It should show 12 tools.
- 1
Open the Command Palette and run MCP: Open User Configuration.
- 2
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers. Put your own API key in place of the example.
{
"servers": {
"senja": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add senja \
--env SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get senja
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add senja --env SENJA_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get senja
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add senja \
--env SENJA_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/senja-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get senja
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"senja": {
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"senja": {
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"senja": {
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"senja": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/senja-mcp-cli@latest"],
"enabled": true,
"environment": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"senja": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/senja-mcp-cli@latest"],
"enabled": true,
"environment": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"senja": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/senja-mcp-cli@latest"],
"enabled": true,
"environment": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add senja \
--command npx \
--arg -y \
--arg @thenavidm/senja-mcp-cli@latest \
--env SENJA_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor senja --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add senja --command npx --arg -y --arg @thenavidm/senja-mcp-cli@latest --env SENJA_API_KEY="YOUR_API_KEY" - 2
Check that it starts and lists its tools.
openclaw mcp doctor senja --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add senja \
--command npx \
--arg -y \
--arg @thenavidm/senja-mcp-cli@latest \
--env SENJA_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor senja --probe
- 1
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 2
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"senja": {
"command": "npx",
"args": ["-y", "@thenavidm/senja-mcp-cli@latest"],
"env": {
"SENJA_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
senja:
command: "npx"
args: ["-y", "@thenavidm/senja-mcp-cli@latest"]
env:
SENJA_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
senja:
command: "npx"
args: ["-y", "@thenavidm/senja-mcp-cli@latest"]
env:
SENJA_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
senja:
command: "npx"
args: ["-y", "@thenavidm/senja-mcp-cli@latest"]
env:
SENJA_API_KEY: "YOUR_API_KEY"
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.claude/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Claude Code to use senja-cli.
Running senja-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\senja" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\senja-mcp-cli\SKILL.md" "$HOME\.claude\skills\senja\" - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Claude Code to use senja-cli.
Running senja-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.claude/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Claude Code to use senja-cli.
Running senja-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.agents/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Codex to use senja-cli.
Running senja-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\senja" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\senja-mcp-cli\SKILL.md" "$HOME\.agents\skills\senja\" - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Codex to use senja-cli.
Running senja-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.agents/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Codex to use senja-cli.
Running senja-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Cursor to use senja-cli.
Running senja-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Cursor to use senja-cli.
Running senja-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Cursor to use senja-cli.
Running senja-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask VS Code to use senja-cli.
Running senja-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask VS Code to use senja-cli.
Running senja-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask VS Code to use senja-cli.
Running senja-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.copilot/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Copilot CLI to use senja-cli.
Running senja-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\senja" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\senja-mcp-cli\SKILL.md" "$HOME\.copilot\skills\senja\" - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Copilot CLI to use senja-cli.
Running senja-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.copilot/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask Copilot CLI to use senja-cli.
Running senja-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Gemini CLI to use senja-cli.
Running senja-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Gemini CLI to use senja-cli.
Running senja-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Gemini CLI to use senja-cli.
Running senja-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.config/opencode/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenCode to use senja-cli.
Running senja-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\senja" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\senja-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\senja\" - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenCode to use senja-cli.
Running senja-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.config/opencode/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenCode to use senja-cli.
Running senja-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.openclaw/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenClaw to use senja-cli.
Running senja-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\senja" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\senja-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\senja\" - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenClaw to use senja-cli.
Running senja-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/senja
cp "$(npm root -g)/@thenavidm/senja-mcp-cli/SKILL.md" ~/.openclaw/skills/senja/ - 3
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 5
Ask OpenClaw to use senja-cli.
Running senja-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Antigravity to use senja-cli.
Running senja-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Antigravity to use senja-cli.
Running senja-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Antigravity to use senja-cli.
Running senja-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Hermes to use senja-cli.
Running senja-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Hermes to use senja-cli.
Running senja-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
Ask Hermes to use senja-cli.
Running senja-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
List every command, then try one.
senja-cli
senja-cli list-links
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
setx SENJA_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
List every command, then try one.
senja-cli
senja-cli list-links
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/senja-mcp-cli@latest - 2
Save your Senja details, so every new session has them.
Put your own API key in place of the example.
echo 'export SENJA_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
senja-cli doctor - 4
List every command, then try one.
senja-cli
senja-cli list-links
Needs Node 22 or newer and a Senja API key, on any plan. Get it in a minute.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Senja MCP server and CLI gives your AI real access to your Senja project: its testimonials, tags, forms and Wall of Love links. It finds testimonials by their words, rating, tag or source, approves and tags them, adds ones customers already gave you, sends form invites and saves an export.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 12 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Senja MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Senja MCP server & CLI?
The Senja MCP server & CLI is a free, open source program that lets AI agents work with your Senja testimonials for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Senja's own API.
The CLI is the same program as commands. senja-cli list-testimonials runs the same code your AI runs when you ask for your best testimonials, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Senja. I explain how the parts fit together in how to build an AI operating system, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingFind five-star testimonials that mention onboarding, for my landing page.
Which testimonials are still waiting for approval?
Approve that one and tag it webinar.
Show my forms and Wall of Love links.
Invite these three customers to leave a testimonial with my feedback form.
Export all my approved video testimonials to a file.
The first one shows why this is useful. Your AI searches the words of every testimonial for you, and picks the strongest quotes for the page.
It works well next to my Kit MCP server and WordPress MCP server, so your AI can email your customers and put the best ones on your site in the same chat. Every server I've made is on my MCP servers page.
For sharing the best ones, my free X quote generator and LinkedIn quote generator help too.
How to install the Senja MCP server
Pick your app in the box at the top of this page. Each one is a single command or a pasted block, and they all run through npx, so there's nothing to install first.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: Each API key belongs to one Senja project. To work with two projects, set up each one as its own account, as shown further down.
Set up your Senja account
It takes a minute.
SENJA_API_KEY in the command for your app, in place of the example.If a key ever gets out, an Admin or Owner can regenerate it in Automate, and the old key stops working within a few minutes.
To keep the key out of your app's config, save it alone in a file only you can read, and point SENJA_TOKEN_FILE at that file's full path instead.
Check that it works
Run the doctor with --network. It checks your settings, then asks Senja for one testimonial to prove the key works. It prints only the count, never a customer's words, and it never changes anything.
npx -y @thenavidm/senja-mcp-cli doctor --networkWhen every line has a check mark, restart your app and ask it for your newest testimonial. A failed check usually means the key came from a different project, or it was regenerated after you copied it.
In Claude Code, /mcp also shows whether the Senja server is connected. It's one of the Claude Code commands worth knowing.
Use the Senja CLI
The CLI is the same 12 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so list_testimonials runs as senja-cli list-testimonials.
npm install -g @thenavidm/senja-mcp-cli
senja-cli
senja-cli list-testimonials --query onboarding --rating 5 --limit 5
senja-cli list-testimonials --approved false --limit 10
senja-cli update-testimonial --testimonial-id abc123 --approved true --add-tags webinar --confirm
senja-cli export-testimonials --approved true --output-file ~/exports/senja.json --confirmThe bare senja-cli lists every command, senja-cli which <words> finds the command for a task, and senja-cli <command> --help shows what a command takes. Adding, approving, tagging, deleting, sending invites and exporting need --confirm, the terminal's version of your approval.
senja-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Machine mode: compact JSON, no prompts, and it never confirms anything |
--confirm | Lets a write that asks first go ahead |
--dry-run | Shows what a write would do, without doing it |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 1 | Something unexpected went wrong |
| 2 | The command was typed wrong, or a write needed --confirm |
| 3 | It wasn't found |
| 4 | Senja rejected the credentials |
| 5 | Senja failed or couldn't be reached |
| 7 | You hit a rate limit, so wait and try again |
| 10 | Nothing is set up yet |
MCP server or CLI: which one?
Both are the same program with the same 12 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 7,600 tokens
- CLI
- Nothing
- MCP server
- 540 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 2,400 tokens, once
- MCP server
- 151,000 tokens
- CLI
- 2,400 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Senja or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Senja comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 50 tokens.
When the whole conversation is about Senja, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't working on testimonials. In Claude Code that's the /mcp panel, and every AI app has its own switch. SENJA_READ_ONLY=1 cuts it to the six reading tools.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
Approve, tag and invite
Approving a testimonial with update_testimonial publishes it, and setting it back to not approved returns it to pending. Approval and tags are all Senja's API can change on a testimonial. Its words, rating and customer details are edited in your Senja dashboard.
send_invites emails up to 100 people with one of your forms, and Senja's follow-up emails for that form go out too. Pick the form with list_links first, and check its follow-ups in Senja before you send.
For several changes at once, preview_testimonial_batch checks up to 20 of them on your computer and gives the batch a fingerprint. submit_testimonial_batch runs them in order only with that same fingerprint, and stops at the first failure.
export_testimonials saves your testimonials to a new JSON file, 1,000 unless you ask for more and 10,000 at most, and it never overwrites a file. If it stops at its limit, it tells you where to pick up, and the next export goes into a new file.
Watch out: Deleting a testimonial can't be undone, so the server asks first every time.
Every Senja tool
The tables below list all 12 tools, grouped by what they're for. Of these, six only read, and six change something in your Senja project or on your computer.
Testimonials
list_testimonials- What it does
- Finds testimonials by their words, rating, tags, type, source, language or approval.
- Kind
- Reads
get_testimonial- What it does
- Reads one testimonial in full, with its video details and links.
- Kind
- Reads
create_testimonial- What it does
- Adds a text or video testimonial a customer already gave you.
- Kind
- Asks first
update_testimonial- What it does
- Approves a testimonial, which publishes it, or adds and removes its tags.
- Kind
- Asks first
delete_testimonial- What it does
- Deletes one testimonial for good.
- Kind
- Asks first
Forms, links and invites
list_links- What it does
- Lists your forms, widgets, Walls of Love and other share links, with their IDs.
- Kind
- Reads
send_invites- What it does
- Emails up to 100 people one of your forms, with that form's follow-ups.
- Kind
- Asks first
Batches and exports
preview_testimonial_batch- What it does
- Checks up to 20 changes on your computer and gives the batch a fingerprint.
- Kind
- Reads
submit_testimonial_batch- What it does
- Runs a checked batch in order, only with the fingerprint from its preview.
- Kind
- Asks first
export_testimonials- What it does
- Saves your testimonials to a new private JSON file, up to 10,000 at a time.
- Kind
- Asks first
Your projects and requests
list_accounts- What it does
- Lists the projects you've set up, without their keys.
- Kind
- Reads
get_operation_schema- What it does
- Shows every field Senja accepts for one of its requests.
- Kind
- Reads
Is the Senja MCP server safe?
A testimonial is a customer's own words, and an invite reaches a real inbox. So six tools ask first: adding, approving or tagging, deleting, sending invites, running a batch and exporting. They're the ones marked "Asks first" in the tool tables above.
Approving a testimonial publishes it, and a deleted one can't come back. Reading never asks, because it changes nothing.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
SENJA_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Senja.
Make it read-only
Set SENJA_READ_ONLY=1 and every tool that asks first disappears from the tool list, leaving six reading tools.
Keep a log of every write
Set SENJA_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: Testimonials are written by your customers, and one can try to give your AI orders. Treat them as data, and use SENJA_READ_ONLY=1 for an agent working on its own.
Your data
Your requests go straight to Senja, with no server of ours in between and no tracking. Your key stays in your app's config, your shell or your token file.
Testimonials carry your customers' names, emails and words, so an export file holds personal data. Keep it private, and delete it when you're done.
To cut access, regenerate the key in Automate, which stops the old one within a few minutes. Then remove the server from your app's config.
Connect more than one Senja project
Each key belongs to one project, so each project is its own account here. Set SENJA_ACCOUNTS to a JSON list with a name and a key, or a token file, for each project, and SENJA_DEFAULT_ACCOUNT to the one that acts when a tool names none. Every tool takes an optional account.
An account never borrows another one's key. If the project you name has no key, the call stops instead of using a different project.
Senja MCP server settings
Every setting is an environment variable, in your app's config or your shell.
SENJA_API_KEY- Default
- none
- What it does
- Holds your project's API key
SENJA_TOKEN_FILE- Default
- none
- What it does
- Points at a private file holding the key, instead
SENJA_ACCOUNTS- Default
- none
- What it does
- Lists several projects, as JSON
SENJA_DEFAULT_ACCOUNT- Default
- the first one
- What it does
- Picks the project that acts when a tool names none
SENJA_REQUEST_TIMEOUT_MS- Default
30000- What it does
- Gives up on a Senja request after this many milliseconds
SENJA_MIN_REQUEST_INTERVAL_MS- Default
250- What it does
- Waits this many milliseconds between requests
SENJA_READ_ONLY- Default
- off
- What it does
1hides every tool that changes something
SENJA_ALLOW_DESTRUCTIVE- Default
- on
- What it does
0refuses the tools that ask first
SENJA_AUDIT_LOG- Default
- none
- What it does
- Names a file that gets one line per attempted write
SENJA_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
SENJA_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
SENJA_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
SENJA_HTTP_PORT- Default
8787- What it does
- Sets the port for
--http
SENJA_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
SENJA_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
SENJA_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
SENJA_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| The key check fails | The key is from a different project, or it was regenerated. Copy it again from Automate |
| Editing a testimonial's words is refused | Senja's API changes only approval and tags. Edit the words, rating and customer in your dashboard |
| Some invites show as skipped | Senja skipped those addresses. Read the sent and skipped lists before you send anything again |
| An export stopped at its limit | It tells you the page to pick up from. Run it again from there, into a new file |
| A batch says the fingerprint doesn't match | Something changed since the preview. Preview again and submit the new fingerprint |
| "…so it will not run without confirm: true" | That's the safety check working. Approve it when your app asks |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for social proof
Collect testimonials in Testimonial.to too, or send them to your email list.
Free tools
FAQs about the Senja MCP server & CLI
Here are the questions people ask most about the Senja MCP server and CLI.
The Senja MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor work with your Senja testimonials.
It has 12 tools for finding, approving, tagging, adding, inviting and exporting testimonials, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Senja CLI is the same program as the Senja MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Senja MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Senja MCP server is free and open source under the AGPL-3.0 license.
Senja's API comes with every plan, Free included, so the only thing you pay for is your own AI app.
No, Senja's API comes with every plan, Free included.
Your key is under Automate in your Senja dashboard.
No, Senja's API changes only a testimonial's approval and tags.
You edit its words, rating and customer details in your Senja dashboard.
No, it sends invites only to the people you name, with the form you pick, after you approve.
Senja's follow-up emails for that form go out too, so check them first.
Yes, it saves up to 10,000 testimonials to a new private JSON file after you approve.
If it stops at its limit, it tells you where to pick up.
Yes, the Senja MCP server connects as many projects as you set up in SENJA_ACCOUNTS, each with its own key.
Every tool takes an optional account, and a project never borrows another one's key.
To disconnect the Senja MCP server, regenerate the key in Automate, and the old one stops working within a few minutes.
Then remove the server from your AI app's config.
The Senja MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Senja MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the AGPL-3.0 license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
