ZapToMCP

by hoghweed

143 downloads
Not rated
GitHub

About

ZapToMCP is a monorepo containing TypeScript tools and libraries for building Model Context Protocol (MCP) servers and clients. It streamlines the creation and deployment of MCP-compatible services, providing transport implementations (in-memory, SSE, Stdio, Streamable HTTP) and…

Details

Author
hoghweed
Downloads
143
Categories
Other

- Multiple transport implementations (in-memory, SSE, Stdio, Streamable HTTP)
- Type-safe API with TypeScript
- Built with Fastify for high performance
- Supports both ESM and CommonJS
- Higher-level server abstraction in dedicated package
- Monorepo structure for modular development

Install the SDK via pnpm add @zaptomcp/sdk (requires Node.js 20+ and pnpm 10.8.1+). Use the exported McpServer and Client classes to create servers/clients, then connect them to a transport (e.g., FastifyTransport or HTTPClientTransport). For the monorepo, clone the repository and run pnpm install && pnpm bootstrap.

ZapToMCP

<p align="center">
Valkeyrie
</p>

⚠️ Work in Progress

> Warning: This repository is currently under active development. The API and implementation details are subject to change. Use at your own risk.

GitHub package.json version node:20 pnpm@10.8.1 npm License: MIT TypeScript Biome

ZapToMCP is a monorepo containing tools and libraries for building Model Context Protocol (MCP) servers and clients. It provides a streamlined way to create, deploy, and manage MCP-compatible services.

Overview

The Model Context Protocol (MCP) is an open standard for communication between AI assistants and tools. ZapToMCP simplifies the process of building MCP-compatible servers and clients, allowing developers to focus on creating powerful AI experiences rather than implementing protocol details.

Repository Structure

This monorepo contains the following packages:

- @zaptomcp/sdk : A TypeScript implementation of the Model Context Protocol
- @zaptomcp/server : A higher-level abstraction for creating MCP servers
- More packages coming soon...

Getting Started

Prerequisites

- Node.js >= 20
- pnpm >= 10.8.1

Installation

Clone the repository:
git clone https://github.com/hoghweed/zaptomcp.git
cd zaptomcp
 

Install dependencies:

pnpm install
 

Installation

# Install dependencies
pnpm install

Bootstrap the monorepo

pnpm bootstrap

Development

Available Scripts

- pnpm dev: Start development mode for all packages
- pnpm build: Build all packages
- pnpm clean: Clean build artifacts
- pnpm lint: Run linting across all packages
- pnpm format: Format code across all packages
- pnpm typecheck: Run type checking across all packages
- pnpm commit: Create a commit using conventional commit format

Code Quality

This project uses:
- Biome for linting and formatting
- TypeScript for type checking
- Husky for git hooks
- Commitlint for commit message validation

@zaptomcp/sdk

The SDK package provides a TypeScript implementation for interacting with the Model Context Protocol (MCP).

Features

- Multiple transport implementations:
- In-memory
- SSE (Server-Sent Events)
- Stdio
- Streamable HTTP
- Type-safe API
- Built with Fastify for high performance
- Support for both ESM and CommonJS

Installation

pnpm add @zaptomcp/sdk

Usage

Usage Creating an MCP Server

import { McpServer } from '@zaptomcp/sdk';

// Create a server with basic information
const server = new McpServer(
{
name: "my-mcp-server",
version: "1.0.0"
},
{
capabilities: {
// Define your server capabilities
sampling: {},
prompts: {},
resources: {},
tools: {},
logging: {}
},
instructions: "This is an MCP-compatible server"
}
);

// Connect the server to a transport
import { FastifyTransport } from '@zaptomcp/sdk/transports';
const transport = new FastifyTransport();
await server.connect(transport);

// Start listening for requests
await transport.listen(3000);
console.log("MCP server running on port 3000");

Creating an MCP Client

import { Client } from '@zaptomcp/sdk';

// Create a client with basic information
const client = new Client(
{
name: "my-mcp-client",
version: "1.0.0"
},
{
capabilities: {
// Define your client capabilities
sampling: {}
}
}
);

// Connect to an MCP server
import { HTTPClientTransport } from '@zaptomcp/sdk/transports';
const transport = new HTTPClientTransport('http://localhost:3000');
await client.connect(transport);

// Read a resource
const resource = await client.readResource({
uri: "test://example/resource"
});

console.log(resource);

API Documentation

The SDK provides the following main exports:

- Server: The main server class
- transports: Various transport implementations
- in-memory: In-memory transport
- sse: Server-Sent Events transport
- stdio: Standard I/O transport
- streamable-http: HTTP transport with streaming support

Development

To work on the SDK:

# Navigate to the SDK package
cd packages/sdk

Install dependencies

pnpm install

Start development mode

pnpm dev

Run tests

pnpm test

Build the package

pnpm build

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch ( git checkout -b feature/amazing-feature )
3. Commit your changes using conventional commits ( pnpm commit )
4. Push to the branch ( git push origin feature/amazing-feature )
5. Open a Pull Request

License


This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

- ZapToMCP is an inspired porting of FastMCP
- Model Context Protocol Typescript SDK - The open standard this project implements
- FastMCP is inspired by the Python implementation by Jonathan Lowin.
- Parts of codebase were adopted from LiteMCP.
- Parts of codebase were adopted from Model Context protocolでSSEをやってみる.

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.