mcp-blanko
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-blankorun the hello world tool"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-blanko
A template for building your own MCP (Model Context Protocol) server in TypeScript.
Includes placeholder tools, dual transport support (stdio + SSE), and a simple pattern for adding your own tools.
Quick Start
npm install
npm run build
npm startRelated MCP server: MCP TypeScript Starter
Project Structure
src/
├── index.ts # Entry point — transport selection
├── server.ts # Server setup & tool registration
└── tools/
├── hello-world.ts # Simple greeting tool
├── complex-input.ts # Rich input schema with error handling
├── async-operation.ts # Simulated long-running task
├── external-api.ts # Placeholder for API integration
└── file-operation.ts # Local file read/writeAdding Your Own Tool
Create a new file in
src/tools/:
import { z } from "zod";
import type { ToolDefinition } from "../server.js";
export const myTool: ToolDefinition = {
name: "my_tool",
description: "What this tool does",
inputSchema: z.object({
param: z.string().describe("Description of param"),
}),
handler: async ({ param }) => {
return {
content: [{ type: "text", text: `Result: ${param}` }],
};
},
};Register it in
src/server.ts:
import { myTool } from "./tools/my-tool.js";
const tools: ToolDefinition[] = [
// ... existing tools
myTool,
];Build and run:
npm run build && npm startTransport Modes
stdio (default)
npm start
# or
npm run start:stdioSSE (HTTP)
npm run start:sse
# or
MCP_PORT=3001 node dist/index.js --transport=sseThe SSE endpoint will be available at http://localhost:3001/sse.
Configuration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"mcp-blanko": {
"command": "node",
"args": ["/absolute/path/to/mcp-blanko/dist/index.js"]
}
}
}Claude Code
claude mcp add mcp-blanko node /absolute/path/to/mcp-blanko/dist/index.jsDocker Deployment
Build and run with Docker Compose:
docker compose up -dThe SSE endpoint will be available at http://localhost:3001/sse. Put a reverse proxy (e.g., nginx, Caddy, Traefik) in front for HTTPS.
Or build and run manually:
docker build -t mcp-blanko .
docker run -d -p 3001:3001 mcp-blankoEnvironment Variables
Variable | Default | Description |
|
| Transport mode: |
|
| HTTP port for SSE transport |
|
| Base directory for the file operation tool |
License
MIT
Available Tools
5 toolsfetch_dataC
Placeholder for a tool that calls an external API. Replace the handler with your own API logic.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | HTTP method | GET |
| endpoint | Yes | API endpoint path (e.g., /users/123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavioral traits. It only says 'calls an external API' without detailing side effects, authentication, rate limits, or error behavior, providing minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks substantive information. As a placeholder, it is appropriately short but not optimally structured for usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 parameters and no output schema, the description fails to explain return format, expected behavior, or error cases. Incomplete for a tool intended to call an external API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with clear descriptions for both parameters (method enum and endpoint string). The description adds no extra meaning, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it calls an external API but is vague and labeled as a placeholder. It does not distinguish what data or endpoint, making it unclear for an AI agent to select specific purpose vs siblings like hello_world or process_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No exclusions or comparisons provided, leaving the agent without context for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hello_worldA
A simple greeting tool. Takes a name and returns a personalized greeting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name to greet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not explicitly state behavioral traits like idempotency or side effects. It implies a simple read-like operation but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no unnecessary words, and directly addresses the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description adequately covers its functionality. It could mention the greeting format but is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and describes the 'name' parameter. The description adds no additional semantic detail beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a greeting tool that takes a name and returns a greeting. It is distinct from sibling tools like fetch_data and process_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, the tool's purpose is clear enough that an agent can infer its usage for generating greetings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
long_running_taskC
Demonstrates an async tool that simulates a long-running operation (e.g., data processing, report generation).
| Name | Required | Description | Default |
|---|---|---|---|
| taskName | Yes | Name of the task to run | |
| durationMs | No | Simulated duration in milliseconds (100-5000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only says 'async' and 'simulates', but fails to disclose key behavioral traits such as return value, status checking, or cancellation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded, with no wasted words. However, it could be longer to include more context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is inadequate. It does not explain the return format or how the async result is delivered, leaving the agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the already descriptive parameter names and schema comments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool simulates an async long-running operation with examples like data processing and report generation. It distinguishes from siblings as none of them mention async or simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like fetch_data or process_order, nor 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.
manage_fileC
Demonstrates reading and writing local files. Operates within a configurable base directory.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Whether to read or write | |
| content | No | Content to write (required for write action) | |
| filePath | Yes | Relative file path within the working directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It mentions a configurable base directory but does not disclose safety aspects (e.g., read/write permissions, potential for overwriting files) or side effects beyond the basic operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (18 words) but includes a filler word ('demonstrates'). It is concise, though not optimally structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (read/write, file path, content), the description is minimally adequate. It lacks details on error handling, file existence behavior, and output, which a tool of this type would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage; all parameters have descriptions. The description adds context about the base directory, but does not significantly enhance understanding beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it performs reading and writing of local files, which is a specific verb-resource combination. However, the word 'demonstrates' gives a demo connotation rather than a production tool, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings. Siblings include diverse tools like fetch_data and long_running_task, but no context is provided for when manage_file is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_orderD
Demonstrates a tool with a rich input schema: nested objects, enums, optional fields, and error handling.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | List of items to order | |
| notes | No | Optional order notes | |
| customer | Yes | ||
| priority | No | Order priority level | normal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'error handling' abstractly but gives no specifics on side effects, authorization needs, or return behavior, leaving the agent uninformed about safety or consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, but it is not effective conciseness; it wastes space on meta-commentary ('Demonstrates a tool...') instead of providing functional information. Every sentence should earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and a tool that likely creates or modifies data, the description is completely inadequate. It does not mention return values, potential errors, prerequisites, or any operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (75% or more), so the baseline is 3. The description adds no extra meaning beyond what the schema already provides; it only notes the schema is 'rich' without clarifying parameter roles or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Demonstrates a tool with a rich input schema' fails to state the tool's actual function; it is a tautology about schema characteristics rather than specifying the action or resource (e.g., 'process an order').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'fetch_data' or 'manage_file'; the description is entirely meta and does not indicate context 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.
5 tool updates
v1.0.0- First observed
fetch_data - First observed
hello_world - First observed
long_running_task - First observed
manage_file - First observed
process_order
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: fetching external API, greeting, long-running task, file management, and order processing. No overlap.
Three tools use verb_noun pattern (fetch_data, manage_file, process_order), but hello_world and long_running_task deviate with different structures. Inconsistent but still readable.
5 tools is well-scoped for a demo server illustrating various MCP patterns. Not too many or too few.
As a demo server, it covers common patterns (API call, async, file I/O, complex schema, simple greeting). Could include more patterns like resource subscriptions, but the set is reasonable.
Maintenance
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
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. This…
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
Primarily to be used as a template repository for developing MCP servers with FastMCP in Python, P…
Kickstart development with a customizable TypeScript template featuring sample tools for greeting,…
Related MCP Servers
- FlicenseAqualityDmaintenanceA TypeScript MCP server template with Zod validation, dual transport (stdio/HTTP), and modular architecture for building MCP-compatible tools, resources, and prompts.11-
- AlicenseNot gradedqualityBmaintenanceA feature-complete MCP server template in TypeScript demonstrating tools, resources, prompts, and both stdio and HTTP transports.8MIT
- FlicenseCqualityDmaintenanceA TypeScript template for building MCP servers with stdio/SSE transport and easy tool registration.5-
- FlicenseBqualityBmaintenanceA template for building MCP servers in TypeScript with placeholder tools and dual transport support (stdio + SSE).5-