Dear Claude MCP
An MCP server that monitors project management platforms like Linear, GitHub, Jira, GitLab, Notion, and Obsidian for the trigger phrase 'Dear Claude'. Upon detection, it spawns a local Claude Code instance to execute tasks such as code generation, reviews, or task creation, and posts results back to the originating platform while maintaining session persistence.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Spawn Claude Code instances from external platforms like Linear or GitHub
- Execute code, reviews, or task creation based on issue context
- Post results back to the originating platform
- Persist sessions for multi-turn conversations
Source and maintenance
- Last repository push
- Latest release
- v1.2.0
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
dear-claude 1.2.0
{
"version": "1.2.0",
"transport": "stdio",
"identifier": "dear-claude",
"registryType": "npm",
"environmentVariables": [
{
"name": "DEAR_CLAUDE_PORT",
"format": "string",
"description": "HTTP server port for webhooks (default: 3334)"
},
{
"name": "DEAR_CLAUDE_HOST",
"format": "string",
"description": "Bind address for the HTTP server (default: 127.0.0.1, loopback only)"
},
{
"name": "DEAR_CLAUDE_DATA_DIR",
"format": "string",
"description": "Override the data directory (default: $XDG_DATA_HOME/dear-claude or ~/.local/share/dear-claude)"
},
{
"name": "DEAR_CLAUDE_API_TOKEN",
"format": "string",
"description": "Token guarding the /api/* and /mcp control endpoints (auto-generated at <dataDir>/api-token if unset)"
},
{
"name": "TAILSCALE_HOSTNAME",
"format": "string",
"description": "Override Tailscale hostname for webhook URLs (auto-detected if not set)"
},
{
"name": "GITHUB_CLIENT_ID",
"format": "string",
"description": "GitHub OAuth App or GitHub App client ID"
},
{
"name": "GITHUB_CLIENT_SECRET",
"format": "string",
"description": "GitHub OAuth App or GitHub App client secret"
},
{
"name": "GITHUB_WEBHOOK_SECRET",
"format": "string",
"description": "GitHub webhook signature secret"
},
{
"name": "GITHUB_ACCESS_TOKEN",
"format": "string",
"description": "GitHub personal access token (alternative to OAuth)"
},
{
"name": "GITHUB_APP_ID",
"format": "string",
"description": "GitHub App ID (for installation-based auth)"
},
{
"name": "GITHUB_APP_PRIVATE_KEY_PATH",
"format": "string",
"description": "Path to GitHub App private key PEM file"
},
{
"name": "LINEAR_CLIENT_ID",
"format": "string",
"description": "Linear OAuth application client ID"
},
{
"name": "LINEAR_CLIENT_SECRET",
"format": "string",
"description": "Linear OAuth application client secret"
},
{
"name": "LINEAR_WEBHOOK_SECRET",
"format": "string",
"description": "Linear webhook signing secret"
},
{
"name": "LINEAR_ACCESS_TOKEN",
"format": "string",
"description": "Linear personal API key (alternative to OAuth)"
},
{
"name": "JIRA_DOMAIN",
"format": "string",
"description": "Jira Cloud domain (e.g. 'mycompany' for mycompany.atlassian.net)"
},
{
"name": "JIRA_USER_EMAIL",
"format": "string",
"description": "Jira account email for API authentication"
},
{
"name": "JIRA_API_TOKEN",
"format": "string",
"description": "Jira API token from id.atlassian.com"
},
{
"name": "JIRA_WEBHOOK_SECRET",
"format": "string",
"description": "Shared secret for Jira webhook URL validation"
},
{
"name": "GITLAB_ACCESS_TOKEN",
"format": "string",
"description": "GitLab personal or project access token"
},
{
"name": "GITLAB_WEBHOOK_SECRET",
"format": "string",
"description": "GitLab webhook secret token"
},
{
"name": "NOTION_CLIENT_ID",
"format": "string",
"description": "Notion OAuth integration client ID"
},
{
"name": "NOTION_CLIENT_SECRET",
"format": "string",
"description": "Notion OAuth integration client secret"
},
{
"name": "NOTION_ACCESS_TOKEN",
"format": "string",
"description": "Notion internal integration token (alternative to OAuth)"
},
{
"name": "NOTION_WEBHOOK_SECRET",
"format": "string",
"description": "Notion webhook verification secret"
},
{
"name": "OBSIDIAN_VAULT_PATH",
"format": "string",
"description": "Absolute path to Obsidian vault directory for file watching"
},
{
"name": "GIPHY_API_KEY",
"format": "string",
"description": "Giphy API key for embedding GIF reactions in responses"
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"dear-claude-mcp": {
"command": "npx",
"args": [
"-y",
"dear-claude@1.2.0"
],
"env": {
"DEAR_CLAUDE_PORT": "<YOUR_DEAR_CLAUDE_PORT>",
"DEAR_CLAUDE_HOST": "<YOUR_DEAR_CLAUDE_HOST>",
"DEAR_CLAUDE_DATA_DIR": "<YOUR_DEAR_CLAUDE_DATA_DIR>",
"DEAR_CLAUDE_API_TOKEN": "<YOUR_DEAR_CLAUDE_API_TOKEN>",
"TAILSCALE_HOSTNAME": "<YOUR_TAILSCALE_HOSTNAME>",
"GITHUB_CLIENT_ID": "<YOUR_GITHUB_CLIENT_ID>",
"GITHUB_CLIENT_SECRET": "<YOUR_GITHUB_CLIENT_SECRET>",
"GITHUB_WEBHOOK_SECRET": "<YOUR_GITHUB_WEBHOOK_SECRET>",
"GITHUB_ACCESS_TOKEN": "<YOUR_GITHUB_ACCESS_TOKEN>",
"GITHUB_APP_ID": "<YOUR_GITHUB_APP_ID>",
"GITHUB_APP_PRIVATE_KEY_PATH": "<YOUR_GITHUB_APP_PRIVATE_KEY_PATH>",
"LINEAR_CLIENT_ID": "<YOUR_LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<YOUR_LINEAR_CLIENT_SECRET>",
"LINEAR_WEBHOOK_SECRET": "<YOUR_LINEAR_WEBHOOK_SECRET>",
"LINEAR_ACCESS_TOKEN": "<YOUR_LINEAR_ACCESS_TOKEN>",
"JIRA_DOMAIN": "<YOUR_JIRA_DOMAIN>",
"JIRA_USER_EMAIL": "<YOUR_JIRA_USER_EMAIL>",
"JIRA_API_TOKEN": "<YOUR_JIRA_API_TOKEN>",
"JIRA_WEBHOOK_SECRET": "<YOUR_JIRA_WEBHOOK_SECRET>",
"GITLAB_ACCESS_TOKEN": "<YOUR_GITLAB_ACCESS_TOKEN>",
"GITLAB_WEBHOOK_SECRET": "<YOUR_GITLAB_WEBHOOK_SECRET>",
"NOTION_CLIENT_ID": "<YOUR_NOTION_CLIENT_ID>",
"NOTION_CLIENT_SECRET": "<YOUR_NOTION_CLIENT_SECRET>",
"NOTION_ACCESS_TOKEN": "<YOUR_NOTION_ACCESS_TOKEN>",
"NOTION_WEBHOOK_SECRET": "<YOUR_NOTION_WEBHOOK_SECRET>",
"OBSIDIAN_VAULT_PATH": "<YOUR_OBSIDIAN_VAULT_PATH>",
"GIPHY_API_KEY": "<YOUR_GIPHY_API_KEY>"
}
}
}
}Cline
{
"mcpServers": {
"dear-claude-mcp": {
"command": "npx",
"args": [
"-y",
"dear-claude@1.2.0"
],
"env": {
"DEAR_CLAUDE_PORT": "<YOUR_DEAR_CLAUDE_PORT>",
"DEAR_CLAUDE_HOST": "<YOUR_DEAR_CLAUDE_HOST>",
"DEAR_CLAUDE_DATA_DIR": "<YOUR_DEAR_CLAUDE_DATA_DIR>",
"DEAR_CLAUDE_API_TOKEN": "<YOUR_DEAR_CLAUDE_API_TOKEN>",
"TAILSCALE_HOSTNAME": "<YOUR_TAILSCALE_HOSTNAME>",
"GITHUB_CLIENT_ID": "<YOUR_GITHUB_CLIENT_ID>",
"GITHUB_CLIENT_SECRET": "<YOUR_GITHUB_CLIENT_SECRET>",
"GITHUB_WEBHOOK_SECRET": "<YOUR_GITHUB_WEBHOOK_SECRET>",
"GITHUB_ACCESS_TOKEN": "<YOUR_GITHUB_ACCESS_TOKEN>",
"GITHUB_APP_ID": "<YOUR_GITHUB_APP_ID>",
"GITHUB_APP_PRIVATE_KEY_PATH": "<YOUR_GITHUB_APP_PRIVATE_KEY_PATH>",
"LINEAR_CLIENT_ID": "<YOUR_LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<YOUR_LINEAR_CLIENT_SECRET>",
"LINEAR_WEBHOOK_SECRET": "<YOUR_LINEAR_WEBHOOK_SECRET>",
"LINEAR_ACCESS_TOKEN": "<YOUR_LINEAR_ACCESS_TOKEN>",
"JIRA_DOMAIN": "<YOUR_JIRA_DOMAIN>",
"JIRA_USER_EMAIL": "<YOUR_JIRA_USER_EMAIL>",
"JIRA_API_TOKEN": "<YOUR_JIRA_API_TOKEN>",
"JIRA_WEBHOOK_SECRET": "<YOUR_JIRA_WEBHOOK_SECRET>",
"GITLAB_ACCESS_TOKEN": "<YOUR_GITLAB_ACCESS_TOKEN>",
"GITLAB_WEBHOOK_SECRET": "<YOUR_GITLAB_WEBHOOK_SECRET>",
"NOTION_CLIENT_ID": "<YOUR_NOTION_CLIENT_ID>",
"NOTION_CLIENT_SECRET": "<YOUR_NOTION_CLIENT_SECRET>",
"NOTION_ACCESS_TOKEN": "<YOUR_NOTION_ACCESS_TOKEN>",
"NOTION_WEBHOOK_SECRET": "<YOUR_NOTION_WEBHOOK_SECRET>",
"OBSIDIAN_VAULT_PATH": "<YOUR_OBSIDIAN_VAULT_PATH>",
"GIPHY_API_KEY": "<YOUR_GIPHY_API_KEY>"
}
}
}
}VS Code
{
"servers": {
"dear-claude-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"dear-claude@1.2.0"
],
"env": {
"DEAR_CLAUDE_PORT": "<YOUR_DEAR_CLAUDE_PORT>",
"DEAR_CLAUDE_HOST": "<YOUR_DEAR_CLAUDE_HOST>",
"DEAR_CLAUDE_DATA_DIR": "<YOUR_DEAR_CLAUDE_DATA_DIR>",
"DEAR_CLAUDE_API_TOKEN": "<YOUR_DEAR_CLAUDE_API_TOKEN>",
"TAILSCALE_HOSTNAME": "<YOUR_TAILSCALE_HOSTNAME>",
"GITHUB_CLIENT_ID": "<YOUR_GITHUB_CLIENT_ID>",
"GITHUB_CLIENT_SECRET": "<YOUR_GITHUB_CLIENT_SECRET>",
"GITHUB_WEBHOOK_SECRET": "<YOUR_GITHUB_WEBHOOK_SECRET>",
"GITHUB_ACCESS_TOKEN": "<YOUR_GITHUB_ACCESS_TOKEN>",
"GITHUB_APP_ID": "<YOUR_GITHUB_APP_ID>",
"GITHUB_APP_PRIVATE_KEY_PATH": "<YOUR_GITHUB_APP_PRIVATE_KEY_PATH>",
"LINEAR_CLIENT_ID": "<YOUR_LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<YOUR_LINEAR_CLIENT_SECRET>",
"LINEAR_WEBHOOK_SECRET": "<YOUR_LINEAR_WEBHOOK_SECRET>",
"LINEAR_ACCESS_TOKEN": "<YOUR_LINEAR_ACCESS_TOKEN>",
"JIRA_DOMAIN": "<YOUR_JIRA_DOMAIN>",
"JIRA_USER_EMAIL": "<YOUR_JIRA_USER_EMAIL>",
"JIRA_API_TOKEN": "<YOUR_JIRA_API_TOKEN>",
"JIRA_WEBHOOK_SECRET": "<YOUR_JIRA_WEBHOOK_SECRET>",
"GITLAB_ACCESS_TOKEN": "<YOUR_GITLAB_ACCESS_TOKEN>",
"GITLAB_WEBHOOK_SECRET": "<YOUR_GITLAB_WEBHOOK_SECRET>",
"NOTION_CLIENT_ID": "<YOUR_NOTION_CLIENT_ID>",
"NOTION_CLIENT_SECRET": "<YOUR_NOTION_CLIENT_SECRET>",
"NOTION_ACCESS_TOKEN": "<YOUR_NOTION_ACCESS_TOKEN>",
"NOTION_WEBHOOK_SECRET": "<YOUR_NOTION_WEBHOOK_SECRET>",
"OBSIDIAN_VAULT_PATH": "<YOUR_OBSIDIAN_VAULT_PATH>",
"GIPHY_API_KEY": "<YOUR_GIPHY_API_KEY>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"dear-claude-mcp": {
"command": "npx",
"args": [
"-y",
"dear-claude@1.2.0"
],
"env": {
"DEAR_CLAUDE_PORT": "<YOUR_DEAR_CLAUDE_PORT>",
"DEAR_CLAUDE_HOST": "<YOUR_DEAR_CLAUDE_HOST>",
"DEAR_CLAUDE_DATA_DIR": "<YOUR_DEAR_CLAUDE_DATA_DIR>",
"DEAR_CLAUDE_API_TOKEN": "<YOUR_DEAR_CLAUDE_API_TOKEN>",
"TAILSCALE_HOSTNAME": "<YOUR_TAILSCALE_HOSTNAME>",
"GITHUB_CLIENT_ID": "<YOUR_GITHUB_CLIENT_ID>",
"GITHUB_CLIENT_SECRET": "<YOUR_GITHUB_CLIENT_SECRET>",
"GITHUB_WEBHOOK_SECRET": "<YOUR_GITHUB_WEBHOOK_SECRET>",
"GITHUB_ACCESS_TOKEN": "<YOUR_GITHUB_ACCESS_TOKEN>",
"GITHUB_APP_ID": "<YOUR_GITHUB_APP_ID>",
"GITHUB_APP_PRIVATE_KEY_PATH": "<YOUR_GITHUB_APP_PRIVATE_KEY_PATH>",
"LINEAR_CLIENT_ID": "<YOUR_LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<YOUR_LINEAR_CLIENT_SECRET>",
"LINEAR_WEBHOOK_SECRET": "<YOUR_LINEAR_WEBHOOK_SECRET>",
"LINEAR_ACCESS_TOKEN": "<YOUR_LINEAR_ACCESS_TOKEN>",
"JIRA_DOMAIN": "<YOUR_JIRA_DOMAIN>",
"JIRA_USER_EMAIL": "<YOUR_JIRA_USER_EMAIL>",
"JIRA_API_TOKEN": "<YOUR_JIRA_API_TOKEN>",
"JIRA_WEBHOOK_SECRET": "<YOUR_JIRA_WEBHOOK_SECRET>",
"GITLAB_ACCESS_TOKEN": "<YOUR_GITLAB_ACCESS_TOKEN>",
"GITLAB_WEBHOOK_SECRET": "<YOUR_GITLAB_WEBHOOK_SECRET>",
"NOTION_CLIENT_ID": "<YOUR_NOTION_CLIENT_ID>",
"NOTION_CLIENT_SECRET": "<YOUR_NOTION_CLIENT_SECRET>",
"NOTION_ACCESS_TOKEN": "<YOUR_NOTION_ACCESS_TOKEN>",
"NOTION_WEBHOOK_SECRET": "<YOUR_NOTION_WEBHOOK_SECRET>",
"OBSIDIAN_VAULT_PATH": "<YOUR_OBSIDIAN_VAULT_PATH>",
"GIPHY_API_KEY": "<YOUR_GIPHY_API_KEY>"
}
}
}
}Let your agent find its tools
Find servers like Dear Claude MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.