qdrant-memory-mcp 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qdrant_memory_mcp-0.1.0.dist-info/METADATA +173 -0
- qdrant_memory_mcp-0.1.0.dist-info/RECORD +6 -0
- qdrant_memory_mcp-0.1.0.dist-info/WHEEL +5 -0
- qdrant_memory_mcp-0.1.0.dist-info/entry_points.txt +2 -0
- qdrant_memory_mcp-0.1.0.dist-info/licenses/LICENSE +21 -0
- qdrant_memory_mcp-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: qdrant-memory-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Metadata-only stdio MCP distribution of the Qdrant Memory Runtime
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/cnkang/qdrant-memory-mcp
|
|
7
|
+
Project-URL: Repository, https://github.com/cnkang/qdrant-memory-mcp
|
|
8
|
+
Project-URL: Issues, https://github.com/cnkang/qdrant-memory-mcp/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/cnkang/qdrant-memory-mcp/blob/main/CHANGELOG.md
|
|
10
|
+
Project-URL: Runtime, https://github.com/cnkang/hermes-plugin-qdrant-memory
|
|
11
|
+
Project-URL: Skill, https://github.com/cnkang/skills/tree/main/qdrant-memory
|
|
12
|
+
Keywords: mcp,memory,qdrant,agents
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Requires-Python: >=3.11
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: hermes-plugin-qdrant-memory[mcp]==0.2.0
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# Qdrant Memory MCP
|
|
22
|
+
|
|
23
|
+
<!-- mcp-name: io.github.cnkang/qdrant-memory -->
|
|
24
|
+
|
|
25
|
+
[简体中文](README.zh-CN.md)
|
|
26
|
+
|
|
27
|
+
Persistent, scoped memory for AI agents through four explicit **stdio MCP** tools.
|
|
28
|
+
This repository distributes the existing [Python Runtime](https://github.com/cnkang/hermes-plugin-qdrant-memory).
|
|
29
|
+
Its metadata-only wheel contains no Python business implementation. The console
|
|
30
|
+
script points directly to `qdrant_memory.standalone:main` and depends on
|
|
31
|
+
`hermes-plugin-qdrant-memory[mcp]==0.2.0`.
|
|
32
|
+
|
|
33
|
+
**Versions:** MCP distribution 0.1.0 depends on Runtime 0.2.0. Release artifacts
|
|
34
|
+
are available through the [distribution PyPI page](https://pypi.org/project/qdrant-memory-mcp/)
|
|
35
|
+
and [Runtime PyPI page](https://pypi.org/project/hermes-plugin-qdrant-memory/).
|
|
36
|
+
See [release checklist](docs/publishing.md) for the publishing sequence.
|
|
37
|
+
|
|
38
|
+
Runtime, [optional Agent Skill](https://github.com/cnkang/skills/tree/main/qdrant-memory)
|
|
39
|
+
and MCP distribution versions are independent. The Skill is usage guidance,
|
|
40
|
+
not a runtime dependency. Hermes retains its native MemoryProvider, automatic
|
|
41
|
+
extraction and prefetch. Ordinary MCP performs only explicitly requested memory
|
|
42
|
+
operations; it does not automatically extract every conversation turn.
|
|
43
|
+
|
|
44
|
+
## Install and initialize
|
|
45
|
+
|
|
46
|
+
Requires Python 3.11+ and either [uv](https://docs.astral.sh/uv/) or a Python
|
|
47
|
+
virtual environment. You must configure storage and an embedding service.
|
|
48
|
+
For the example below, run Ollama and install `qwen3-embedding:4b` yourself.
|
|
49
|
+
|
|
50
|
+
Create an operator-owned profile directory and save `qdrant-memory.json` inside:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"schema_version": 1,
|
|
55
|
+
"scope": {"user_id": "my-user", "agent_id": "my-agent"},
|
|
56
|
+
"qdrant": {"mode": "embedded", "collection": "qdrant_memory"},
|
|
57
|
+
"embedding": {
|
|
58
|
+
"mode": "plugin", "provider": "ollama", "model": "qwen3-embedding:4b",
|
|
59
|
+
"base_url": "http://127.0.0.1:11434", "dimensions": 2560, "distance": "Cosine"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Initialize, then launch (replace `/path/to/profile` with your absolute path):
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
uvx --from qdrant-memory-mcp==0.1.0 qdrant-memory-mcp --home /path/to/profile init
|
|
68
|
+
uvx --from qdrant-memory-mcp==0.1.0 qdrant-memory-mcp --home /path/to/profile mcp
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The command without `--home` uses `~/.qdrant-memory`, independent of Hermes.
|
|
72
|
+
Configure and initialize that directory before letting a Registry client launch
|
|
73
|
+
`uvx qdrant-memory-mcp==0.1.0 mcp`. The executable name matches the package name;
|
|
74
|
+
the Registry's positional `mcp` selects protocol mode. Its optional named
|
|
75
|
+
`--home` precedes `mcp` when a client supplies a custom profile.
|
|
76
|
+
|
|
77
|
+
Alternatively:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
python3 -m venv .venv
|
|
81
|
+
.venv/bin/python -m pip install qdrant-memory-mcp==0.1.0
|
|
82
|
+
.venv/bin/qdrant-memory-mcp --home /path/to/profile init
|
|
83
|
+
.venv/bin/qdrant-memory-mcp --home /path/to/profile mcp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
On Windows use `.venv\Scripts\python.exe` and
|
|
87
|
+
`.venv\Scripts\qdrant-memory-mcp.exe`.
|
|
88
|
+
|
|
89
|
+
Qdrant embedded, self-hosted server and Cloud, plus Ollama and OpenAI-compatible
|
|
90
|
+
embeddings, are configured in the Runtime's [configuration reference](https://github.com/cnkang/hermes-plugin-qdrant-memory/blob/main/docs/configuration.md).
|
|
91
|
+
Keep credentials in operator environment variables (`QDRANT_API_KEY`,
|
|
92
|
+
`EMBEDDING_API_KEY`, or configured names); never commit their values.
|
|
93
|
+
Initialization against an existing collection requires explicit operator choice;
|
|
94
|
+
do not use a production destination for a first test.
|
|
95
|
+
|
|
96
|
+
## Connect a client
|
|
97
|
+
|
|
98
|
+
Codex `config.toml` example:
|
|
99
|
+
|
|
100
|
+
```toml
|
|
101
|
+
[mcp_servers.qdrant_memory]
|
|
102
|
+
command = "uvx"
|
|
103
|
+
args = ["--from", "qdrant-memory-mcp==0.1.0", "qdrant-memory-mcp", "--home", "/path/to/profile", "mcp"]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
OpenCode `opencode.json` example:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"$schema": "https://opencode.ai/config.json",
|
|
111
|
+
"mcp": {
|
|
112
|
+
"qdrant_memory": {
|
|
113
|
+
"type": "local",
|
|
114
|
+
"command": ["uvx", "--from", "qdrant-memory-mcp==0.1.0", "qdrant-memory-mcp", "--home", "/path/to/profile", "mcp"],
|
|
115
|
+
"enabled": true
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Pi needs a separately installed MCP client/extension. In that extension, use
|
|
122
|
+
`command: uvx` and the same argument list. No built-in Pi MCP support or universal
|
|
123
|
+
extension config format is claimed. These are configuration examples; this
|
|
124
|
+
distribution's acceptance tests use the official Python MCP SDK, not live agent
|
|
125
|
+
applications. See the Runtime's [client evidence and limits](https://github.com/cnkang/hermes-plugin-qdrant-memory/blob/main/docs/mcp.md).
|
|
126
|
+
|
|
127
|
+
## Tools and boundaries
|
|
128
|
+
|
|
129
|
+
| Tool | Input | Result |
|
|
130
|
+
|---|---|---|
|
|
131
|
+
| `qdrant_memory_search` | `query`, optional `category` | Scoped memories with IDs, scores and provenance |
|
|
132
|
+
| `qdrant_memory_add` | `text` | Durable memory ID |
|
|
133
|
+
| `qdrant_memory_update` | exact `id`, replacement `text` | Scoped replacement |
|
|
134
|
+
| `qdrant_memory_delete` | exact `id` | Scoped deletion |
|
|
135
|
+
|
|
136
|
+
Scope is fixed by the operator's profile (`user_id`, `agent_id`). Model inputs
|
|
137
|
+
and MCP client identity cannot override it; knowing an ID does not grant access.
|
|
138
|
+
Migration, export, reset and bulk deletion remain trusted operator CLI commands;
|
|
139
|
+
see [standalone maintenance](https://github.com/cnkang/hermes-plugin-qdrant-memory/blob/main/docs/standalone.md).
|
|
140
|
+
No resources or prompts are advertised. This is a local subprocess, with no
|
|
141
|
+
public HTTP/SSE listener or remote authentication service. Stdout is reserved
|
|
142
|
+
for protocol messages, with sanitized diagnostics on stderr.
|
|
143
|
+
|
|
144
|
+
Data flows from client → Runtime → embedding provider → Qdrant and the local
|
|
145
|
+
SQLite ledger. With local Ollama and embedded Qdrant, memory processing stays
|
|
146
|
+
local; cloud embedding receives memory/query text, and cloud Qdrant receives
|
|
147
|
+
vectors and stored payloads. The client/model may also receive recalled text.
|
|
148
|
+
The operator must authorize retention and access and protect the profile files.
|
|
149
|
+
|
|
150
|
+
One writer lease coordinates a profile/destination. Do not overlap MCP, CLI
|
|
151
|
+
or Hermes processes writing to it. Separate profiles or machines do not provide
|
|
152
|
+
a distributed lock. This package does not support uncoordinated multiprocess
|
|
153
|
+
writes, auto-extraction, an HTTP transport, or implicit credential discovery
|
|
154
|
+
from Hermes. It preserves the Runtime's ledger, IDs and recovery semantics.
|
|
155
|
+
|
|
156
|
+
## Verification and development
|
|
157
|
+
|
|
158
|
+
CI builds wheel/sdist, checks metadata and ownership marker, and runs installed
|
|
159
|
+
protocol tests with temporary profiles, embedded Qdrant and a deterministic
|
|
160
|
+
loopback embedding fixture on Linux/macOS/Windows, Python 3.11 and 3.14.
|
|
161
|
+
No test connects to personal Qdrant, Hermes profiles or memory data. These tests
|
|
162
|
+
cover initialize, discovery, four tools, persistence, recovery, scope isolation,
|
|
163
|
+
error redaction and protocol stdout. Provider/cloud compatibility evidence
|
|
164
|
+
belongs to the [Runtime](https://github.com/cnkang/hermes-plugin-qdrant-memory/blob/main/docs/validation.md).
|
|
165
|
+
|
|
166
|
+
CI prefers the immutable Runtime PyPI release. Before Runtime 0.2.0 reaches PyPI,
|
|
167
|
+
CI builds a wheel from an immutable candidate
|
|
168
|
+
commit recorded in `runtime-source.json`. This is only a preparation fixture:
|
|
169
|
+
published dependency metadata always uses the exact PyPI version. Release
|
|
170
|
+
workflow acceptance requires installation from PyPI and never uses that fallback.
|
|
171
|
+
|
|
172
|
+
See [CI and dependency maintenance](docs/ci.md), [publishing](docs/publishing.md), [architecture](docs/architecture.md), and
|
|
173
|
+
the optional [Skill](https://github.com/cnkang/skills/tree/main/qdrant-memory).
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
qdrant_memory_mcp-0.1.0.dist-info/licenses/LICENSE,sha256=tI3MOOwKR6ncyQZfZF_QsRjB8_yoGYttXJp5oeLlqZQ,1065
|
|
2
|
+
qdrant_memory_mcp-0.1.0.dist-info/METADATA,sha256=VmrBkKcFfOYJ-4CmrfPTZjTNINdS39HN7uWf_-QX9PY,8149
|
|
3
|
+
qdrant_memory_mcp-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
4
|
+
qdrant_memory_mcp-0.1.0.dist-info/entry_points.txt,sha256=64_yXmNAAfk6PJaYblxeXVbiTNjP42nE8uxPZztu8YE,68
|
|
5
|
+
qdrant_memory_mcp-0.1.0.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
6
|
+
qdrant_memory_mcp-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kang Liu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|