npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@iflow-mcp/withseismic-mcp

v1.0.0

Published

://WITHSEISMIC_MCP

Downloads

8

Readme

D0UGWITHSEISMIC/WITHSEISMIC-MCP

WithSeismic MCP

SYSTEMS ONLINE • NEURAL INTERFACE ACTIVE • COMBAT DATA ANALYSIS • TACTICAL OVERLAY ENABLED • PERFORMANCE METRICS NOMINAL

TypeScript Node.js pnpm License Discord Deploy on Railway

A production-ready MCP server template for hosting your own AI tools and prompts. Deploy remotely or run locally - built for developers who want to expose their tools to AI models without the infrastructure headaches.

://WHO_IS_THIS_FOR?

This template is perfect for:

  • AI Tool Developers: Build and host your own tools that AI models can interact with
  • Teams & Organizations: Set up a shared MCP server for your AI applications
  • Individual Developers: Quick-start your MCP development with a production-ready setup
  • API Providers: Expose your services to AI models through a standardized interface

Whether you want to:

  • 🌐 Host a remote MCP server that multiple clients can connect to
  • 🔧 Run locally via stdio for development and testing
  • 🚀 Deploy a production-ready MCP implementation
  • 🛠️ Build tools without worrying about infrastructure

This template provides everything you need to get started.

://OVERVIEW

The MCP server provides two ways to expose your tools to AI models:

  1. Remote Server Mode (SSE): Deploy as a remote server that multiple clients can connect to

    • Perfect for production deployments (pnpm start:sse)
    • Supports multiple simultaneous connections
    • Easy deployment to platforms like Railway
    • Secure and scalable
  2. Local Mode (stdio): Run locally for development and testing (pnpm start)

    • Great for local development
    • Direct stdio communication
    • Fast iteration and debugging

Key Features:

  • Tools: Executable functions that models can call
  • Prompts: Template-based message generators
  • Auto-Discovery: Automatic registration of your components
  • Type Safety: Full TypeScript support throughout

://WHY_USE_THIS_MCP_SERVER_TEMPLATE?

While the Model Context Protocol (MCP) is in its early stages, one thing is clear: rapid adoption requires frictionless development. This implementation is built with a singular focus: letting developers focus on building great tools, not infrastructure.

INSTANT_DEPLOYMENT

# Option 1: One-Click Deploy
Click the "Deploy on Railway" button above ☝️

# Option 2: Local Setup
pnpm install && pnpm dev

ZERO_FRICTION_DEVELOPMENT

  • No Boilerplate: Define your tool, import it, and you're done. We handle the rest.
  • Auto-Registration: Tools and prompts are automatically discovered and registered.
  • Type Safety: Full TypeScript support with zero configuration.

BATTLE_TESTED_ARCHITECTURE

  • Production Ready: Built for reliability and performance.
  • Scalable Design: From simple tools to complex AI interactions.
  • Error Resilient: Robust error handling and debugging built-in.

DEVELOPER_EXPERIENCE_FIRST

// That's it. This is all you need to create a tool.
export const myTool = new Tool(
  {
    name: "myTool",
    description: "What my tool does",
    inputSchema: z.object({ query: z.string() }),
    outputSchema: z.object({ result: z.string() }),
  },
  async (args) => {
    // Your logic here
    return { result: "Done!" };
  },
);

We handle:

  • ⚡ Connection management
  • 🔄 Tool registration
  • 🛡️ Input validation
  • 📦 State management
  • 🚨 Error handling
  • 📊 Logging and metrics

You focus on:

  • 🎯 Building amazing tools
  • 🧠 Creating powerful prompts
  • 🚀 Shipping features

://GETTING_STARTED

INSTALLATION

pnpm install

RUNNING_THE_SERVER

Two modes are available:

  1. Standard mode (stdio):
pnpm dev      # Development with hot reload
pnpm start    # Production
  1. SSE (Server-Sent Events) mode:
pnpm dev:sse  # Development with hot reload
pnpm start:sse # Production

When running in SSE mode, connect to: http://localhost:3001/sse

://CORE_CONCEPTS

TOOLS

Tools are executable functions that models can invoke. Each tool:

  • Has defined input/output schemas using Zod
  • Is automatically registered with the registry
  • Can perform any operation (calculation, file I/O, API calls, etc.)

Example tool:

import { z } from "zod";
import { Tool } from "../core";

const MyToolInputSchema = z.object({
  param1: z.string().describe("Parameter description"),
});

const MyToolOutputSchema = z.object({
  result: z.string().describe("Result description"),
});

export const myTool = new Tool(
  {
    name: "myTool",
    description: "What my tool does",
    inputSchema: MyToolInputSchema,
    outputSchema: MyToolOutputSchema,
  },
  async (args) => {
    const input = MyToolInputSchema.parse(args);
    // Tool logic here
    return { result: "processed result" };
  },
);

PROMPTS

Prompts are message generators that help structure model interactions. Each prompt:

  • Defines its argument schema
  • Generates messages in a consistent format
  • Is automatically registered with the registry

Example prompt:

import { Prompt } from "../core";

export const myPrompt = new Prompt(
  {
    name: "myPrompt",
    description: "What my prompt does",
    arguments: [
      {
        name: "arg1",
        description: "Argument description",
        required: true,
      },
    ],
  },
  async (args) => {
    return [
      {
        role: "system",
        content: {
          type: "text",
          text: `Generated message using ${args.arg1}`,
        },
      },
    ];
  },
);

://ADDING_NEW_COMPONENTS

Creating a New Tool

  1. Create a new file in src/modules/tools/
  2. Define your input/output schemas using Zod
  3. Create and export your tool instance
  4. Add the export to src/modules/tools/index.ts

The registry will automatically:

  • Register your tool
  • Make it available to models
  • Handle validation and error handling

Creating a New Prompt

  1. Create a new file in src/modules/prompts/
  2. Define your argument schema
  3. Create and export your prompt instance
  4. Add the export to src/modules/prompts/index.ts

The registry will automatically:

  • Register your prompt
  • Make it available to models
  • Handle message generation and errors

Architecture

Core Components

  • Registry: Central manager for all tools and prompts
  • Tool: Base class for executable functions
  • Prompt: Base class for message generators
  • Server: MCP protocol implementation

Auto-Registration

The system uses a singleton Registry pattern that:

  1. Automatically registers tools and prompts on import
  2. Provides type-safe access to components
  3. Handles all MCP protocol interactions

Error Handling

The system includes robust error handling:

  • Type validation via Zod schemas
  • Execution error wrapping
  • Detailed error messages for debugging

Development

Type Safety

All components use TypeScript for full type safety:

  • Input/output schemas are defined using Zod
  • Type inference for tool arguments and results
  • Comprehensive error types

Testing

Run tests using:

pnpm test

Best Practices

  1. Always define clear input/output schemas
  2. Use descriptive names and documentation
  3. Handle errors gracefully
  4. Follow the TypeScript guidelines in the codebase

://CONTRIBUTING

NEURAL INTERFACE DETECTED • INITIATING COLLABORATION PROTOCOLS • READY FOR UPLINK

We welcome contributions! Please see our Contributing Guide for details on:

  • Development workflow
  • Code style guidelines
  • Pull request process
  • Issue reporting

Join our Discord community to connect with other contributors!

://SUPPORT

SUPPORT PROTOCOLS ACTIVE • COMMUNICATION CHANNELS OPEN • READY TO ASSIST

://LICENSE

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

© 2025 Doug, at WithSeismic dot com.