motivate-mcp
This server provides motivational quotes semantically matched to your current task, with no API key or network calls required. You can:
Get a motivational quote (
motivate): Provide a short task description to receive a relevant quote and author, with optional repeat avoidance within a session.List all topics (
list_topics): See every topic in the quote database and how many quotes each contains.Explain topic matching (
explain_match): Analyze how a task description matches topics and why, without returning a quote—useful for tuning matching logic.Optional hook integration: Automatically inject a matched quote into context on every prompt submission.
Customization: Add new quotes and adjust keyword matching logic, with tests to validate integrity.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@motivate-mcpI'm stuck debugging this error, give me a motivational quote"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
motivate-mcp
An MCP server that returns a motivational quote matched to the task you are actually working on.
essentially you getting cool motivational quotes with their authors which are semantically chosen to your task that your agent is currently working on ! Have fun , learn and use it for good things. Also i suggest go outside more , laugh and give love to others as much as you can. Go and see your parents as much as possible. They won't always be here -- but they would love you to be here for long , and live the life you deserve. Love you.
``
"When you have eliminated the impossible, whatever remains, however improbable, must be the truth." — Arthur Conan Doyle
72 quotes across 57 topics. No API key, no network calls, no telemetry.
## Install
```bash
git clone https://github.com/lazyturtle22/motivate-mcp.git
cd motivate-mcp
npm installUse it as an MCP server
Add it to your MCP client config. For Claude Code, ~/.claude.json:
{
"mcpServers": {
"motivate": {
"command": "node",
"args": ["/absolute/path/to/motivate-mcp/src/index.js"]
}
}
}Restart the client and three tools appear.
Tools
Tool | What it does |
| Returns a quote matched to a task description. Takes |
| Lists every topic and how many quotes sit under it |
| Shows which topics a description matches, without returning a quote. Useful when tuning the keyword map |
Repeats are tracked per session, so a long session will not serve you the same line twice until it runs out of relevant ones.
Related MCP server: Phrases MCP Server
Getting a quote on every message
An MCP tool only fires when the model decides to call it, so it will not reliably hit every message. If you want one every time, use the included hook instead. It runs on every prompt you submit, reads what you typed, and prints a matched quote into the context.
Add to ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/motivate-mcp/hook/motivate-hook.js"
}
]
}
]
}
}Set MOTIVATE_QUIET=1 to silence it without unwiring it. The hook fails silently by
design: a broken quote generator should never be able to break your prompt.
The two can run together. The hook gives you the every-message drip, the MCP tool lets the model ask for one deliberately when it thinks you need it.
How the matching works
src/match.js holds a map of topic to signal words. A task description is scanned for
those words, topics are scored (multi-word phrases count double, since they are stronger
evidence), and quotes are ranked by how well their topics overlap the top matches.
Signals match at a word start, not anywhere in the string. This matters if you add
your own. A plain substring check looks fine until you notice ui fires on "built"
and "guide", try fires on "country", and lead fires on "misleading" — so
you ask about building something and get a quote about design.
There is deliberately no boundary on the end of a signal, so stems still work:
optimis matches "optimising", frustrat matches "frustrated". When adding a short
signal (three characters or fewer), check it against a few real sentences first.
The final pick is randomised across everything within 70% of the best score, so the same input does not always produce the same line.
If nothing matches, it falls back to the whole database rather than returning nothing.
Check what a description matches before adding new signal words:
node -e "import('./src/match.js').then(m => console.log(m.scoreTopics('your text here')))"Adding quotes
Edit src/quotes.js. Each entry is:
{
text: "The quote itself.",
by: "Who said it",
topics: ["debugging", "persistence"],
}Attribution rules, please keep to them:
Where a line is widely repeated but the original wording or source is disputed,
bystarts withattributed to. Do not strip that prefix to make it look tidier.Proverbs and genuinely anonymous lines are credited as
ProverborAnonymous.
Use topics that already exist where you can, so quotes cluster rather than scatter. Run
npm test afterwards, which checks for duplicates, missing authors and orphan topics.
Tests
npm testNine tests using the built-in node:test runner. No framework, no build step.
Licence
MIT. See LICENSE.
Available Tools
3 toolsexplain_matchA
Show which topics a task description matches and why, without returning a quote. Useful for tuning the keyword map.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The task description to analyse. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the core behavior (shows matches and reasons) and a key limitation (without returning a quote), which is useful. However, it does not state whether it is read-only, mentions no side effects, and leaves the return format implicit, so some transparency gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence front-loading the primary purpose and the second adding a practical use case. There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description explains the action, the subject, and a limitation, and it grounds the use case in 'keyword map' tuning. This is nearly complete, though the exact return structure (e.g., how topics and reasons are presented) is not specified, preventing a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter 'task' with a clear description. The tool description adds little beyond echoing 'task description' in the first sentence, so it does not significantly enhance the schema's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it shows which topics a task description matches and why. It also distinguishes itself from siblings by explicitly noting it does not return a quote, differentiating it from list_topics and motivate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('useful for tuning the keyword map'), giving context for when to use it. However, it does not explicitly exclude alternatives or mention sibling tools, so it doesn't fully meet the 'when-not/alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsA
List every topic in the quote database, with how many quotes sit under each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing behavior. The action 'List' implies a read-only operation, and it explicitly specifies the output includes topic counts, providing transparency about the return value. No hidden side effects are indicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully specifies the tool's behavior and return content. Additional details like auth or rate limits are not necessary for this simple read-only operation, so it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds semantic value by specifying 'every topic' indicating no filtering or optional parameters, reinforcing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the exact resource ('every topic in the quote database'), plus adds the detail about quote counts. This clearly distinguishes it from siblings like explain_match and motivate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool over alternatives, but the verb 'List' and scope 'every topic' imply its use for overview purposes. Sibling tool names are self-explanatory, making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motivateA
Return a motivational quote matched to the task currently being worked on. Call this at the start of a reply, passing a short description of what the user is doing, and include the returned line in your response.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | A short description of what is being worked on right now, in plain words. For example "debugging a failing test in the payment module" or "writing the launch announcement". | |
| avoid_repeats | No | Skip quotes already served this session. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states that the tool returns a motivational quote matched to the task and instructs the agent to include it in the response. This is transparent about the core behavior and usage pattern, though it does not discuss edge cases or side effects—acceptable for a benign, quote-returning tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise two-sentence structure. The first sentence states the core purpose, and the second provides clear usage guidance. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and straightforward behavior, the description is complete. It not only explains what the tool does but also how and when to use it, making it fully actionable for an AI agent. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for both parameters. The description reinforces the meaning of 'task' by saying 'passing a short description of what the user is doing,' which adds context beyond the schema's field description. It does not explicitly mention the 'avoid_repeats' parameter, but the schema already covers it, so the baseline is satisfied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Return a motivational quote matched to the task currently being worked on.' It uses a specific verb ('Return') and a resource ('motivational quote'), and defines the scope ('matched to the task currently being worked on'). This distinguishes it from siblings like 'explain_match' and 'list_topics', which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use instructions: 'Call this at the start of a reply, passing a short description of what the user is doing, and include the returned line in your response.' This is clear contextual guidance. It doesn't mention when-not-to-use or name alternative tools, but the instruction is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.0.0- First observed
explain_match - First observed
list_topics - First observed
motivate
TDQS
Each tool has a distinctly separate purpose: explaining matches, returning a quote, and listing topics. The descriptions explicitly differentiate them, such as explain_match clarifying it does not return a quote, leaving no ambiguity.
Two tools follow a clear verb_noun pattern (explain_match, list_topics), while 'motivate' is a single verb. This minor deviation is still intuitive and readable, so the set is mostly consistent.
With only 3 tools, the server is well-scoped for its niche purpose of delivering motivational quotes. Each tool serves a distinct function without unnecessary bloat, fitting comfortably in the typical 3-15 tool range.
The server covers retrieving quotes and explaining matches, but gaps exist: there is no tool to modify the keyword map despite explain_match being for tuning, nor any management for quotes or topics. These missing operations hinder a tuning-focused workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI agent profiles and smart notes. 60+ coding prompt packs with expert personas.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- FlicenseCqualityDmaintenanceThis is an MCP server that facilitates building tools for interacting with various APIs and workflows, supporting Python-based development with potential for customizable prompts and user configurations.1-
- AlicenseAqualityDmaintenanceAn elegant MCP server that lets users manage inspirational phrases directly through Claude for Desktop, offering complete CRUD operations for phrases with author attribution.62,4372MIT
- FlicenseNot gradedqualityDmaintenanceA sample MCP server that fetches random inspirational quotes, programming jokes, and advice from public APIs. Provides three simple tools for testing and demonstration purposes.-
- FlicenseCqualityCmaintenanceA simple MCP server demonstrating resources, tools, and prompts using a local task list. It enables reading, creating, and analyzing tasks through MCP.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lazyturtle22/motivate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server