Skip to main content
Glama
manish6007

Combined MCP Server

by manish6007
README.md
# Combined MCP Server

A production-grade MCP (Model Context Protocol) server combining **Redshift query capabilities** and **Knowledgebase vector store** features.

## Features

### Redshift Tools
- **run_query** - Execute SQL with IAM authentication via `get_cluster_credentials`
- **list_schemas** - List database schemas
- **list_tables** - List tables in a schema
- **describe_table** - Get table structure

Large results (>100 rows) are automatically stored in S3 with 20 sample rows returned.

### Knowledgebase Tools
- **build_vectorstore** - Build vector store from S3 markdown files
- **query_vectorstore** - Hybrid search (semantic + keyword) with RRF reranking
- **get_vectorstore_status** - Check build status and cache stats

## Quick Start

### Local Development

1. **Install uv (if not already installed):**
   ```bash
   curl -LsSf https://astral.sh/uv/install.sh | sh
   # Or on Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
   ```

2. **Start infrastructure:**
   ```bash
   docker-compose up -d postgres localstack
   ```

3. **Install dependencies:**
   ```bash
   uv pip install -e ".[dev]"
   ```

4. **Configure environment:**
   ```bash
   cp .env.example .env.local
   # Edit .env.local with your settings
   ```

5. **Run the server:**
   ```bash
   # With MCP Inspector
   mcp dev src/combined_mcp_server/main.py

   # Or directly
   python -m combined_mcp_server.main
   ```

### ECS Deployment

```bash
# Build container
docker build -t combined-mcp-server .

# Run with health checks
docker run -p 8080:8080 --env-file .env combined-mcp-server
```

Health endpoints:
- `GET /health` - Liveness probe
- `GET /ready` - Readiness probe
- `GET /status` - Detailed status

## Configuration

See `.env.example` for all configuration options. Key settings:

| Variable | Description |
|----------|-------------|
| `REDSHIFT_CLUSTER_ID` | Redshift cluster identifier |
| `POSTGRES_SECRET_NAME` | Secrets Manager secret for pgvector DB |
| `KNOWLEDGEBASE_S3_BUCKET` | S3 bucket with markdown files |
| `BEDROCK_EMBEDDING_MODEL` | Titan embedding model ID |

## Architecture

```
┌─────────────────────────────────────────────────────┐
│                  Combined MCP Server                 │
├─────────────────────┬───────────────────────────────┤
│   Redshift Tools    │     Knowledgebase Tools       │
│  ─────────────────  │  ───────────────────────────  │
│  • run_query        │  • build_vectorstore          │
│  • list_schemas     │  • query_vectorstore          │
│  • list_tables      │  • get_vectorstore_status     │
│  • describe_table   │                               │
├─────────────────────┴───────────────────────────────┤
│                    Core Services                     │
│  AWS (Secrets Manager, S3, Bedrock, Redshift)       │
│  PostgreSQL + pgvector                              │
└─────────────────────────────────────────────────────┘
```

## Testing

```bash
# Unit tests
pytest tests/ -v

# With coverage
pytest tests/ -v --cov=combined_mcp_server

# Integration tests (requires Docker)
docker-compose up -d
pytest tests/ -v -m integration
```

## License

MIT

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. The vectorstore tools (build, get_status, query) handle knowledge base operations, while the Redshift tools (list_schemas, list_tables, describe_table, run_query) handle database operations. The separation between these two domains is unambiguous.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern. The verbs are descriptive (build, describe, get, list, query, run) and the nouns clearly indicate the target resource (vectorstore, table, schemas, tables, query). There are no deviations in naming conventions.

Tool Count4/5

With 7 tools, the count is reasonable for a combined server covering two domains. However, the vectorstore side feels slightly thin with only three tools (build, status, query), lacking operations like update or delete. The Redshift side is well-covered with four tools.

Completeness4/5

For the Redshift domain, the toolset provides comprehensive coverage (list schemas/tables, describe table, run query). For the vectorstore domain, core operations exist (build, query, status), but there are minor gaps such as updating or deleting documents from the knowledge base, which agents might need to work around.

Maintenance

ActivityStale
ResponsivenessNo issues