MCP cover image
See in Github
2025-02-10

镜像://github.com/stevennevins/mcp-server-template

0

Github Watches

1

Github Forks

0

Github Stars

MCP Server Template

A template for creating Model Context Protocol (MCP) servers in TypeScript. This template provides a solid foundation for building MCP-compatible servers with proper tooling, type safety, and best practices.

Features

  • 🚀 Full TypeScript support
  • 🏗️ Container-based dependency injection
  • 📦 Service-based architecture with DataProcessor interface
  • 🛠️ Example tool implementation with tests
  • 🧪 Vitest testing framework
  • 📝 Type definitions
  • 🔌 MCP SDK integration

Getting Started

Development

  1. Install dependencies:

    npm install
    
  2. Start the development server with hot reload:

    npm run dev
    
  3. Build the project:

    npm run build
    
  4. Run tests:

    npm test
    
  5. Start the production server:

    npm start
    

Project Structure

src/
├── index.ts          # Entry point
├── interfaces/       # Interface definitions
│   └── tool.ts      # DataProcessor interface
└── tools/           # Tool implementations
    └── example.ts   # Example tool

Creating Tools

  1. Export your tool and handlers following the example in src/tools/example.ts:

    // In your-tool.ts
    export const YOUR_TOOLS = [
      {
        name: "your-tool-name",
        description: "Your tool description",
        parameters: {
          // Your tool parameters schema
        },
      },
    ];
    
    export const YOUR_HANDLERS = {
      "your-tool-name": async (request) => {
        // Your tool handler implementation
        return {
          toolResult: {
            content: [{ type: "text", text: "Result" }],
          },
        };
      },
    };
    
  2. Register your tool in the ALL_TOOLS and ALL_HANDLERS constants in src/index.ts:

    // In src/index.ts
    import { YOUR_TOOLS, YOUR_HANDLERS } from "./tools/your-tool.js";
    
    // Combine all tools
    const ALL_TOOLS = [...EXAMPLE_TOOLS, ...YOUR_TOOLS];
    const ALL_HANDLERS = { ...EXAMPLE_HANDLERS, ...YOUR_HANDLERS };
    

The server will automatically:

  • List your tool in the available tools
  • Handle input validation
  • Process requests to your tool
  • Format responses according to the MCP protocol

Testing

The template includes a built-in TestClient for local testing and the MCP Inspector for visual debugging.

Using TestClient

The TestClient provides a simple way to test your tools:

import { TestClient } from "./utils/TestClient";

describe("YourTool", () => {
  const client = new TestClient();

  it("should process data correctly", async () => {
    await client.assertToolCall(
      "your-tool-name",
      { input: "test" },
      (result) => {
        expect(result.toolResult.content).toBeDefined();
      }
    );
  });
});

Using MCP Inspector

The template includes the MCP Inspector for visual debugging of your tools:

  1. Start the inspector:

    npx @modelcontextprotocol/inspector node dist/index.js
    
  2. Open the inspector UI at http://localhost:5173

The inspector provides:

  • Visual interface for testing tools
  • Real-time request/response monitoring
  • Tool metadata inspection
  • Interactive testing environment

Local Testing with Cursor

To test your MCP server locally with Cursor:

  1. Build and link the package:

    npm run build
    npm run link
    
  2. Verify the binary works:

    npx example-mcp-tool
    
  3. Add the server to Cursor:

    • Open Cursor settings
    • Navigate to the Features tab
    • Scroll down to MCP Servers section
    • Click "Add Server"
    • Select "Command" type
    • Give it a name (e.g., "Local Example Tool")
    • Enter the command: npx example-mcp-tool
    • Click Confirm
  4. Verify the server starts correctly in Cursor by checking the MCP Servers section shows your server as running.

Note: If you make changes to your code, remember to rebuild and relink:

npm run build
npm run link

When you're done testing, you can unlink the package:

npm run unlink

This will remove the global symlink created during development.

相关推荐

  • NiKole Maxwell
  • I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

  • Bora Yalcin
  • Evaluator for marketplace product descriptions, checks for relevancy and keyword stuffing.

  • https://jgadvisorycpa.com
  • This GPT assists in finding a top-rated business CPA - local or virtual. We account for their qualifications, experience, testimonials and reviews. Business operators provide a short description of your business, services wanted, and city or state.

  • https://suefel.com
  • Latest advice and best practices for custom GPT development.

  • Yusuf Emre Yeşilyurt
  • I find academic articles and books for research and literature reviews.

  • https://maiplestudio.com
  • Find Exhibitors, Speakers and more

  • Carlos Ferrin
  • Encuentra películas y series en plataformas de streaming.

  • Joshua Armstrong
  • Confidential guide on numerology and astrology, based of GG33 Public information

  • Emmet Halm
  • Converts Figma frames into front-end code for various mobile frameworks.

  • Alexandru Strujac
  • Efficient thumbnail creator for YouTube videos

  • Elijah Ng Shi Yi
  • Advanced software engineer GPT that excels through nailing the basics.

  • lumpenspace
  • Take an adjectivised noun, and create images making it progressively more adjective!

  • apappascs
  • 发现市场上最全面,最新的MCP服务器集合。该存储库充当集中式枢纽,提供了广泛的开源和专有MCP服务器目录,并提供功能,文档链接和贡献者。

  • ShrimpingIt
  • MCP系列GPIO Expander的基于Micropython I2C的操作,源自ADAFRUIT_MCP230XX

  • OffchainLabs
  • 进行以太坊的实施

  • modelcontextprotocol
  • 模型上下文协议服务器

  • huahuayu
  • 统一的API网关,用于将多个Etherscan样区块链Explorer API与对AI助手的模型上下文协议(MCP)支持。

  • Mintplex-Labs
  • 带有内置抹布,AI代理,无代理构建器,MCP兼容性等的多合一桌面和Docker AI应用程序。

    Reviews

    5 (1)
    Avatar
    user_kaK1lXnI
    2025-04-16

    "stevennevins_mcp-server-template is an excellent choice for MCP application users! The template by MCP-Mirror provides a solid foundation to build and customize server setups efficiently. It simplifies the process and comes with a well-structured starting URL and a welcoming introduction, making it a breeze to get started. Highly recommend checking it out on GitHub!"