Skip to main content
Glama
21967201

MCP Enhanced Server

by 21967201
README.md
# MCP Enhanced Server v2.0.0

Enhanced MCP (Model Context Protocol) Server with full 2025-03-26 specification support:

- **Tools** - With annotations, outputSchema, structuredContent, resource_link
- **Resources** - URI-identified data with subscriptions and list change notifications
- **Prompts** - Templated messages and workflows with argument schemas
- **Elicitation** - Server-initiated user input requests
- **Tasks** - Async long-running operations with progress tracking
- **Streamable HTTP** - Production-ready HTTP transport with session management
- **Auth** - Bearer token authentication for remote deployments
- **Origin Validation** - DNS rebinding attack prevention

## Quick Start

```bash
npm install
npm run build
npm start
```

## Transport Modes

### Stdio (default)
```bash
npm start
```

### Streamable HTTP
```bash
MCP_TRANSPORT=http MCP_PORT=3000 npm start
```

### Streamable HTTP with Auth
```bash
MCP_TRANSPORT=http MCP_PORT=3000 MCP_AUTH_TOKEN=your-secret-token npm start
```

## Features

### Resources

| Resource | URI | Description |
|----------|-----|-------------|
| Server Info | `mcp://server/info` | Server name, version, features |
| Config Info | `mcp://server/config` | Transport, auth, environment |
| Project Files | `file:///{path}` | Template-based file access |

### Prompts

| Prompt | Description | Arguments |
|--------|-------------|-----------|
| `code_review` | Review code quality | code, language |
| `explain_code` | Explain code behavior | code, detail_level |
| `generate_tests` | Generate unit tests | code, framework |
| `debug_error` | Debug code errors | code, error |

### Tools

| Tool | readOnly | destructive | idempotent | Description |
|------|----------|-------------|------------|-------------|
| `read_file` | ✓ | ✗ | ✓ | Read file contents |
| `write_file` | ✗ | ✓ | ✓ | Write file (overwrites) |
| `list_directory` | ✓ | ✗ | ✓ | List directory contents |
| `delete_file` | ✗ | ✓ | ✗ | Delete a file |
| `search_code` | ✓ | ✗ | ✓ | Regex search in code |
| `run_command` | ✗ | ✓ | ✗ | Execute shell command |
| `confirm_action` | ✓ | ✗ | ✓ | Request user confirmation |
| `request_input` | ✓ | ✗ | ✓ | Request user input |
| `task_status` | ✓ | ✗ | ✓ | Get async task status |
| `task_cancel` | ✗ | ✓ | ✓ | Cancel a running task |
| `task_list` | ✓ | ✗ | ✓ | List all tasks |
| `batch_process` | ✗ | ✗ | ✗ | Start batch processing |
| `get_weather` | ✓ | ✗ | ✓ | Weather data (structured output) |
| `system_info` | ✓ | ✗ | ✓ | System information (structured output) |
| `list_available_resources` | ✓ | ✗ | ✓ | List resources as resource links |

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `MCP_TRANSPORT` | `stdio` | Transport: `stdio` or `http` |
| `MCP_PORT` | `3000` | HTTP port |
| `MCP_HOST` | `127.0.0.1` | HTTP host |
| `MCP_AUTH_TOKEN` | - | Bearer token for auth (optional) |

## Cloudflare Workers Deployment

Live deployment: **https://mcp-enhanced-server.catnip-haze.workers.dev**

- Health: `GET /health`
- MCP endpoint: `POST /mcp` (JSON-RPC 2.0)
- MCP info: `GET /mcp`

See `cloudflare/` directory for Workers deployment with D1 database.

```bash
cd cloudflare
npm install
wrangler d1 create mcp-enhanced-tasks
# Update database_id in wrangler.toml
wrangler d1 execute mcp-enhanced-tasks --file=src/schema.sql
wrangler deploy
```

### Workers Environment Variables

Set via Cloudflare Dashboard or `wrangler secret put`:
- `MCP_AUTH_TOKEN` - Authentication token
- `MCP_ALLOWED_ORIGINS` - Comma-separated allowed origins

## Architecture

```
src/
├── index.ts              # Main entry, server setup, all features
├── tools/
│   ├── annotations.ts    # Tool Annotation type definitions
│   └── registry.ts       # Tool registry with Zod validation
├── resources/
│   ├── manager.ts        # Resource lifecycle manager
│   └── tools.ts          # Resource tools
├── prompts/
│   ├── manager.ts        # Prompt lifecycle manager
│   └── builtin.ts        # Built-in prompt templates
├── elicitation/
│   ├── manager.ts        # Elicitation request/response manager
│   └── tools.ts          # Elicitation tools
└── tasks/
    ├── manager.ts        # Async task lifecycle manager
    └── tools.ts          # Task tools
```

## Debug

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

TDQS

B3.3/5.0

Scored across 15 tools

Disambiguation4/5

Each tool has a clearly distinct purpose, but the presence of get_weather and system_info alongside file and task management tools creates ambiguity about the server's core domain, potentially confusing an agent.

Naming Consistency3/5

Most tools use a verb_noun pattern (e.g., read_file, list_directory), but several tools like task_status and system_info use noun_noun, breaking the pattern. The mix is readable but inconsistent.

Tool Count3/5

15 tools is a reasonable count, but the inclusion of get_weather and system_info seems extraneous for the implied focus on file and task management, making the set feel slightly over-scoped.

Completeness2/5

File operations lack create directory, move, and copy; task management lacks a create_task tool (tasks are only created via batch_process). These gaps could cause agent failures in common workflows.

Maintenance

ActivityStale
ResponsivenessNo issues