Skip to main content
Glama
Abanoub-Rodolf

mcp-server-starter-demo

MCP Server Starter Demo

A free, deliberately small TypeScript MCP server from ThynkQ. It uses the current official SDK, runs over stdio, validates every input with Zod, and exposes two pure in-memory tools:

  • echo: returns validated text unchanged;

  • text_stats: counts words and characters.

It does not read files, call the network, spawn subprocesses, or accept secrets.

Run it

Requires Node.js 22 or newer.

npm install
npm run check
npm start

Build first, then copy configs/claude-desktop.example.json and replace the placeholder with the absolute path to dist/index.js.

Related MCP server: HelloWorld MCP Server

Why this repository is limited

This is a public teaching demo, not the paid production starter. It intentionally omits:

  • streamable HTTP transport;

  • bearer authentication and constant-time comparison;

  • rate limiting and DNS rebinding protection;

  • structured redacted logging;

  • typed safe error handling;

  • the 72-test transport and security suite;

  • three production client configurations and saved scan proof.

Those hardening layers are part of MCP Server Starter Pro, which is in final storefront preparation. Follow ThynkQ's MCP work for the release.

If you need a human review of a production MCP deployment, see ThynkQ's MCP Risk Review.

Before connecting a third-party MCP server, run the free MCP Security Review Preview. It is a limited Claude Code preflight that keeps raw scanner evidence outside model-facing output.

Also free: the mcp-scan security scanner, and the MCP Security Evidence Redactor for safe severity-count summaries of scan output.

Security model

The client launches this process and communicates over stdin/stdout. All operational logging goes to stderr so stdout remains reserved for JSON-RPC. Both example tools are pure functions with bounded inputs.

License

MIT. See LICENSE.

Built by Abanoub Rodolf Boctor at ThynkQ.

Available Tools

2 tools
echoEchoA

Return a validated text value unchanged. No filesystem, network, or subprocess access.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesText to return unchanged.

TDQS

A4.1/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 burden of disclosing behavior. It explicitly notes 'No filesystem, network, or subprocess access,' which is a useful transparency statement about side effects. However, it does not describe validation details or error behavior, which is a minor gap.

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 sentence that is perfectly front-loaded. Every word adds value, and the safety clarification is concise. No wasted space 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 one fully documented parameter and an obvious return value, the description is complete. The safety constraint is included, making the context clear. No output schema is needed because the output is simply the input text.

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?

Schema coverage is 100% and the parameter description 'Text to return unchanged' is clear. The description adds the word 'validated' but does not elaborate on what validation entails. Overall, the schema does most of the heavy lifting, so a baseline of 3 is appropriate.

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 validated text value unchanged.' It uses a specific verb ('return') and resource ('text value'), and distinguishes itself from the sibling tool by specifying it has no side effects or external access.

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?

Usage is implied by the description and name, but there is no explicit guidance on when to use this tool versus the sibling 'text_stats.' The description mentions safety constraints but does not provide context for when it is appropriate to choose echo over alternatives.

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

text_statsText statisticsA

Count words and characters in memory. No filesystem, network, or subprocess access.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to measure.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses the key behavioral boundary ('No filesystem, network, or subprocess access') but does not explain counting conventions, edge cases, or the exact return format.

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 short sentences, front-loading the core purpose and then stating constraints. Every word earns its place with no redundancy or filler.

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 single-parameter tool with no output schema, the description adequately communicates purpose, scope, and safety boundaries. The only minor gap is the lack of explicit mention of the return shape, but it is reasonably inferred from the stated behavior.

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?

Schema description coverage is 100% because the only parameter 'text' already has a clear description ('Text to measure'). The tool description adds useful context that the text is counted, but it does not provide additional parameter-level syntax or usage details beyond 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 a specific verb ('Count') and names the exact resources ('words and characters'), while clarifying the in-memory scope. This clearly distinguishes it from the sibling tool 'echo', which is about outputting text, not computing statistics.

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 usage context: this is a safe, memory-only text measurement tool, and it explicitly rules out filesystem, network, or subprocess access. However, it does not explicitly state when to prefer this over alternatives like 'echo' or provide concrete use-case 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.

  1. 2 tool updatesv1.0.0
    • First observedecho
    • First observedtext_stats

TDQS

A4/5.0
Disambiguation5/5

Echo returns input unchanged, while text_stats computes word and character counts. Their purposes are entirely distinct with no overlap or possibility of confusion.

Naming Consistency3/5

Echo is a bare verb, while text_stats is a compound noun with an underscore. There's no consistent verb_noun pattern, but both are short and readable.

Tool Count4/5

Two tools is below the typical 3-15 range, but for a starter demo server this minimal scope is intentionally appropriate and each tool earns its place.

Completeness5/5

The domain appears to be simple in-memory text operations. Echo and text_stats cover returning text and analyzing it, with no filesystem or network operations claimed, so no obvious gaps exist.

Maintenance

ActivityNo data
ResponsivenessNo issues

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

  • A
    license
    D
    quality
    D
    maintenance
    A minimal Model Context Protocol server in TypeScript that demonstrates MCP-compliant resources and tools for LLMs, featuring simple resources and a basic tool that echoes messages or returns greetings.
    1
    5
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    A demonstration MCP server built in TypeScript that shows how to implement stdio-based communication for integration with MCP clients. Serves as a template for building custom MCP servers with strong typing and maintainability.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight TypeScript-based MCP server that demonstrates how to build custom MCP tools by implementing a simple addition calculator. Serves as a starting point for building MCP-compatible tools.
    1,075
    MIT

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/Abanoub-Rodolf/mcp-server-starter-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server