This guide walks you through setting up Janee as an MCP server for Cursor, the AI-powered code editor.
When you ask Claude in Cursor to interact with external APIs (GitHub, Stripe, databases, etc.), you typically need to share credentials somehow. Common approaches have problems:
- Pasting API keys in prompts — Keys end up in logs, history, and potentially model context
- Plaintext config files — Keys sit unencrypted on disk
- Manual API calls — Defeats the purpose of AI assistance
Janee solves this by:
- Storing credentials encrypted at rest
- Handling authentication transparently (Claude never sees raw keys)
- Logging every request for audit trails
- Supporting multiple services in one config
npm install -g @true-and-useful/janeeVerify it's installed:
janee --versionJanee has built-in templates for common services (GitHub, Stripe, OpenAI, etc.) that auto-detect the base URL and auth type, so you often just need a name and a key.
Non-interactive (recommended for agents):
# Known services — template handles the URL
janee add github --key-from-env GITHUB_TOKEN
janee add stripe --key-from-env STRIPE_KEY
janee add openai --key-from-env OPENAI_API_KEY
# Any REST API
janee add myservice -u https://api.example.com --key-from-env MY_API_KEYUsing --key-from-env reads the key from an environment variable so it never appears in command args or agent context. You can also pass --key / -k directly.
Interactive:
janee add githubFollow the prompts for base URL, auth type, and token.
Janee encrypts and stores credentials in ~/.janee/config.yaml.
- Open Cursor Settings (⌘, on macOS)
- Go to Tools & MCP
- Click New MCP Server
- Add the Janee server config
Cursor stores MCP settings in ~/.cursor/mcp.json. Create or edit the file:
{
"mcpServers": {
"janee": {
"command": "janee",
"args": ["serve"]
}
}
}If janee isn't in your PATH, use the full path:
{
"mcpServers": {
"janee": {
"command": "/usr/local/bin/janee",
"args": ["serve"]
}
}
}Find the full path with:
which janeeIf you prefer not to install globally:
{
"mcpServers": {
"janee": {
"command": "npx",
"args": ["@true-and-useful/janee", "serve"]
}
}
}Close and reopen Cursor for the MCP settings to take effect.
Open a new chat in Cursor and try:
"List my GitHub repositories"
or
"Show me my recent GitHub notifications"
Claude should use Janee to make the API call without you needing to provide credentials in the prompt.
You can check if Janee is running as an MCP server:
janee listThis shows all configured services and their status.
Cursor can't find the janee executable. Either:
- Use the full path in settings.json
- Ensure Node.js bin directory is in your PATH
- Check that
settings.jsonis valid JSON (no trailing commas) - Verify the file location is correct for your Cursor version
- Restart Cursor completely (not just reload)
# Re-add the service with correct credentials
janee remove github
janee add githubJanee logs requests to help debug issues:
# View recent requests
cat ~/.janee/logs/requests.logOnce configured, you can ask Claude things like:
- "Create a new issue in my-repo titled 'Bug fix needed'"
- "Show me open PRs in organization/repo"
- "What are my assigned issues?"
Claude will use Janee to authenticate with GitHub automatically.
janee add stripe -u https://api.stripe.com/v1
# Enter your Stripe secret key when promptedThen ask:
- "List my recent Stripe customers"
- "Show me the last 5 charges"
- "Create a customer with email test@example.com"
- Credentials are encrypted using your system keychain where available
- Janee never sends credentials to AI models — only the API responses
- All requests are logged for audit purposes
- You can revoke access anytime with
janee remove <service>