Skip to main content
Glama
Broflotsky

MCPServerL2

by Broflotsky

🚀 使用 TypeScript 构建的模块化 MCP 服务器 (M5L2)

本项目实现了一种干净、细粒度且模块化的架构,用于使用 TypeScript 和基于 Zod 的模式构建 Model Context Protocol (MCP) 服务器。


📂 项目结构

M5L2/
├── src/
│   ├── schemas/
│   │   ├── sumar.schema.ts      <-- Esquema Zod e inferencia de tipos para 'sumar'
│   │   └── saludar.schema.ts    <-- Esquema Zod e inferencia de tipos para 'saludar'
│   ├── tools/
│   │   ├── sumar.tool.ts        <-- Tool aislada de suma
│   │   ├── saludar.tool.ts      <-- Tool aislada de saludo
│   │   └── index.ts             <-- Registro centralizador de Tools
│   ├── server.ts                <-- Fábrica de creación y configuración del McpServer
│   └── index.ts                 <-- Punto de entrada (Bootstrapping y Transporte STDIO)
├── dist/                        <-- Código transpilado a JavaScript (generado tras 'npm run build')
├── tsconfig.json                <-- Configuración estricta de TypeScript
├── package.json                 <-- Dependencias y scripts
└── README.md

Related MCP server: MCP Server TypeScript Template

📦 安装

运行以下命令安装项目依赖:

npm install

🛠️ 可用脚本

  • 编译(将 TypeScript 编译为 /dist 中的 JavaScript):

    npm run build
  • 运行服务器:

    • 开发模式(直接运行 TS):npm run dev

    • 生产模式(已编译代码):npm start

    💡 注意:由于通过 STDIO 运行,服务器会保持活动状态,等待 JSON-RPC 消息。若要可视化地与之交互,请使用 Inspector。

  • 使用 MCP Inspector 测试:

    npm run inspector

🧪 如何用 MCP Inspector 测试?

Inspector 会启动一个交互式 Web 界面,通过 STDIO 连接到服务器:

  1. 编译项目(如果尚未编译):

    npm run build
  2. 启动 Inspector:

    npm run inspector
  3. 在浏览器中打开终端显示的 URL(例如 http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=...),以交互方式测试 sumarsaludar 工具。

Available Tools

2 tools
saludarB

Genera un saludo personalizado

ParametersJSON Schema
NameRequiredDescriptionDefault
idiomaNoIdioma del saludo (es o en)
nombreYesNombre de la persona a saludar

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It indicates a non-destructive generation operation, but it does not disclose the return format, side effects, or default behavior for the optional language parameter.

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 short sentence with no filler. It is front-loaded and appropriately sized for the simplicity of the tool.

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?

For a simple two-parameter tool, the description is adequate but not complete. It implies the return value is a greeting, but with no output schema it does not explicitly describe the return shape, default language, or example usage.

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?

Both parameters are fully described in the input schema, so the schema already covers parameter semantics. The description adds no parameter-level detail beyond the idea of a personalized greeting, so the baseline score of 3 applies.

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 states a specific action: it generates a personalized greeting. It is clear and distinct from the sibling tool 'sumar' by domain, though it does not explicitly call out any alternative.

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?

There is no guidance about when to use this tool versus other tools. The description only states what it does, without mentioning conditions, exclusions, or alternatives.

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

sumarA

Suma dos números y devuelve el resultado

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesPrimer número a sumar
bYesSegundo número a sumar

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It clearly states the core behavior: adds two numbers and returns the result. The absence of side effects is implicit in a pure arithmetic operation. Minor details like return type or error handling are not specified, but for such a simple tool this is acceptable.

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, front-loaded sentence that expresses the operation and result with no wasted words. Every part of the sentence adds value.

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?

The tool is trivial, parameters are fully described in the schema, and the description covers the return behavior at a basic level. There is no output schema, but stating that the result is returned is sufficient for a two-number addition. It could have specified that the result is a number, but that is obvious.

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%, so both parameters are already documented in the input schema ('Primer número a sumar' and 'Segundo número a sumar'). The tool description adds no additional meaning about how 'a' and 'b' are used, so the baseline of 3 applies.

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 ('suma') and resource ('dos números'), and states the outcome ('devuelve el resultado'), so an agent knows exactly what the tool does. It naturally distinguishes from the sibling 'saludar', which is a completely different domain.

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 behavior implies use whenever two numbers need to be added, and the sibling tool is unrelated, but the description does not explicitly state when to use it or provide exclusion criteria. No alternatives are mentioned, so the guidance is implied rather than explicit.

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

TDQS

A3.7/5.0
Disambiguation5/5

Both tools have completely distinct purposes—one performs arithmetic, the other generates greetings. There is no possibility of confusion between them.

Naming Consistency5/5

Both tool names are Spanish verbs in infinitive form ('sumar', 'saludar'), following a clear and consistent pattern.

Tool Count3/5

With only two tools, the set feels minimal, but it may be appropriate for a simple demo or utility server. The count is borderline thin rather than excessive.

Completeness4/5

The server covers its apparent basic scope without dead ends: one math operation and one greeting function. Additional math operations could be considered a minor gap, but the surface is functionally usable.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

  • 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.
  • -
    license
    B
    quality
    Not graded
    maintenance
    A boilerplate project for quickly developing Model Context Protocol (MCP) servers using TypeScript SDK. Includes example tools for calculations and greetings, plus system information resources.
    3
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A production-ready TypeScript MCP server providing basic tools (add, echo, timestamp), resources (server info, greetings, data access), and prompt templates (analyze, code-review, summarize). Serves as a foundation for building custom MCP servers with extensible architecture.
    225

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/Broflotsky/MCPServerL2'

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