mcp_quote_server
This MCP server provides quote-related tools for MCP clients.
List available categories with
list_categories: Returns a comma-separated list of all quote categories (e.g., creativity, engineering, humor, motivation, stoicism).Get a random quote with
get_quote: Provide a category name to receive a random quote from that category; returns an empty string if the category is unknown or has no quotes.
The server works locally from a JSON file, requires no API key, and integrates with any MCP host supporting STDIO (e.g., Claude Code, MCP Inspector).
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., "@mcp_quote_servergive me a motivation 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.
mcp_quote_server
MCP server implementation
Setup MCP configuration
Ensure the .mcp.json points to correct root folder of the project
Related MCP server: Quotes By Api Ninjas MCP Server
Part 0: Run MCP Server
uv run python quote_server/quote_mcp_server.pyPart 1: The MCP server (no API key needed)
The server is quote_server/quote_mcp_server.py:
~65 lines built on the MCP Python SDK's FastMCP helper. It reads
quotes.json and exposes two tools:
Tool | Input | Returns |
| — | The categories that have quotes |
|
| A random quote, or nothing if the category is unknown/empty |
1.1 — Smoke-test it (recommended)
try_server.py launches the server
over STDIO, speaks MCP to it, and prints a few sample calls. No LLM, no browser,
no Node — just the mcp SDK you already installed:
uv run python try_server.pyTools: list_categories, get_quote
Categories: creativity, engineering, humor, motivation, stoicism
A stoic quote: “We suffer more often in imagination than in reality.” — Seneca
Unknown category 'banana': '' (nothing, as expected)That's a complete, working MCP server. Everything below is just pointing different hosts at it.
1.2 — Optional: the MCP Inspector
The MCP Inspector is Anthropic's official tool for poking at servers (needs Node/npx). It has two modes.
CLI mode (recommended — no browser, scriptable):
# list the tools
npx @modelcontextprotocol/inspector --cli \
uv run python quote_server/quote_mcp_server.py \
--method tools/list
# call a tool
npx @modelcontextprotocol/inspector --cli \
uv run python quote_server/quote_mcp_server.py \
--method tools/call --tool-name get_quote --tool-arg category=stoicismThe second command prints the quote as JSON. (If your npm registry rejects
scoped packages, add --registry=https://registry.npmjs.org to npx.)
GUI mode:
Point the Inspector at our .mcp.json (the same file Claude Code uses) and
name the server — it opens with the STDIO transport and command pre-filled:
npx @modelcontextprotocol/inspector --config .mcp.json --server quotesA browser tab opens with Transport Type: STDIO, Command: uv, and our
arguments already populated. Click Connect (top-left) — the status flips to
Connected — then open the Tools tab, List Tools, and run them.
(The committed .mcp.json has an absolute --directory path. If you cloned the
repo somewhere other than ~/git/summit-ai-mcp-demo, edit that path first — or
regenerate the file with the Claude Code step in 3.1.)
Part 2: Claude Code
claude mcp add quotes --scope project \
-- uv --directory ~/Dev/Python/mcp_quote_server run python quote_server/quote_mcp_server.pyThis writes a .mcp.json in the repo (already committed here as a reference).
Run claude in the repo and approve the project server when prompted, then:
> give me a quote about creativityVerify anytime with inside claude with /mcp
Part 3: Graphify the codebase
Use lower-cost model like minimax3 using Ollama in Claude code
ollama launch claude --model minimax-m3:cloudGraphify the codebase inside ~/Dev/Python/mcp_quote_server, using skill
/graphify .The code-base graph would be available inside folder graphify-out
Available Tools
2 toolsget_quoteA
Return a random quote for the given category.
Returns an empty string when the category is unknown or has no quotes, so the assistant can tell the user nothing was found.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns a random quote and explicitly states the empty string behavior for unknown categories. This provides good transparency for a simple read-only 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 two concise sentences, front-loaded with the main purpose, and contains no unnecessary words. Every sentence adds value.
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 the tool's simplicity and the existence of an output schema, the description covers the main behavior (return random quote) and the empty-string edge case. It is fairly complete, though it could mention that valid categories come from list_categories.
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?
Schema description coverage is 0% for the 'category' parameter. The description only says 'given category' without explaining what constitutes a valid category or hinting at using list_categories to obtain valid values. This is insufficient guidance given the lack of schema descriptions.
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 purpose: 'Return a random quote for the given category.' This is a specific verb-resource pair. The sibling tool list_categories is for listing categories, so this tool clearly differentiates itself.
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 explains the edge case of an unknown or empty category by returning an empty string, allowing the assistant to inform the user. This provides context on when to use the tool and how to handle results, though it does not explicitly state when to use versus list_categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesA
List the categories that have at least one quote, comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that only categories with at least one quote are listed and that the result is comma-separated. This is reasonably transparent for a read-only list operation, though no side effects or prerequisites are mentioned.
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, front-loaded sentence with no unnecessary words. Every part earns its place.
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?
The tool is simple with zero parameters and an existing output schema. The description adds the critical detail of comma-separated format and the filtering condition. It is complete for this straightforward list operation.
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?
There are no parameters, and the schema coverage is 100% trivially. The description adds no parameter information because none exist, so the baseline of 4 is appropriate.
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 verb 'List' and the resource 'categories that have at least one quote', with specific filtering and format ('comma-separated'). It is easily distinguishable from the sibling tool 'get_quote', which retrieves a single quote.
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 implies usage for retrieving a list of non-empty categories, but does not explicitly state when to use or avoid it relative to the sibling 'get_quote'. The context is clear but lacks explicit exclusion or alternative guidance.
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.
2 tool updates
v0.1.0- First observed
get_quote - First observed
list_categories
TDQS
The two tools, get_quote and list_categories, have clearly distinct purposes: one retrieves a random quote for a given category, the other lists available categories. There is no overlap or ambiguity.
Both tool names follow a consistent verb_noun pattern (get_quote, list_categories), making them predictable and easy to understand.
With only 2 tools, the server is minimal but still functional for a simple quote retrieval purpose. However, it feels thin and might benefit from additional tools like search or management operations.
The server covers only basic retrieval (random quote by category and category listing). Missing obvious operations such as adding, updating, deleting quotes, or retrieving all quotes. This leads to significant gaps for a full quote management system.
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
Quotes MCP — citation-grade quote API for public-domain authors.
AnimeQuotes MCP — wraps animechan.io (free, no auth)
Related MCP Servers
- 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.-
- AlicenseBqualityDmaintenanceEnables retrieval of random inspirational quotes from various categories including age, art, business, courage, education, friendship, happiness, leadership, and many more through the API Ninjas Quotes API.1MIT
- AlicenseNot gradedqualityCmaintenanceWraps the Open Trivia Database to provide trivia categories and questions via MCP tools.5MIT
- AlicenseAqualityBmaintenanceAn MCP server that returns motivational quotes matched to the task you're working on, with tools to list topics and explain matches. It also includes a hook for receiving a quote on every prompt submission.3MIT
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/productiveAnalytics/mcp_quote_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server