mcp bear

Local 2025-08-31 23:16:01 0

Facilitates interaction with Bear note-taking software, allowing users to perform actions like opening notes, creating notes, and searching through Bear's X-callback-url Scheme.


[!IMPORTANT] This application is currently under development. A known issue exists where a browser opens for every API call.

Python Application GitHub License pre-commit Ruff smithery badge

A MCP server for interacting with Bear note-taking software.

Bear Server MCP server

Installation

For Goose CLI

To enable the Bear extension in Goose CLI, edit the configuration file ~/.config/goose/config.yaml to include the following entry:

extensions:
  bear:
    name: Bear
    cmd: uvx
    args: [--from, git+https://github.com/jkawamoto/mcp-bear, mcp-bear]
    envs: { "BEAR_API_TOKEN": "<YOUR_TOKEN>" }
    enabled: true
    type: stdio

For Goose Desktop

Add a new extension with the following settings:

  • Type: Standard IO
  • ID: bear
  • Name: Bear
  • Description: Interacting with Bear note-taking software
  • Command: uvx --from git+https://github.com/jkawamoto/mcp-bear mcp-bear
  • Environment Variables: Add BEAR_API_TOKEN with your api token

For more details on configuring MCP servers in Goose Desktop, refer to the documentation: Using Extensions - MCP Servers.

For Claude Desktop

To configure this server for Claude Desktop, edit the claude_desktop_config.json file with the following entry under mcpServers:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jkawamoto/mcp-bear",
        "mcp-bear",
        "--token",
        "<YOUR_TOKEN>"
      ]
    }
  }
}
After editing, restart the application. For more information, see: For Claude Desktop Users - Model Context Protocol.

Installing via Smithery

To install Bear MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @jkawamoto/mcp-bear --client claude

Actions Implemented

The server supports the following actions. Refer to Bear's X-callback-url Scheme documentation for details on each action.

  • /open-note
  • /create
  • /add-text
  • /add-file
  • /tags
  • /open-tag
  • /rename-tag
  • /delete-tag
  • /trash
  • /archive
  • /untagged
  • /todo
  • /today
  • /locked
  • /search
  • /grab-url

License

This application is licensed under the MIT License. See the LICENSE file for more details.

[
  {
    "description": "Open a note identified by its title or id and return its content.",
    "inputSchema": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "note unique identifier",
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "note title",
          "title": "Title"
        }
      },
      "title": "open_noteArguments",
      "type": "object"
    },
    "name": "open_note"
  },
  {
    "description": "Create a new note and return its unique identifier. Empty notes are not allowed.",
    "inputSchema": {
      "properties": {
        "tags": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "list of tags",
          "title": "Tags"
        },
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "note body",
          "title": "Text"
        },
        "timestamp": {
          "default": false,
          "description": "prepend the current date and time to the text",
          "title": "Timestamp",
          "type": "boolean"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "note title",
          "title": "Title"
        }
      },
      "title": "createArguments",
      "type": "object"
    },
    "name": "create"
  },
  {
    "description": "Return all the tags currently displayed in Bear’s sidebar.",
    "inputSchema": {
      "properties": {},
      "title": "tagsArguments",
      "type": "object"
    },
    "name": "tags"
  },
  {
    "description": "Show all the notes which have a selected tag in bear.",
    "inputSchema": {
      "properties": {
        "name": {
          "description": "tag name or a list of tags divided by comma",
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "open_tagArguments",
      "type": "object"
    },
    "name": "open_tag"
  },
  {
    "description": "Select the Todo sidebar item.",
    "inputSchema": {
      "properties": {
        "search": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "string to search",
          "title": "Search"
        }
      },
      "title": "todoArguments",
      "type": "object"
    },
    "name": "todo"
  },
  {
    "description": "Select the Today sidebar item.",
    "inputSchema": {
      "properties": {
        "search": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "string to search",
          "title": "Search"
        }
      },
      "title": "todayArguments",
      "type": "object"
    },
    "name": "today"
  },
  {
    "description": "Show search results in Bear for all notes or for a specific tag.",
    "inputSchema": {
      "properties": {
        "tag": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "tag to search into",
          "title": "Tag"
        },
        "term": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "string to search",
          "title": "Term"
        }
      },
      "title": "searchArguments",
      "type": "object"
    },
    "name": "search"
  },
  {
    "description": "Create a new note with the content of a web page and return its unique identifier.",
    "inputSchema": {
      "properties": {
        "tags": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": {
            "path": "uv.lock",
            "type": "blob"
          },
          "description": "list of tags. If tags are specified in the Bear’s web content preferences, this parameter is ignored.",
          "title": "Tags"
        },
        "url": {
          "description": "url to grab",
          "title": "Url",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "title": "grab_urlArguments",
      "type": "object"
    },
    "name": "grab_url"
  }
]