mcp_quote_server
# mcp_quote_server
MCP server implementation
## Setup MCP configuration
Ensure the `.mcp.json` points to correct root folder of the project
## Part 0: Run MCP Server
```
uv run python quote_server/quote_mcp_server.py
```
## Part 1: The MCP server (no API key needed)
The server is [`quote_server/quote_mcp_server.py`](quote_server/quote_mcp_server.py):
~65 lines built on the MCP Python SDK's `FastMCP` helper. It reads
[`quotes.json`](quotes.json) and exposes two tools:
| Tool | Input | Returns |
| --- | --- | --- |
| `list_categories` | — | The categories that have quotes |
| `get_quote` | `category` | A random quote, or nothing if the category is unknown/empty |
### 1.1 — Smoke-test it (recommended)
[`try_server.py`](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:
```bash
uv run python try_server.py
```
```
Tools: 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](https://github.com/modelcontextprotocol/inspector) is
Anthropic's official tool for poking at servers (needs Node/npx). It has two
modes.
**CLI mode (recommended — no browser, scriptable):**
```bash
# 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=stoicism
```
The 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:
```bash
npx @modelcontextprotocol/inspector --config .mcp.json --server quotes
```
A 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](#31--claude-code).)
## Part 2: Claude Code
```bash
claude mcp add quotes --scope project \
-- uv --directory ~/Dev/Python/mcp_quote_server run python quote_server/quote_mcp_server.py
```
This 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 creativity
```
Verify anytime with inside claude with `/mcp`
## Part 3: Graphify the codebase
Use lower-cost model like minimax3 using Ollama in Claude code
```bash
ollama launch claude --model minimax-m3:cloud
```
Graphify the codebase inside ~/Dev/Python/mcp_quote_server, using skill
```
/graphify .
```
The code-base graph would be available inside folder `graphify-out`
TDQS
Scored across 2 tools
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.