Unofficial mymind API client, CLI, and MCP server
Project description
mymind-api
Unofficial Python API client, CLI, and MCP server for mymind.
Your mymind is full of things that define how you think — the articles that shaped your perspective, the tweets that resonated, the snippets you highlighted, the ideas you saved at 2am. It's the richest, most personal context you have. When you're working with Claude Code or Obsidian, that context is what makes AI actually useful to you specifically, not just generically.
mymind doesn't have a public API. So this project reverse-engineers their internal endpoints — giving you a Python client, a CLI, and an MCP server so Claude Code (or any AI tool) can search, read, and manage your mymind.
Install
pip install mymind-api
Login
mymind login
This opens mymind in your default browser. Sign in with Google or Apple as usual.
Once you're signed in and can see your cards:
- Open DevTools (
Cmd+Option+Ion Mac,F12on Windows) - Go to the Network tab
- In the Network tab's filter bar at the top, type
cards— this filters out noise so you can spot the right request - Now refresh the page (
Cmd+R/Ctrl+R) — a request calledcardswill appear in the list - Right-click the
cardsrequest → Copy as cURL - Go back to your terminal where
mymind loginis waiting, paste it, and wait 2 seconds
Note: The
cardsrequest only fires on page load, which is why you need to set up the filter before refreshing. If you refresh first, you'll miss it.
You can also click the
cardsrequest, copy the raw request headers, and paste those instead — the parser extracts tokens from either format.
Tokens are stored in your system keychain (macOS Keychain / Windows Credential Locker), never in plaintext files. If they expire, you'll be prompted to re-authenticate.
Python API
from mymind_api import MyMind
mind = MyMind()
# Cards
cards = mind.get_all_cards()
card = mind.get_card_content(card_id)
obj = mind.get_object(card_id)
# Search & filter
results = mind.search("startup ideas")
mind.filter_cards(tag="design", domain="x.com")
mind.filter_cards(card_type="Snippet", text="quote")
# Images
image_bytes = mind.get_card_image(card_id) # raw bytes (webp)
image_url = mind.get_card_image_url(card_id) # authenticated URL
# Create
mind.create_note("# Hello", title="My Note", tags=["idea"])
mind.save_url("https://example.com", tags=["reading"])
# Update
mind.update_object(card_id, {"title": "New Title"})
mind.delete_card(card_id)
# Tags
mind.get_tags() # all tags
mind.get_object_tags(card_id) # tags on a card
mind.add_tag(card_id, "important")
mind.remove_tag(card_id, "old-tag")
# Spaces
mind.get_spaces()
mind.create_space("Research")
mind.create_smart_space("AI Articles", ["ai", "type:webpage"])
mind.delete_space(space_id)
CLI
mymind list # list all cards
mymind search "AI" # search cards
mymind note "# My idea" -t "Title" --tags "startup,ai"
mymind save "https://example.com" --tags "reading"
mymind delete <card-id>
mymind tag <card-id> "new-tag"
mymind test # test connection
mymind logout # remove tokens
MCP Server (Claude Code, Claude Desktop, Cursor, etc.)
mymind-mcp
Add to Claude Code:
claude mcp add --transport stdio mymind -- mymind-mcp
Or Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mymind": {
"command": "mymind-mcp"
}
}
}
MCP tools
| Tool | Description |
|---|---|
search_mymind |
Search and filter cards by text, tag, domain, and/or content type |
list_recent_cards |
List most recently saved cards |
get_card |
Get full card metadata |
get_card_content |
Get card content (prose, notes, tags, source) |
get_card_image |
Get a card's image so the LLM can see it |
create_note |
Create a note with markdown content |
save_url |
Save a URL/bookmark |
update_card |
Update a card's title |
delete_card |
Delete a card |
list_tags |
List all tags sorted by usage |
get_card_tags |
Get tags on a specific card |
add_tag |
Add a tag to a card |
remove_tag |
Remove a tag from a card |
list_spaces |
List all spaces |
create_space |
Create a manual space |
create_smart_space |
Create a smart space with filters |
delete_space |
Delete a space |
Syncing with Obsidian
You can use this API to move cards between mymind and Obsidian. A few conventions that help:
-
mymind → Obsidian: Tag imported notes with
mymindin Obsidian so you know where they came from. When tagging, use your Obsidian vault's existing tag taxonomy — not the tags from mymind. mymind's tags are AI-generated and tend to be noisy, while your Obsidian tags are a curated system built to create specific connections and clusters. Let your vault's structure dictate how the content gets organized. -
Obsidian → mymind: Tag imported cards with
obsidianin mymind so you can filter them later.
This keeps both systems clean and makes it easy to trace where content originated.
Disclaimer
This is an unofficial project. mymind does not provide a public API — this may break if they change their internal endpoints.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mymind_api-0.1.0.tar.gz.
File metadata
- Download URL: mymind_api-0.1.0.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9766df030f4acb4029c2e2b37e777e154a118383307b8d1336b8b7f5061af6c2
|
|
| MD5 |
325e0ff0a7531d9b041dbb2db884de10
|
|
| BLAKE2b-256 |
7d80870ec79c4b9f3efa78adef423b95c65921359ccca16ded81fc1bc0a3e089
|
File details
Details for the file mymind_api-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mymind_api-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69e178256d644d5eb3d7a63c414c296e973a8e9420d0d3097b9420e83d40be3c
|
|
| MD5 |
761816f71c34368c23950b3c761ef6e7
|
|
| BLAKE2b-256 |
52aad7ec7082a32525c670d5d0954648f91e0120aee50e72d6074c24e592bd3f
|