MCP‑сервер для управления памятью агента: README.md
This commit is contained in:
+138
@@ -0,0 +1,138 @@
|
|||||||
|
# MCP Memory Server
|
||||||
|
|
||||||
|
A lightweight **Model Context Protocol (MCP)** server that exposes a simple key‑value store to other agents or CLI tools.
|
||||||
|
The server is built with `fastmcp` and uses a JSON file as persistent storage.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
- [Features](#features)
|
||||||
|
- [Prerequisites](#prerequisites)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Running the Server](#running-the-server)
|
||||||
|
- [Running the Client](#running-the-client)
|
||||||
|
- [Example Usage](#example-usage)
|
||||||
|
- [Project Structure](#project-structure)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
| Operation | Description |
|
||||||
|
|-----------|-------------|
|
||||||
|
| `set` | Store a value under a key (optionally in a namespace). |
|
||||||
|
| `get` | Retrieve a stored value. |
|
||||||
|
| `delete` | Remove a key from storage. |
|
||||||
|
| `keys` | List all keys, optionally filtered by pattern or namespace. |
|
||||||
|
|
||||||
|
All operations are performed through the MCP protocol over **STDIO**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
- Python 3.10+
|
||||||
|
- pip
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone the repository (or copy the files)
|
||||||
|
git clone https://github.com/your-org/mcp-memory-server.git
|
||||||
|
cd mcp-memory-server
|
||||||
|
|
||||||
|
# Create a virtual environment (optional but recommended)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
pip install fastmcp pydantic python-dotenv
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Tip:** The `memory_server.py` and `memory_client.py` files are self‑contained; no additional packages are required beyond those listed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Running the Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python memory_server.py
|
||||||
|
```
|
||||||
|
|
||||||
|
The server starts listening on STDIO.
|
||||||
|
It will create (or load) a file named `memory_data.json` in the current directory to persist data.
|
||||||
|
|
||||||
|
**Server output example**
|
||||||
|
|
||||||
|
```
|
||||||
|
[Memory-Server] Listening on stdin/stdout...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Running the Client
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python memory_client.py
|
||||||
|
```
|
||||||
|
|
||||||
|
The client demonstrates basic usage: setting, getting, listing keys, and deleting a key.
|
||||||
|
It communicates with the server over STDIO using `fastmcp`.
|
||||||
|
|
||||||
|
**Client output example**
|
||||||
|
|
||||||
|
```
|
||||||
|
Set key 'foo' to value 'bar'
|
||||||
|
Get key 'foo': bar
|
||||||
|
All keys: ['foo']
|
||||||
|
Deleted key 'foo'
|
||||||
|
All keys after deletion: []
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
|
||||||
|
Below is a quick script that shows how you can interact with the server programmatically.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from fastmcp import FastMCPClient
|
||||||
|
import json
|
||||||
|
|
||||||
|
# Connect to the running MCP server (STDIO)
|
||||||
|
client = FastMCPClient("Memory-Server")
|
||||||
|
|
||||||
|
# Set a key
|
||||||
|
client.send({"action": "set", "key": "greeting", "value": "Hello, world!"})
|
||||||
|
|
||||||
|
# Get the key
|
||||||
|
response = client.receive()
|
||||||
|
print(response) # {'status': 'ok', 'value': 'Hello, world!'}
|
||||||
|
|
||||||
|
# List all keys
|
||||||
|
client.send({"action": "keys"})
|
||||||
|
print(client.receive()) # {'status': 'ok', 'keys': ['greeting']}
|
||||||
|
|
||||||
|
# Delete the key
|
||||||
|
client.send({"action": "delete", "key": "greeting"})
|
||||||
|
print(client.receive()) # {'status': 'ok'}
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note:** The client and server communicate via JSON messages.
|
||||||
|
> Each message must contain an `"action"` field that matches one of the supported operations.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
mcp-memory-server/
|
||||||
|
├── memory_server.py # MCP server implementation
|
||||||
|
├── memory_client.py # Demo client script
|
||||||
|
└── README.md # This file
|
||||||
|
```
|
||||||
|
|
||||||
|
- `memory_server.py` – defines the `MemoryServer` class and starts the MCP service.
|
||||||
|
- `memory_client.py` – simple CLI client that exercises all operations.
|
||||||
|
|
||||||
|
Feel free to extend the server with authentication, more sophisticated storage backends, or additional MCP actions. Happy hacking!
|
||||||
Reference in New Issue
Block a user