Simple MCP

by ribeirogab

2 stars
216 downloads
Not rated
GitHub Website

About

A simple TypeScript library for creating MCP servers.

Details

Author
ribeirogab
GitHub stars
2
Downloads
216
Categories
Other, AI

- Minimal API for creating MCP servers
- Full TypeScript integration with type safety
- Built-in parameter validation using Zod
- Supports both functional and class-based tool registration
- Implements the Model Context Protocol (MCP) standard
- Ships with ready-to-use example tools (greeting, calculator)

Install the package with npm install simple-mcp. Then create an McpServer instance, register tools using either a functional or class-based API, and start the server with server.start({ transportType: 'stdio' }). Parameter schemas are defined with Zod and passed inline or through an McpTool interface.

Simple MCP

A simple TypeScript library for creating MCP (Model Context Protocol) servers.

Features

- Simple API: Create MCP servers with minimal code
- Type Safety: Full TypeScript integration
- Parameter Validation: Built-in validation with Zod
- MCP Compatible: Fully implements the Model Context Protocol

Installation

npm install simple-mcp

Quickstart

import { McpServer } from 'simple-mcp';
import { z } from 'zod';

// Create a server instance
const server = new McpServer({ name: 'my-server' });

// Register the tool with the server
server.tool({
name: 'greet',
parameters: {
name: z.string().describe('Person\'s name')
},
execute: async ({ name }) => {
return {
content: [
{
type: 'text',
text: Hello, ${name}! Nice to meet you.
}
]
};
}
});

// Start the server
server.start({ transportType: 'stdio' });

Class-based Implementation

You can also implement MCP tools using classes:

import { McpServer, type McpTool } from 'simple-mcp';
import { z, ZodObject } from 'zod';

const parameters = {
name: z.string().describe('The name is required'),
};

class GreetTool implements McpTool<typeof parameters> {
public readonly name = 'greet';
public readonly parameters = parameters;

public async execute({ name }: z.infer<ZodObject<typeof this.parameters>>) {
return {
content: [
{
type: 'text',
text: Hello, ${name}! Nice to meet you.,
},
],
};
}
}

// Initialize a new MCP server with the name 'greet-server'
const server = new McpServer({ name: 'greet-server' });

// Create an instance of the GreetTool class
const greetTool = new GreetTool();

// Register the tool with the server
server.tool(greetTool);

// Start the server using stdio as the transport method
server.start({ transportType: 'stdio' });

Examples

Check out the examples directory for more complete examples:

- Greeting Tool - Simple greeting example
- Calculator Tool - Mathematical operations example

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.