Skip to main content
Glama
kimhailey

TypeScript MCP Server Boilerplate

by kimhailey

my-mcp-server (Vercel Β· Streamable HTTP)

Next.js App Router 와 mcp-handler μœ„μ—μ„œ λ™μž‘ν•˜λŠ” Vercel λ°°ν¬ν˜• MCP μ„œλ²„μž…λ‹ˆλ‹€. κΈ°μ‘΄ StdioServerTransport 기반 둜컬 μ„œλ²„λ₯Ό Streamable HTTP 트랜슀포트둜 μ΄μ „ν•˜μ—¬ μž„μ˜μ˜ MCP ν΄λΌμ΄μ–ΈνŠΈ(Cursor, Claude Desktop, MCP Inspector λ“±) μ—μ„œ μ›κ²©μœΌλ‘œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„ν‚€ν…μ²˜

MCP Client (Cursor / Inspector)
       β”‚  Streamable HTTP
       β”‚  + x-hf-token header (선택)
       β–Ό
Next.js App Router (on Vercel)
  app/api/[transport]/route.ts
       β”‚
       β–Ό
createMcpHandler ─► McpServer
  β”œβ”€ tools: greet / calculate / time / geocode / weather / generate-image
  β”œβ”€ prompts: code-review
  └─ resources: server-info

[transport] 동적 μ„Έκ·Έλ¨ΌνŠΈλ₯Ό μ‚¬μš©ν•΄ λ§€ μš”μ²­λ§ˆλ‹€ ν•Έλ“€λŸ¬λ₯Ό μƒˆλ‘œ λ§Œλ“€κ³ , μš”μ²­ 헀더 (x-hf-token) 와 ν™˜κ²½λ³€μˆ˜(HF_TOKEN) λ₯Ό ν΄λ‘œμ €λ‘œ μΊ‘μ²˜ν•΄ generate-image 도ꡬ에 μ „λ‹¬ν•©λ‹ˆλ‹€.

Related MCP server: TypeScript MCP Server Boilerplate

ν”„λ‘œμ νŠΈ ꡬ쑰

.
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   └── [transport]/
β”‚   β”‚       └── route.ts   # MCP HTTP μ—”λ“œν¬μΈνŠΈ
β”‚   β”œβ”€β”€ layout.tsx
β”‚   └── page.tsx           # μ•ˆλ‚΄μš© 정적 νŽ˜μ΄μ§€
β”œβ”€β”€ next.config.mjs
β”œβ”€β”€ next-env.d.ts
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── .env.example

λΉ λ₯Έ μ‹œμž‘

1. μ˜μ‘΄μ„± μ„€μΉ˜

npm install

2. ν™˜κ²½λ³€μˆ˜ μ„€μ • (선택)

generate-image 도ꡬλ₯Ό μ‚¬μš©ν•  κ³„νšμ΄λΌλ©΄ .env.example 을 .env.local 둜 λ³΅μ‚¬ν•œ λ’€ HuggingFace 토큰을 μ±„μ›Œ λ„£μŠ΅λ‹ˆλ‹€.

cp .env.example .env.local
# 그리고 HF_TOKEN=hf_xxx... 둜 μˆ˜μ •

ν™˜κ²½λ³€μˆ˜κ°€ 없어도 ν΄λΌμ΄μ–ΈνŠΈκ°€ λ§€ μš”μ²­λ§ˆλ‹€ x-hf-token 헀더λ₯Ό 보내면 λ™μž‘ν•©λ‹ˆλ‹€.

3. 둜컬 μ‹€ν–‰

npm run dev

κΈ°λ³Έ μ—”λ“œν¬μΈνŠΈ:

4. MCP Inspector 둜 검증

npx @modelcontextprotocol/inspector@latest

Inspector UI μ—μ„œ:

  1. Transport: Streamable HTTP

  2. URL: http://localhost:3000/api/mcp

  3. (선택) Custom Headers 에 x-hf-token: hf_xxx... μΆ”κ°€

  4. Connect β†’ List Tools β†’ 각 도ꡬ 호좜 ν…ŒμŠ€νŠΈ

ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²°

Cursor (./.cursor/mcp.json)

{
    "mcpServers": {
        "my-mcp-server": {
            "url": "https://<your-app>.vercel.app/api/mcp",
            "headers": {
                "x-hf-token": "hf_xxx..."
            }
        }
    }
}

url 만 있으면 5개 도ꡬ(greet/calculate/time/geocode/weather)λŠ” 정상 λ™μž‘ν•©λ‹ˆλ‹€. generate-image λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ headers.x-hf-token λ˜λŠ” μ„œλ²„μΈ‘ HF_TOKEN ν™˜κ²½λ³€μˆ˜ 쀑 ν•˜λ‚˜κ°€ λ°˜λ“œμ‹œ ν•„μš”ν•©λ‹ˆλ‹€.

Streamable HTTP 미지원 ν΄λΌμ΄μ–ΈνŠΈ (mcp-remote λΈŒλ¦Ώμ§€)

{
    "mcpServers": {
        "my-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-remote",
                "https://<your-app>.vercel.app/api/mcp",
                "--header",
                "x-hf-token:hf_xxx..."
            ]
        }
    }
}

Vercel 배포

방법 1: Vercel CLI

npm i -g vercel
vercel

방법 2: GitHub 연동

  1. GitHub μ €μž₯μ†Œμ— ν‘Έμ‹œ

  2. https://vercel.com/new μ—μ„œ μ €μž₯μ†Œ 선택

  3. Framework Preset: Next.js (μžλ™ 감지)

  4. Environment Variables μ—μ„œ (선택) HF_TOKEN μΆ”κ°€

  5. Deploy

배포가 μ™„λ£Œλ˜λ©΄ https://<your-app>.vercel.app/api/mcp κ°€ MCP μ—”λ“œν¬μΈνŠΈμž…λ‹ˆλ‹€.

λ“±λ‘λœ 도ꡬ

이름

μ„€λͺ…

greet

이름과 μ–Έμ–΄(ko/en)둜 인사말 생성

calculate

두 숫자 사칙연산 (add/subtract/multiply/divide)

time

νƒ€μž„μ‘΄λ³„ ν˜„μž¬ μ‹œκ°„

geocode

Open-Meteo 둜 λ„μ‹œλͺ… β†’ μœ„κ²½λ„ 쑰회

weather

Open-Meteo 둜 μœ„κ²½λ„ β†’ ν˜„μž¬ 날씨 쑰회

generate-image

HuggingFace FLUX.1-schnell 이미지 생성 (x-hf-token λ˜λŠ” HF_TOKEN)

ν”„λ‘¬ν”„νŠΈ / λ¦¬μ†ŒμŠ€

  • ν”„λ‘¬ν”„νŠΈ code-review: μ½”λ“œλ₯Ό μž…λ ₯λ°›μ•„ μ‹œλ‹ˆμ–΄ μ—”μ§€λ‹ˆμ–΄ κ΄€μ μ˜ 체계적 리뷰 λ©”μ‹œμ§€ 생성

  • λ¦¬μ†ŒμŠ€ server-info (mcp://my-mcp-server/info): μ„œλ²„ 메타데이터(JSON)

HF_TOKEN 처리 μ •μ±…

x-hf-token 헀더 ──(있으면 μ‚¬μš©)──► HuggingFace Inference
       β”‚ (μ—†μŒ)
       β–Ό
HF_TOKEN ν™˜κ²½λ³€μˆ˜ ──(있으면 μ‚¬μš©)──► HuggingFace Inference
       β”‚ (μ—†μŒ)
       β–Ό
generate-image 도ꡬ가 λͺ…ν™•ν•œ μ—λŸ¬ λ©”μ‹œμ§€ λ°˜ν™˜

헀더가 μš°μ„ μ΄λ―€λ‘œ 동일 배포 μΈμŠ€ν„΄μŠ€λ₯Ό μ—¬λŸ¬ μ‚¬μš©μžκ°€ 각자의 ν† ν°μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

슀크립트

  • npm run dev: 둜컬 개발 μ„œλ²„

  • npm run build: ν”„λ‘œλ•μ…˜ λΉŒλ“œ

  • npm run start: λΉŒλ“œ κ²°κ³Ό μ‹€ν–‰

  • npm run lint: Next.js lint

참고 자료

λΌμ΄μ„ μŠ€

MIT

Available Tools

6 tools
calculateA

두 μˆ«μžμ— λŒ€ν•΄ 사칙연산(+, -, *, /)을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes첫 번째 숫자
bYes두 번째 숫자
operationYesμ—°μ‚° μ’…λ₯˜: add(+), subtract(-), multiply(*), divide(/)

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYes계산 κ²°κ³Ό

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose error handling (e.g., division by zero), precision, or side effects. A simple statement of operations is insufficient for a safe 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 single, efficient sentence that conveys the core functionality without any superfluous words. It is well-front-loaded.

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?

Given the simple tool, full schema coverage, and presence of an output schema, the description is largely complete. However, it could mention division-by-zero handling or result types for completeness.

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% with clear parameter descriptions. The description adds overall context but does not provide additional meaning beyond the schema. 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 it performs four arithmetic operations on two numbers, using specific verbs and resources. It distinguishes itself from sibling tools like generate-image, geocode, etc., which serve entirely 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 Guidelines3/5

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

The description implies usage for arithmetic computations but provides no explicit guidance on when to use it versus alternatives or when not to use it. No exclusions or context are given.

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

generate-imageA

HuggingFace FLUX.1-schnell λͺ¨λΈλ‘œ 이미지λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. HF_TOKEN ν™˜κ²½λ³€μˆ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes이미지 생성 ν”„λ‘¬ν”„νŠΈ
num_inference_stepsNoμΆ”λ‘  μŠ€ν… 수 (1~10, κΈ°λ³Έκ°’ 4)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It discloses the model and env requirement, but omits details like error behavior if token is missing, rate limits, or output format. The added context is moderate.

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 sentence, front-loaded with key information (model and env requirement). No fluff, but could potentially add more value without sacrificing conciseness.

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

Completeness3/5

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

Given the low parameter count and full schema coverage, the description is fairly complete but lacks information about output (no output schema) and error handling. It adequately covers prerequisites but falls short on behavioral details.

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% with descriptions for both parameters (prompt, num_inference_steps). The description adds no extra semantic information beyond the schema, so baseline 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 explicitly states that the tool generates an image using the HuggingFace FLUX.1-schnell model, clearly identifying the verb (generate) and resource (image/model). Sibling tools are unrelated (calculate, geocode, etc.), so no ambiguity.

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 mentions the required HF_TOKEN environment variable but provides no guidance on when to use this tool versus alternatives, nor when not to use it. Since siblings are not image-generation tools, usage is implicitly clear but lacks explicit direction.

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

geocodeA

λ„μ‹œ μ΄λ¦„μœΌλ‘œ μœ„λ„Β·κ²½λ„ μ’Œν‘œλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes검색할 λ„μ‹œλͺ… (예: μ„œμšΈ, Tokyo)
languageNoκ²°κ³Ό μ–Έμ–΄ (κΈ°λ³Έκ°’: ko)ko

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not mention behaviors such as error handling, rate limits, or authentication. It only states the basic function, leaving significant gaps.

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, efficient sentence that delivers the core function. No wasted words.

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

Completeness3/5

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

With an output schema present, the return format is likely documented, but the description lacks information on error scenarios or limitations. It is adequate for a simple lookup but not fully complete.

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 description repeats the schema's parameter descriptions without adding new details. Baseline score 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 action (retrieve) and resource (latitude/longitude coordinates) by city name. It is distinct from sibling tools like weather or calculate.

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?

No explicit guidance on when to use this tool vs alternatives. The purpose is clear, but there is no mention of context or exclusions.

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

greetA

이름과 μ–Έμ–΄λ₯Ό μž…λ ₯ν•˜λ©΄ 인사말을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes인사할 μ‚¬λžŒμ˜ 이름
languageNo인사 μ–Έμ–΄ (κΈ°λ³Έκ°’: en)en

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYes인사말

TDQS

A3.9/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 full burden. It states the core behavior (returns a greeting) but does not disclose details like output formatting, error handling, or whether there are side effects. For a simple tool, this is acceptable but not exceptional.

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 covers the tool's purpose without any extraneous words. It is front-loaded with the core action and efficiently communicates the essential 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?

For a simple tool with a complete input schema and an output schema, the description is sufficient. It explains the function clearly, and the remaining details are covered by the structured fields, leaving no significant gaps.

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 provides complete descriptions for both parameters (name, language) with enums and defaults. The description merely restates that they are inputs and does not add additional semantic context beyond the schema, so the baseline score 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 returns a greeting based on a name and language, using a specific verb (λ°˜ν™˜ν•©λ‹ˆλ‹€) and a clear resource (greeting). This is distinct from sibling tools like geocode or get-weather, making its purpose unambiguous.

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 when a greeting is needed, but it does not explicitly state when to use this tool versus alternatives. Since sibling tools are unrelated, no exclusions are necessary, but explicit guidance is absent.

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

timeA

ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoνƒ€μž„μ‘΄ (κΈ°λ³Έκ°’: Asia/Seoul, 예: America/New_York, UTC)Asia/Seoul

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYesν˜„μž¬ μ‹œκ°„ 정보

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral details. It only states the basic return value without specifying format, timezone handling beyond parameter, or any side effects. This leaves important behavioral aspects undisclosed.

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 immediately conveys the tool's purpose. Every word is necessary, and there is no redundant or extraneous information.

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

Completeness3/5

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 is minimally adequate. However, it lacks details about return format or example usage, which would enhance completeness for an agent.

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 covers 100% of the single parameter with a description of timezone. The tool description does not add further semantic value beyond what the schema already provides, so a baseline score 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 returns the current date and time, using a specific verb and resource. It is easily distinguishable from sibling tools like calculate or weather, which cover different domains.

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 state when to use or avoid this tool. However, the purpose is straightforward and implied for any situation needing the current date/time, so it is adequate but lacks explicit guidance or alternatives.

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

weatherB

μœ„λ„Β·κ²½λ„ μ’Œν‘œλ‘œ ν˜„μž¬ 날씨λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYesμœ„λ„
longitudeYes경도

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description only states it queries current weather without detailing behavior like error handling, rate limits, or data format.

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?

Single sentence with clear structure. Efficiently conveys core functionality without extraneous text.

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

Completeness3/5

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

With an output schema present, description need not detail returns. However, lacks edge cases or usage context for a simple weather query.

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% with descriptions for both parameters. Description adds no additional meaning beyond the schema's 'μœ„λ„' and '경도'.

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?

Description clearly states verb (쑰회 = query) and resource (날씨 = weather) with specific input coordinates. Distinct from siblings like geocode and calculate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool or alternatives. Does not mention any prerequisites or exclusions.

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. 6 tool updatesv1.0.0
    • First observedcalculate
    • First observedgenerate-image
    • First observedgeocode
    • First observedgreet
    • First observedtime
    • First observedweather

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose (arithmetic, image generation, geocoding, greeting, time, weather), with no overlap or ambiguity in their intended use.

Naming Consistency4/5

Most tool names are single-word verbs (calculate, geocode, greet, time, weather), with one hyphenated compound (generate-image). This is mostly consistent but the hyphenated name is a minor deviation.

Tool Count4/5

With 6 tools, the count is reasonable for a boilerplate example server. It is neither too sparse nor overly heavy for illustrating various capabilities.

Completeness3/5

As a boilerplate, the tool set does not target a specific domain, so completeness is inherently neutral. The tools cover basic utility examples but lack any overarching purpose or desired workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A boilerplate project for quickly developing MCP servers using TypeScript SDK, featuring example tools (calculator, greeting) and resources with Zod schema validation.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A boilerplate project for quickly developing MCP servers using TypeScript SDK, with example implementations of calculator and greeting tools, plus resource handling capabilities.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A boilerplate project for quickly developing Model Context Protocol (MCP) servers using TypeScript, with example tools (calculator, greet) and resources (server info) pre-implemented.
    31
    -