Skip to main content
Glama
gbti-network

Super Secret MCP Server

by gbti-network

Super Secret MCP Server

A Model Context Protocol (MCP) server implementation in pure Node.js that provides a fun tool to generate random US State and signature soup combinations.

Features

  • Pure Node.js implementation

  • JSON-RPC 2.0 compliant

  • MCP protocol version: 2024-11-05

  • Custom logging system

  • Tool support with schema validation

  • STDIO transport

Related MCP server: Vercel MCP Python Server

Getting Started

Prerequisites

  • Node.js (Latest LTS version recommended)

  • MCP Inspector for testing

Installation

  1. Clone the repository:

git clone git@github.com:gbti-network/mcp-basic-test.git
cd mcp-basic-test
  1. Install dependencies:

npm install

Running the Inspector

Start the server with MCP Inspector:

npx @modelcontextprotocol/inspector -- node index.js

The server will start and be available for connections via STDIO.

Available Tools

getSecretPassphrase

Returns a random combination of a US State and its signature soup. Examples include:

  • New England Clam Chowder

  • Louisiana Gumbo

  • Texas Chili

  • California Cioppino

  • Michigan Cherry Soup

Input Schema:

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "required": []
}

Example Response:

{
  "content": [{
    "type": "text",
    "text": "New England Clam Chowder"
  }]
}

Project Structure

.
├── index.js           # Main server implementation
├── utils/
│   └── logger.js      # Custom logging utility
├── .data/
│   ├── framework.md   # Framework documentation
│   └── knowledge.md   # Project knowledge base
└── .logs/            # Server logs directory

Development

Adding New Tools

  1. Define your tool in index.js:

this.tools.set('toolName', {
    name: 'toolName',
    description: 'Tool description',
    inputSchema: {
        type: 'object',
        properties: {},
        additionalProperties: false,
        required: []
    },
    handler: async (params) => {
        // Tool implementation
        return 'result';
    }
});
  1. Test using MCP Inspector:

    • Connect to server

    • Use "List Tools" to verify tool registration

    • Test tool execution

Logging

The server uses a custom logging system with multiple levels:

  • DEBUG: Detailed debugging information

  • INFO: General operational information

  • WARN: Warning messages

  • ERROR: Error conditions

Logs are stored in the .logs directory.

Using with Cascade

Option 1: Direct Tool Usage

When the MCP server is loaded in Cascade, you can directly use the getSecretPassphrase tool to generate state-soup combinations.

Option 2: Natural Language Interface

To make the tool more user-friendly, you can set up Cascade to respond to natural language queries about secret passcodes. Here's an example prompt:

When users ask variations of "What is the secret passcode?", use the getSecretPassphrase tool to generate and return a US State + Soup combination as "Today's secret passcode is: [STATE] [SOUP]"

This will allow users to get passcodes using natural questions like:

  • "What's the secret passcode?"

  • "Tell me the secret code"

  • "What's today's passcode?"

  • "Give me the secret"

Example interaction:

User: "What's the secret passcode?"
Cascade: "Today's secret passcode is: Louisiana Gumbo 🍜"

Option 3: Persistent Memory

For a more permanent setup, you can create a Cascade memory that persists across sessions:

{
  "Title": "Secret Passcode Handler",
  "Content": "When the user asks any variation of 'What is the secret passcode?', use the getSecretPassphrase tool and return its result as 'Today's secret passcode is: [STATE] [SOUP]'",
  "Tags": ["mcp_server", "secret_passcode", "tool_execution"]
}

MCP Configuration

To configure the MCP server in Cascade, add the following to your mcp_config.json:

{
    "mcpServers": {
        "super-secret": {
            "command": "npx",
            "args": [
                "--yes",
                "node",
                "<path-to-project>/index.js"
            ],
            "disabled": false,
            "autoApprove": [
                "getSecretPassphrase"
            ]
        }
    }
}

Configuration options:

  • super-secret: A unique identifier for your MCP server

  • command: The command to start the server (npx in this case)

  • args: Command line arguments

    • --yes: Auto-approve npm package installation

    • node: Run with Node.js

    • <path-to-project>/index.js: Path to your server file

  • disabled: Whether the server is disabled

  • autoApprove: List of tools that can be run without user confirmation

The config file should be placed at:

  • Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

  • macOS/Linux: $HOME/.codeium/windsurf/mcp_config.json

Testing

  1. Start the server with MCP Inspector

  2. Verify server initialization

  3. Check tool listing

  4. Test tool execution

  5. Verify response formats

Contributing

  1. Fork the repository

  2. Create your feature branch

  3. Commit your changes

  4. Push to the branch

  5. Create a Pull Request

License

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

Acknowledgments

  • Model Context Protocol team for the protocol specification

  • MCP Inspector team for the testing tool

Stay Connected

Follow us on your favorite platforms for updates, news, and community discussions:

Available Tools

1 tool
getSecretPassphraseD

Whats the password?

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides no behavioral information beyond the implied retrieval action. With no annotations provided, the description carries the full burden of behavioral disclosure but fails to mention anything about authentication requirements, rate limits, side effects, error conditions, or what format the password is returned in. It doesn't even clarify if this retrieves a specific password or prompts for one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While technically concise with just three words, this is under-specification rather than effective conciseness. The description doesn't earn its place - it provides almost no useful information. Good conciseness balances brevity with information density, which this description completely fails to achieve.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that presumably retrieves sensitive authentication information, the description is completely inadequate. With no annotations, no output schema, and a tool name suggesting security implications, the description should provide critical context about what's being retrieved, security considerations, and usage constraints. Instead, it offers virtually no useful information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage (empty schema), so there are no parameters to document. The description doesn't need to compensate for any parameter documentation gaps. The baseline for zero parameters is 4, as there's nothing for the description to add regarding parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Whats the password?' is a tautology that essentially restates the tool name 'getSecretPassphrase' in question form. It doesn't specify what resource or system this password belongs to, what format the password is in, or what the tool actually does beyond the obvious implication of retrieving something. While it implies retrieval of a password, it lacks specificity about what kind of password or from where.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool, what context it applies to, what prerequisites might be needed, or any alternatives. It's a simple question with no usage context whatsoever. With no sibling tools mentioned, there's no need to distinguish from alternatives, but the description still fails to provide any usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • First observedgetSecretPassphrase

TDQS

C2.3/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools. The tool's purpose is singular and clearly defined, so disambiguation is perfect.

Naming Consistency5/5

A single tool inherently has perfect naming consistency, as there are no other tools to compare it against. The naming follows a clear verb_noun pattern (getSecretPassphrase).

Tool Count2/5

One tool is too few for most server purposes, as it severely limits functionality and scope. This feels thin and incomplete, even for a simple server, unless it's intentionally minimalistic.

Completeness1/5

The server's purpose is unclear from the single tool, but a 'secret passphrase' domain would typically require more operations (e.g., set, update, list, delete). With only a get operation, the surface is severely incomplete and will likely cause agent failures.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A beginner-friendly MCP-inspired JSON-RPC server built with Node.js, offering basic client-server interaction through an 'initialize' capabilities handshake and an 'echo' function.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A serverless MCP server deployed on Vercel that provides basic utility tools including echo, time retrieval, arithmetic operations, and mock weather information. Includes an interactive client application for testing and demonstration purposes.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A modular MCP server that provides tools for looking up country and state information. Designed as a demonstration of building extensible MCP servers with custom tool modules.
    -
  • F
    license
    Not graded
    quality
    F
    maintenance
    A basic MCP server implementation using Node.js and TypeScript that bridges AI models with external tools and data sources via JSON-RPC.
    2
    -