Skip to main content
Glama
kurokeita

quotable-api-mcp

by kurokeita

quotable-api-mcp

A Model Context Protocol (MCP) server built with mcp-framework.

Quick Start

# Install dependencies
npm install

# Build the project
npm run build

Related MCP server: Bootstrap MCP Server

Project Structure

quotable-api-mcp/
├── src/
│   ├── tools/        # MCP Tools
│   │   └── ExampleTool.ts
│   └── index.ts      # Server entry point
├── package.json
└── tsconfig.json

Adding Components

The project comes with an example tool in src/tools/ExampleTool.ts. You can add more tools using the CLI:

# Add a new tool
mcp add tool my-tool

# Example tools you might create:
mcp add tool data-processor
mcp add tool api-client
mcp add tool file-handler

Tool Development

Example tool structure:

import { MCPTool } from "mcp-framework";
import { z } from "zod";

interface MyToolInput {
  message: string;
}

class MyTool extends MCPTool<MyToolInput> {
  name = "my_tool";
  description = "Describes what your tool does";

  schema = {
    message: {
      type: z.string(),
      description: "Description of this input parameter",
    },
  };

  async execute(input: MyToolInput) {
    // Your tool logic here
    return `Processed: ${input.message}`;
  }
}

export default MyTool;

Publishing to npm

  1. Update your package.json:

    • Ensure name is unique and follows npm naming conventions

    • Set appropriate version

    • Add description, author, license, etc.

    • Check bin points to the correct entry file

  2. Build and test locally:

    npm run build
    npm link
    quotable-api-mcp  # Test your CLI locally
  3. Login to npm (create account if necessary):

    npm login
  4. Publish your package:

    npm publish

After publishing, users can add it to their claude desktop client (read below) or run it with npx


## Using with Claude Desktop

### Local Development

Add this configuration to your Claude Desktop config file:

**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "quotable-api-mcp": {
      "command": "node",
      "args":["/absolute/path/to/quotable-api-mcp/dist/index.js"]
    }
  }
}

After Publishing

Add this configuration to your Claude Desktop config file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "quotable-api-mcp": {
      "command": "npx",
      "args": ["quotable-api-mcp"]
    }
  }
}

Building and Testing

  1. Make changes to your tools

  2. Run npm run build to compile

  3. The server will automatically load your tools on startup

Learn More

Available Tools

2 tools
health-checkD

HealthCheck tool description

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose side effects, safety, and return behavior. The placeholder text reveals nothing about whether this is read-only, what it returns, or what side effects it may have.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but this is under-specification, not concise efficiency. A single placeholder sentence with no substantive content does not earn credit for conciseness because it fails to communicate essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and an empty parameter schema, the description is the only source of context. 'HealthCheck tool description' provides none, leaving the agent with no understanding of purpose, behavior, or expected output.

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 properties, so there are no parameter semantics for the description to clarify. Per the scoring rule, a zero-parameter tool receives a baseline of 4 because no parameter ambiguity exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'HealthCheck tool description' is a placeholder that simply repeats the tool name without stating an action, resource, or outcome. It does not use a specific verb like 'perform' or 'check' and therefore gives the agent no concrete sense of what the tool actually does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool or how it differs from the sibling tool 'random-quote'. The description contains no context, prerequisites, or exclusion criteria, so the agent cannot decide when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random-quoteB

Get a random quote from the API

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags to search for
queryNoQuery to search for
authorNoAuthor of the quote

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the full burden of behavioral disclosure. It only states 'Get a random quote from the API' without revealing side effects, randomness behavior, error handling, or how the parameters affect the result. This lacks transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words, making it efficient for its length. However, it is terse and omits useful context about parameters, though this is more a completeness issue than a conciseness one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description needs to compensate by explaining how to invoke the tool correctly, including parameter usage and return value. It only covers the basic action and leaves the agent guessing about the response format and how filters are applied, making it incomplete for a tool with three optional parameters.

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 input schema has 100% coverage with descriptions for each parameter, so the baseline is 3. The description itself adds no additional meaning about the parameters, nor does it explain how tags, query, and author influence the random selection, leaving the agent to rely solely on the schema's minimal descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's function with a specific verb ('Get') and resource ('a random quote'), and it is distinct from the sibling health-check tool. However, it fails to mention the tool's filtering capabilities (tags, query, author), which are part of its purpose.

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 implies the tool should be used when a random quote is needed, but it gives no explicit guidance on when to use filtering parameters or how this tool compares to alternatives. Since the only sibling is health-check, the distinction is obvious, but the usage context is not fully elaborated.

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.

  1. 2 tool updatesv0.0.1
    • First observedhealth-check
    • First observedrandom-quote

TDQS

C2.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one checks server health and the other fetches a quote. There is no overlap or ambiguity between them.

Naming Consistency4/5

Both tool names follow a consistent kebab-case pattern with two words. However, they use adjectives/nouns rather than a verb-noun convention, so the style is internally consistent but less typical.

Tool Count3/5

With only two tools, the server feels thin for a quotes API, but it could be intentionally minimal. The count is borderline and within the acceptable range for a single-purpose service.

Completeness2/5

The server only offers a random quote and a health check. Missing obvious operations like searching quotes, fetching by ID, or listing authors leaves significant gaps for a full-featured quotes API.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A template project for quickly building Model Context Protocol (MCP) servers using TypeScript and the official SDK. It includes pre-configured examples for tools and resources to help developers jumpstart their custom MCP server development.
    78 npm
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A starter template for building Model Context Protocol (MCP) servers with Node.js. It provides a foundational structure and an example tool to help developers quickly scaffold and deploy new MCP capabilities.
    8 npm
    1
    -