Skip to main content
Glama
KyleAnthonyMcAdam

TypeScript MCP Server

TypeScript MCP Server

This project is a simple Model Context Protocol (MCP) server built with TypeScript. It is designed to be a starting point for creating your own MCP servers and includes a basic calculator tool as an example.

The server is configured to communicate with a client application (like Cursor) over standard input/output (stdio).

Features

  • MCP Server: Implements the Model Context Protocol standard via stdio.

  • Calculator Tool: A safe calculator tool that evaluates mathematical expressions.

  • TypeScript: Fully written in TypeScript with strict type checking.

  • Well-Documented: Code is documented, and a full SETUP.md is included.

  • Ready to Run: Includes npm scripts and a batch file for easy building and execution.

Related MCP server: MCP Montano Server

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/KyleAnthonyMcAdam/Typescript-mcp.git
    cd Typescript-mcp
  2. Install dependencies: Run the following command in the project root to install all required packages.

    npm install

Usage

Development Mode

For development, you can run the server using nodemon, which will automatically restart the server whenever you make changes to the source code. This is useful for testing tools without needing to connect to a full client.

npm run dev

Production / Client Mode

For the server to be used by a client application (like Cursor), you must first build the project.

  1. Build the project: This command compiles all TypeScript files from the src directory into JavaScript files in the dist directory.

    npm run build
  2. Run the server from a client: The server is not meant to be run directly by the user in the terminal. Instead, it must be started by an MCP client application.

Connecting with a Client

To connect this server with a client like Cursor, you must add it to the client's configuration file (e.g., a global mcp.json). This configuration tells the client how to launch your server.

Crucially, the command or args in the configuration must use an absolute path to the launch script or server file. This path will be different on every machine.

For detailed instructions on how to set up the project from scratch and configure a client, please see the SETUP.md file.

Example run-server.bat

This project includes a run-server.bat file which simplifies the process of running the server from a client on Windows. It ensures that the Node.js server starts with the correct settings.

Example: Calling the Calculator Tool

Once the client is configured and connected, it can call the calculator tool with a request like this:

{
  "jsonrpc": "2.0",
  "method": "tool/run",
  "params": {
    "name": "calculator",
    "arguments": {
      "expression": "2 * (10 + 5)"
    }
  },
  "id": "request-1"
}

The server will respond with the calculated result.

Available Tools

1 tool
calculatorSimple CalculatorB

A safe calculator that can evaluate mathematical expressions.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesA mathematical expression to evaluate. Example: "2 * (3 + 4)"

TDQS

B3.1/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 of behavioral disclosure. It mentions 'safe' but doesn't elaborate on what that entails (e.g., error handling, security, or limitations). This leaves gaps in understanding the tool's behavior, such as how it handles invalid inputs or its operational constraints.

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 directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy to understand quickly with zero waste.

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 low complexity (one parameter, no annotations, no output schema), the description is minimally adequate. It covers the basic purpose but lacks details on behavior, usage context, or output format, which could be helpful for an AI agent to use it effectively.

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% description coverage, with the parameter 'expression' documented as 'A mathematical expression to evaluate' and an example provided. The description adds no additional meaning beyond this, so it meets the baseline for adequate but not enhanced parameter semantics.

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 states the tool's purpose as 'evaluate mathematical expressions' with the verb 'evaluate' and resource 'mathematical expressions', making it specific and understandable. However, since there are no sibling tools mentioned, there's no explicit differentiation from alternatives, preventing a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives, such as other calculation methods or tools. It lacks context about scenarios where it's appropriate, prerequisites, or exclusions, leaving usage unclear beyond the basic purpose.

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. 1 tool updatev1.0.0
    • First observedcalculator

TDQS

B3.2/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool has a clear and distinct purpose, making it impossible for an agent to misselect between tools.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'calculator' follows a clear noun-based pattern, which is appropriate for its function, and there are no other tools to compare it against for inconsistency.

Tool Count2/5

A single tool is generally too few for a server's purpose, as it limits functionality and scope. While the tool is well-defined, the server likely lacks coverage for broader TypeScript-related tasks, making the count inappropriate for the implied domain.

Completeness1/5

The server is severely incomplete for a TypeScript domain, as it only offers a calculator tool with no other TypeScript-specific operations like code analysis, compilation, or linting. This represents a significant gap that will cause agent failures in handling TypeScript tasks.

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

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/KyleAnthonyMcAdam/Typescript-mcp'

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