Skip to main content
Glama
README.md
# Memo MCP Server

A filesystem-backed MCP server with REST API for AI tool integration and project workflow tracking. **Zero database required.**

## Overview

This server uses your local filesystem as storage — no PostgreSQL, no Prisma, no external services. Data is stored as plain JSONL files in `E:\.mcp\` and rules are read directly from `E:\Data\*.md` markdown files.

It provides a REST API on port 5000 and an MCP stdio interface that AI tools (Claude Desktop, Cline, etc.) can connect to directly.

## Features

- **Filesystem storage** — plain JSONL files, readable in any editor
- **REST API** on port 5000 — full CRUD + keyword search on all entities
- **MCP stdio server** — AI tools call tools like `register_project`, `log_session`, `get_rules` directly
- **123 rules loaded from `E:\Data\`** — engineering standards by domain (backend, frontend, database, infra, security, testing, teamwork)
- **Project session tracking** — every Claude session logged and searchable
- **Legacy CRM** — companies, clients, memos (backward-compatible)
- **Zero external dependencies** — no database, no Docker, no cloud services

## Getting Started

### Prerequisites

- Node.js 18+

### Setup

```bash
# Install dependencies
npm install

# Build
npm run build

# Start (REST API)
node dist/index.js
```

## Usage

### REST API

```bash
# Workflow: Projects & Sessions
curl http://localhost:5000/api/projects
curl -X POST http://localhost:5000/api/projects \
  -H "Content-Type: application/json" \
  -d '{"name":"my-app","techStack":"React,Node"}'
curl http://localhost:5000/api/sessions?projectName=my-app
curl -X POST http://localhost:5000/api/sessions \
  -H "Content-Type: application/json" \
  -d '{"projectName":"my-app","issue":"fixed login bug","rootCause":"missing JWT validation","solution":"added middleware"}'

# Rules
curl http://localhost:5000/api/rules?domain=backend
curl http://localhost:5000/api/rules/domains
curl http://localhost:5000/api/rules/search?keywords=caching

# Companies — full CRUD + search
curl http://localhost:5000/api/companies
curl http://localhost:5000/api/companies/search?keywords=acme
curl -X POST http://localhost:5000/api/companies \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Corp","country":"US","industry":"tech"}'

# Dashboard
curl http://localhost:5000/api/ai/summary
```

### MCP (AI Tool Integration)

Run the server in MCP stdio mode:

```bash
$env:MCP_MODE="stdio"; node dist/index.js
```

#### Claude Desktop / Cline config

```json
{
  "mcpServers": {
    "memo-server": {
      "command": "node",
      "args": ["E:\\mcp-server\\dist\\index.js"],
      "env": {
        "MCP_MODE": "stdio"
      }
    }
  }
}
```

#### Available MCP Tools

| Tool | Description |
|------|-------------|
| **Workflow** | |
| `register_project` | Register a new project |
| `get_project_context` | Get project info + recent logs + relevant rules |
| `log_session` | Save structured session output |
| `search_sessions` | Search past work sessions |
| `get_rules` | Query rules by domain |
| `get_dashboard` | Overview of all projects and sessions |
| **Legacy CRM** | |
| `create_company` | Create a company record |
| `search_companies` | Search companies |
| `get_company` / `delete_company` | Get / delete by ID |
| `create_client` / `search_clients` | Client CRUD |
| `get_client` / `delete_client` | Client get / delete |
| `create_memo` / `list_memos` | Memo CRUD |
| `get_memo` / `delete_memo` | Memo get / delete |
| `ai_search` / `ai_context` | Cross-table search |
| `ai_quick_note` / `ai_summary` | Quick note / dashboard |

## Data Storage

```
E:\
├── Data\development\*.md     ← rules (edit to update standards)
├── Data\teamwork\*.md        ← rules
├── mcp-server\               ← this repository
└── .mcp\                     ← runtime data (auto-created)
    ├── projects\{name}\
    │   ├── meta.json         ← project info
    │   └── sessions.jsonl    ← session logs (append-only)
    ├── companies.jsonl       ← CRM data
    ├── clients.jsonl
    └── memos.jsonl
```

## Architecture

The server reads `E:\Data\*.md` markdown files on startup, parses every `##` section into a rule, and caches everything in memory. All writes use append-only JSONL files for O(1) write speed. No database, no ORM, no migrations.

Startup time: ~2ms.

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `5000` | REST API port |
| `MCP_MODE` | — | Set to `stdio` for MCP protocol mode |