Skip to main content
Glama
nebula-technological-innovation

AetherTech MCP Server

README.md
# AetherTech MCP Server

A production-ready TypeScript MCP (Model Context Protocol) server with comprehensive tools and type safety.

## Features

- **Text Analysis Tools**: Analyze, count words, detect sentiment, extract keywords
- **Key-Value Store**: In-memory storage for temporary data
- **Resources**: System info and dynamic store access
- **Dual Transport**: Support for both stdio and HTTP (Streamable HTTP)
- **Type Safety**: Full TypeScript with Zod validation
- **Error Handling**: Comprehensive try-catch with meaningful error messages

## Installation

```bash
cd packages/mcp-server
npm install
```

## Running the Server

### Option 1: Stdio Transport (Default)

```bash
# Development mode
npm run dev:stdio

# Production mode
npm run start:stdio
```

### Option 2: HTTP Transport

```bash
# Development mode
npm run dev:http

# Production mode
npm run start:http

# With custom port
PORT=8080 npm run start:http
```

The HTTP server runs at `http://localhost:3000/mcp` (or custom PORT).

## Available Tools

### text_analysis

Analyze text with various operations.

**Input Schema:**
```typescript
{
  text: string;           // Required, 1-100000 chars
  operation: "analyze" | "word_count" | "sentiment" | "extract_keywords"
}
```

**Example:**
```json
{
  "name": "text_analysis",
  "arguments": {
    "text": "This is an amazing product! I love it so much.",
    "operation": "sentiment"
  }
}
```

### word_count

Count words in text with statistics.

**Input Schema:**
```typescript
{
  text: string;
  includeWhitespace?: boolean;  // Default: false
}
```

### key_value_store

In-memory key-value storage.

**Input Schema:**
```typescript
{
  action: "get" | "set" | "delete" | "list";
  key?: string;
  value?: string;
}
```

**Examples:**

Set a value:
```json
{
  "name": "key_value_store",
  "arguments": {
    "action": "set",
    "key": "user:1",
    "value": "John Doe"
  }
}
```

Get a value:
```json
{
  "name": "key_value_store",
  "arguments": {
    "action": "get",
    "key": "user:1"
  }
}
```

List all:
```json
{
  "name": "key_value_store",
  "arguments": {
    "action": "list"
  }
}
```

## Testing with MCP Inspector

```bash
npm run inspector
```

For HTTP transport:
```bash
npx @modelcontextprotocol/inspector http://localhost:3000/mcp
```

## Configuration

| Environment Variable | Description | Default |
|---------------------|-------------|---------|
| PORT | HTTP server port | 3000 |

## Building

```bash
npm run build
```

## Type Checking

```bash
npm run typecheck
```

## Troubleshooting

### Server won't start

- Ensure Node.js 18+ is installed: `node --version`
- Verify dependencies are installed: `npm install`

### HTTP transport not connecting

- Check the port is not in use: `lsof -i :3000`
- Verify firewall settings
- Try a different port: `PORT=8080 npm run start:http`

### Tools not working

- Run MCP Inspector to verify connection
- Check server logs for errors
- Ensure valid JSON is passed to tools

TDQS

B3/5.0

Scored across 4 tools

Disambiguation3/5

Most tools are distinct, but word_count overlaps with text_analysis which already includes word counting. This could lead to confusion about which to use.

Naming Consistency4/5

All tools use snake_case, but the grammatical structure varies (noun_noun vs abbreviation_noun). No verb_noun pattern, but consistent casing and underscore use.

Tool Count3/5

Four tools is borderline low for a server that covers three unrelated domains (text, storage, network). It feels thin but not extremely so.

Completeness3/5

Each tool provides basic functionality for its domain, but there are gaps (e.g., no detail resolution for mDNS, redundant word_count tool). Overall surface is shallow.

Maintenance

ActivityStale
ResponsivenessNo issues