Skip to main content
Glama
OleksiiMikotkin

Notes MCP Server

README.md
# MCP-сервери: Notes і Git

Два MCP-сервери для підключення до Claude Desktop.
Почав з Notes, але було ще цікаво git спробувати.

## Встановлення

**Вимоги:** Python 3.10+, пакет `mcp`

```bash
pip install mcp
```

Додати до `claude_desktop_config.json` (`%APPDATA%\Claude\claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "notes": {
      "command": "python",
      "args": ["шлях/до/notes_server.py"]
    },
    "git": {
      "command": "python",
      "args": ["шлях/до/git_server.py"],
      "env": { "GIT_REPO_PATH": "шлях/до/репозиторію" }
    }
  }
}
```

Перезапустити Claude Desktop.

---

## Notes Server

Зберігає нотатки у `~/.mcp_notes/notes.json`.

### Tools

| Tool | Аргументи | Опис |
|------|-----------|------|
| `create_note` | `title`, `content` (обов'язкові), `tags` (опційно) | Створити нотатку |
| `update_note` | `title` (обов'язковий), `content`, `tags` (опційно) | Оновити нотатку |
| `delete_note` | `title` (обов'язковий) | Видалити нотатку |
| `search_notes` | `query` (обов'язковий), `tag` (опційно) | Пошук по тексту та тегах |

### Resources

| Resource | Опис |
|----------|------|
| `notes://all` | Всі нотатки у форматі Markdown |
| `notes://{title}` | Одна нотатка за назвою |

### Приклади діалогів

**Створення нотатки:**
> Збережи нотатку "Покупки" з текстом "Молоко, хліб, яйця, кава" і тегом "особисте".

**Пошук:**
> Знайди всі нотатки з тегом "особисте".

**Оновлення:**
> Онови нотатку "Покупки" — додай до списку "масло".

### Обмеження

- Нотатки зберігаються в одному JSON-файлі — не підходить для паралельного запису
- Пошук — простий збіг підрядка, без нечіткого пошуку
- `notes://all` повертає всі нотатки одразу, без пагінації
- Назви нотаток унікальні — дублікати не допускаються

---

## Git Server

Дозволяє переглядати стан репозиторію і робити коміти. Репозиторій задається через `GIT_REPO_PATH` або аргументом `repo_path`.

### Tools

| Tool | Аргументи | Опис |
|------|-----------|------|
| `git_status` | `repo_path` (опційно) | Статус робочого дерева |
| `git_log` | `repo_path`, `limit` (опційно) | Історія комітів |
| `git_diff` | `repo_path`, `file` (опційно) | Незбережені зміни |
| `git_commit` | `message` (обов'язковий), `repo_path`, `files` (опційно) | Зробити коміт |

### Resources

| Resource | Опис |
|----------|------|
| `git://log` | Останні 10 комітів репозиторію за замовчуванням |

### Приклади діалогів

**Статус:**
> Який зараз статус репозиторію?

**Коміт:**
> Зроби коміт усіх змін з повідомленням "fix: виправлено валідацію форми".

**Перегляд змін:**
> Покажи що змінилось у файлі main.py.

### Обмеження

- Тільки локальні операції — `push`, `fetch`, `pull` не підтримуються
- `GIT_REPO_PATH` має бути задано — автовизначення директорії відсутнє
- `git://log` працює лише якщо задано `GIT_REPO_PATH`, повертає 10 комітів