šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Book a DemoInstallSign in
Socket

mcp-ts-template

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mcp-ts-template

Jumpstart Model Context Protocol (MCP) development with this production-ready TypeScript template. Build robust MCP servers and clients with built-in utilities, authentication, and service integrations. Agent framework utilizing MCP Client included.

1.6.0
latest
Source
npm
Version published
Weekly downloads
359
24.65%
Maintainers
1
Weekly downloads
Ā 
Created
Source

šŸš€ MCP TypeScript Template: Agent, Server & Client

TypeScript Model Context Protocol SDK MCP Spec Version Version License Status GitHub

Jumpstart your Model Context Protocol (MCP) development with this comprehensive TypeScript Template for building autonomous agents, servers, and clients.

This template provides a solid, beginner-friendly foundation for building all components of the MCP ecosystem, adhering to the MCP 2025-03-26 specification. It includes a powerful agent framework, a fully-featured server, a robust client, production-ready utilities, and clear documentation to get you up and running quickly.

šŸ›ļø Three-Part Architecture

This template is organized into three primary, interconnected components:

  • šŸ¤– Agent (src/agent/): An autonomous agent framework. The agent can connect to multiple MCP servers, discover their tools, and use them to accomplish complex tasks based on a user's prompt. Use this as a starting point for your agents.
  • šŸ”Œ MCP Server (src/mcp-server/): An extensible MCP server that can host custom tools and resources, making them available to agents and other clients.
  • šŸ’» MCP Client (src/mcp-client/): A robust client for connecting to and interacting with any MCP-compliant server. The agent uses this client to communicate with the outside world.

✨ Key Features

Feature AreaDescriptionKey Components / Location
šŸ¤– Agent FrameworkCore Agent class and CLI for running autonomous agents that connect to MCP servers and use their tools to achieve goals.src/agent/
šŸ”Œ MCP ServerFunctional server with example tools (EchoTool, CatFactFetcher) and an EchoResource. Supports stdio and Streamable HTTP transports.src/mcp-server/
šŸ’» MCP ClientWorking client aligned with MCP 2025-03-26 spec. Connects via mcp-config.json. Includes detailed comments and isolated connection management.src/mcp-client/
šŸš€ Production UtilitiesLogging, Error Handling, ID Generation, Rate Limiting, Request Context tracking, Input Sanitization.src/utils/
šŸ”’ Type Safety/SecurityStrong type checking via TypeScript & Zod validation. Built-in security utilities (sanitization, auth middleware for HTTP).Throughout, src/utils/security/, src/mcp-server/transports/auth/
āš™ļø Error HandlingConsistent error categorization (BaseErrorCode), detailed logging, centralized handling (ErrorHandler).src/utils/internal/errorHandler.ts, src/types-global/
šŸ“š DocumentationComprehensive README.md, structured JSDoc comments, API references.README.md, Codebase, tsdoc.json, docs/api-references/
šŸ•µļø Interaction LoggingCaptures raw requests and responses for all external LLM provider interactions to a dedicated interactions.log file for full traceability.src/utils/internal/logger.ts
šŸ¤– Agent ReadyIncludes a .clinerules developer cheatsheet tailored for LLM coding agents..clinerules
šŸ› ļø Utility ScriptsScripts for cleaning builds, setting executable permissions, generating directory trees, and fetching OpenAPI specs.scripts/
ServicesReusable modules for LLM (OpenRouter) and data storage (DuckDB) integration, with examples.src/services/, src/storage/duckdbExample.ts

🌟 Projects Using This Template

This template is already powering several MCP servers, demonstrating its flexibility and robustness:

ProjectDescription
clinicaltrialsgov-mcp-serverProvides an LLM-friendly interface to the official ClinicalTrials.gov v2 API, enabling agents to analyze clinical study data.
pubmed-mcp-serverEnables AI agents to search, retrieve, and visualize biomedical literature from PubMed via NCBI E-utilities.
git-mcp-serverProvides an enterprise-ready MCP interface for Git operations, allowing agents to manage repositories programmatically.
obsidian-mcp-serverAllows AI agents to read, write, search, and manage notes in Obsidian via the Local REST API plugin.
atlas-mcp-serverAn advanced task and knowledge management system with a Neo4j backend for structured data organization.
filesystem-mcp-serverOffers platform-agnostic file system capabilities for AI agents, including advanced search and directory traversal.
workflows-mcp-serverA declarative workflow engine that allows agents to execute complex, multi-step automations from simple YAML files.

Note: toolkit-mcp-server was built on an older version of this template and is pending updates.

You can also see my GitHub profile for additional MCP servers I've created.

Quick Start

1. Installation

Clone the repository and install dependencies:

git clone https://github.com/cyanheads/mcp-ts-template.git
cd mcp-ts-template
npm install

2. Build the Project

npm run build
# Or use 'npm run rebuild' for a clean install

3. Running the Components

Running the MCP Server

You can run the included MCP server to make its tools available.

  • Via Stdio (Default):
    npm run start:server
    
  • Via Streamable HTTP:
    npm run start:server:http
    

Running the Agent

The agent can be run from the command line to perform tasks. It will automatically connect to the servers defined in src/mcp-client/client-config/mcp-config.json. If running the agent, you must have the MCP config set up correctly and your openrouter API key configured in .env.

npm run start:agent "Your prompt here"

# Example:
npm run start:agent "Use the echo tool to say hello world and then get a cat fact."

āš™ļø Configuration

Server Configuration (Environment Variables)

Configure the MCP server's behavior using these environment variables:

VariableDescriptionDefault
MCP_TRANSPORT_TYPEServer transport: stdio or http.stdio
MCP_HTTP_PORTPort for the HTTP server (if MCP_TRANSPORT_TYPE=http).3010
MCP_HTTP_HOSTHost address for the HTTP server (if MCP_TRANSPORT_TYPE=http).127.0.0.1
MCP_ALLOWED_ORIGINSComma-separated allowed origins for CORS (if MCP_TRANSPORT_TYPE=http).(none)
MCP_AUTH_MODEAuthentication mode for HTTP: jwt (default) or oauth.jwt
MCP_AUTH_SECRET_KEYRequired for jwt mode. Secret key (min 32 chars) for signing/verifying auth tokens.(none - MUST be set in production)
OAUTH_ISSUER_URLRequired for oauth mode. The issuer URL of your authorization server.(none)
OAUTH_AUDIENCERequired for oauth mode. The audience identifier for this MCP server.(none)
OPENROUTER_API_KEYAPI key for OpenRouter.ai service. Required for the agent to function.(none)

Client & Agent Configuration

The agent uses the MCP client to connect to servers. This is configured in src/mcp-client/client-config/mcp-config.json. You must list all MCP servers the agent should connect to in this file.

For a detailed guide, see the Client Configuration README.

šŸ—ļø Project Structure

  • src/agent/: Contains the core agent framework, including the Agent class and a CLI for running the agent.
  • src/mcp-client/: Implements the MCP client logic for connecting to and interacting with external MCP servers.
  • src/mcp-server/: Contains the MCP server implementation, including example tools, resources, and transport handlers.
  • src/config/: Handles loading and validation of environment variables and application configuration.
  • src/services/: Provides reusable modules for integrating with external services (DuckDB, OpenRouter).
  • src/types-global/: Defines shared TypeScript interfaces and type definitions.
  • src/utils/: A collection of core utilities (logging, error handling, security, etc.).
  • src/index.ts: The main entry point for the application, responsible for initializing and starting the MCP server.

Explore the full structure yourself:

See the current file tree in docs/tree.md or generate it dynamically:

npm run tree

🧩 Extending the System

Adding Tools to the Server

For detailed guidance on how to add your own custom Tools and Resources to the MCP server, please see the Server Extension Guide.

Modifying the Agent

The agent's core logic is in src/agent/agent-core/agent.ts. You can modify its system prompt, the models it uses (google/gemini-2.5-flash by default), and its decision-making loop to change its behavior.

šŸŒ Explore More MCP Resources

Looking for more examples, guides, and pre-built MCP servers? Check out the companion repository:

āž”ļø cyanheads/model-context-protocol-resources

šŸ“œ License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Keywords

typescript

FAQs

Package last updated on 24 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts