Skip to main content
Glama
lazyturtle22

motivate-mcp

by lazyturtle22

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 install

Use 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

motivate

Returns a quote matched to a task description. Takes task (string) and optional avoid_repeats (boolean, default true)

list_topics

Lists every topic and how many quotes sit under it

explain_match

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, by starts with attributed to. Do not strip that prefix to make it look tidier.

  • Proverbs and genuinely anonymous lines are credited as Proverb or Anonymous.

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 test

Nine tests using the built-in node:test runner. No framework, no build step.

Licence

MIT. See LICENSE.

Available Tools

3 tools
explain_matchA

Show which topics a task description matches and why, without returning a quote. Useful for tuning the keyword map.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task description to analyse.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA 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_repeatsNoSkip quotes already served this session. Defaults to true.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv1.0.0
    • First observedexplain_match
    • First observedlist_topics
    • First observedmotivate

TDQS

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    This 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A sample MCP server that fetches random inspirational quotes, programming jokes, and advice from public APIs. Provides three simple tools for testing and demonstration purposes.
    -

Latest Blog Posts

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