EpicMe MCP
An application that demonstrates the future of user interactions through natural language with LLMs, enabling user registration, authentication, and data interaction exclusively via Model Context Protocol (MCP) tools.
README Documentation
EpicMe MCP
This is an example of an application that's exclusively accessible via Model Context Protocol (MCP).
Everything from user registration and authentication to interacting with user data is handled via MCP tools.
The goal is to demonstrate a possible future of applications where users interact with our apps via natural language with LLMs and the MCP protocol. This will also be the basis upon which I will teach how to build MCP tools on EpicAI.pro.
How to Use
⚠️ Important Disclaimer: This is an experimental playground, not a production service. There are no SLAs, guarantees of data privacy, or data retention policies. Use at your own risk and don't store anything important or sensitive.
Server URL
The EpicMe MCP server is deployed at:
https://epic-me-mcp.kentcdodds.workers.dev/mcp
What You Can Do
EpicMe is a personal journaling application that allows you to:
- Create and manage journal entries with titles, content, mood, location, weather, and privacy settings
- Organize entries with tags for better categorization and filtering
- Get AI-powered tag suggestions for your entries
- Summarize your journal entries with optional filtering by tags or date range
- Mark entries as favorites and set privacy levels
Getting Started
- Connect to the MCP server using your preferred MCP client (like Claude Desktop)
- Authenticate by providing your email address - you'll receive a validation code
- Start journaling using natural language commands
Authentication Flow
The authentication is unique because it works with users who don't exist yet:
- Use the
authenticate
tool with your email address - Check your email for a TOTP validation code
- Use the
validate_token
tool with the code to complete authentication - You're now logged in and can access all authenticated features
Available Tools
Authentication Tools (Unauthenticated)
authenticate
- Start authentication process with your emailvalidate_token
- Complete authentication with emailed validation code
User Management Tools (Authenticated)
whoami
- Get information about the current userlogout
- Remove authentication
Journal Entry Tools (Authenticated)
create_entry
- Create a new journal entry with optional tags, mood, location, weatherget_entry
- Retrieve a specific journal entry by IDlist_entries
- List all entries, optionally filtered by tagsupdate_entry
- Update any field of an existing entrydelete_entry
- Delete a journal entry
Tag Management Tools (Authenticated)
create_tag
- Create a new tag for organizing entriesget_tag
- Get details of a specific taglist_tags
- List all your tagsupdate_tag
- Update tag propertiesdelete_tag
- Delete a tagadd_tag_to_entry
- Associate a tag with an entry
Available Prompts
suggest_tags
- Get AI-powered tag suggestions for a specific journal entrysummarize_journal_entries
- Get a summary of your journal entries, with optional filtering by tags or date range
Available Resources
epicme://credits
- Credits informationepicme://users/current
- Current user informationepicme://entries/{id}
- Specific journal entry dataepicme://entries
- List of all journal entriesepicme://tags/{id}
- Specific tag dataepicme://tags
- List of all tags
Example Usage
Here are some example natural language commands you can use:
- "Authenticate me with my email address"
- "Create a new journal entry about my day at the beach"
- "List all my journal entries"
- "Show me entries tagged with 'work'"
- "Suggest tags for my latest entry"
- "Summarize my journal entries from last week"
- "Update my entry to mark it as a favorite"
- "Create a new tag called 'personal goals'"
Authentication
The authentication flow is unique because we need to be able to go through OAuth for users who don't exist yet (users need to register first). So we generate a grant automatically without the user having to go through the OAuth flow themselves. Then we allow the user to claim the grant via a TOTP code which is emailed to them.
This works well enough.
Known Issues
During development, if you delete the .wrangler
directory, you're deleting the
dynamically registered clients. Those clients don't know that their entries have
been deleted so they won't attempt to re-register. In the MCP Inspector, you can
go in the browser dev tools and clear the session storage and it will
re-register. In other clients I do not know how to make them re-register.