Skip to content

Commit 0c835fc

Browse files
dell-zhangclaude
andcommitted
feat: publish TeleMem to the official MCP registry (v1.7.0)
- server.json manifest (io.github.teleai-uagi/telemem, pypi package, stdio transport, env var docs) - mcp-name ownership marker in README (validated against the PyPI description by the registry) - release.yml: mcp-registry job — installs mcp-publisher, syncs the manifest version to the tag, waits for PyPI visibility, authenticates via GitHub OIDC, publishes - new `telemem` console script (alias of telemem-mcp) so `uvx telemem` runs the server zero-install, per the registry convention; mcp SDK moved into core deps to support it ([mcp] extra kept as alias) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent ec11b20 commit 0c835fc

8 files changed

Lines changed: 105 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,40 @@ jobs:
5656

5757
- name: Publish to PyPI
5858
uses: pypa/gh-action-pypi-publish@release/v1
59+
60+
mcp-registry:
61+
# Publish to the official MCP registry (registry.modelcontextprotocol.io).
62+
# Auth: GitHub OIDC grants the io.github.teleai-uagi/* namespace; package
63+
# ownership is proven by the "mcp-name:" marker in the PyPI description.
64+
needs: publish
65+
runs-on: ubuntu-latest
66+
permissions:
67+
id-token: write
68+
contents: read
69+
steps:
70+
- uses: actions/checkout@v4
71+
72+
- name: Install mcp-publisher
73+
run: |
74+
curl -sL "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m).tar.gz" | tar xz mcp-publisher
75+
76+
- name: Sync server.json version to tag
77+
run: |
78+
TAG_VERSION="${GITHUB_REF_NAME#v}"
79+
jq --arg v "$TAG_VERSION" '.version = $v | .packages[0].version = $v' server.json > server.json.tmp
80+
mv server.json.tmp server.json
81+
82+
- name: Wait for PyPI to serve the new version
83+
run: |
84+
TAG_VERSION="${GITHUB_REF_NAME#v}"
85+
for i in $(seq 1 30); do
86+
curl -sf "https://pypi.org/pypi/telemem/$TAG_VERSION/json" >/dev/null && exit 0
87+
sleep 10
88+
done
89+
echo "PyPI version $TAG_VERSION not visible after 5 minutes" >&2
90+
exit 1
91+
92+
- name: Publish to MCP registry
93+
run: |
94+
./mcp-publisher login github-oidc
95+
./mcp-publisher publish

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33
All notable changes to TeleMem are documented here.
44
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55

6-
## [Unreleased]
6+
## [1.7.0] - 2026-06-12
77

88
### Added
9+
- Published to the official [MCP registry](https://registry.modelcontextprotocol.io)
10+
as `io.github.teleai-uagi/telemem`: `server.json` manifest, PyPI ownership
11+
marker, and an OIDC-authenticated publish job in the release workflow.
12+
- New `telemem` console script (alias of `telemem-mcp`) so `uvx telemem`
13+
runs the MCP server with zero install, per the registry convention.
914
- Evaluation charter (`docs/evaluation.md`) aligned with
1015
[*The Benchmark Theatre*](https://essays.bloo-mind.ai/posts/2026-05-20-mem-eval/):
1116
baselines before architecture, constant base model, deterministic scoring,
@@ -17,6 +22,10 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
1722
The charter applies to new runs; existing published results are unchanged
1823
pending team review.
1924

25+
### Changed
26+
- The MCP SDK (`mcp>=1.6.0`) is now a core dependency — TeleMem is
27+
MCP-ready out of the box; `telemem[mcp]` remains as a no-op alias.
28+
2029
## [1.6.0] - 2026-06-12
2130

2231
First release published to PyPI: `pip install telemem`.

README-ZH.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,11 +565,12 @@ print(f"Answer: ({answer})")
565565
TeleMem 内置 [Model Context Protocol](https://modelcontextprotocol.io)(MCP)服务器,任何兼容 MCP 的客户端——Claude Desktop、Claude Code、Cursor、自定义 Agent——都可以把 TeleMem 用作长期记忆。
566566

567567
```shell
568-
pip install "telemem[mcp]"
568+
pip install telemem
569569

570570
telemem-mcp # stdio(默认)
571571
telemem-mcp --transport sse --port 8421 # SSE over HTTP
572572
TELEMEM_CONFIG=config/config.yaml telemem-mcp # 自定义 TeleMem 配置
573+
uvx telemem # 零安装运行(stdio)
573574
```
574575

575576
服务器提供八个工具:`add_memory``search_memories``get_memories``get_memory``update_memory``delete_memory``delete_all_memories``memory_history`。未显式指定作用域的调用默认使用 `TELEMEM_DEFAULT_USER_ID``telemem-mcp`);批量删除等破坏性操作必须显式指定作用域。

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -582,11 +582,12 @@ print(f"Answer: ({answer})")
582582
TeleMem ships a [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server, so any MCP-compatible client — Claude Desktop, Claude Code, Cursor, custom agents — can use TeleMem as its long-term memory.
583583

584584
```shell
585-
pip install "telemem[mcp]"
585+
pip install telemem
586586

587587
telemem-mcp # stdio (default)
588588
telemem-mcp --transport sse --port 8421 # SSE over HTTP
589589
TELEMEM_CONFIG=config/config.yaml telemem-mcp # custom TeleMem config
590+
uvx telemem # zero-install run (stdio)
590591
```
591592

592593
The server exposes eight tools: `add_memory`, `search_memories`, `get_memories`, `get_memory`, `update_memory`, `delete_memory`, `delete_all_memories`, and `memory_history`. Calls without an explicit scope default to `TELEMEM_DEFAULT_USER_ID` (`telemem-mcp`); destructive bulk deletion always requires an explicit scope.
@@ -754,4 +755,6 @@ Made with ❤️ by [Bloo-Mind AI Ltd](https://www.bloo-mind.ai/) and the Ubiqui
754755
<a href="https://www.bloo-mind.ai/"><img src="assets/bloo-mind.png" alt="Bloo-Mind Logo" width="120px" /></a>
755756
&nbsp;&nbsp;&nbsp;
756757
<img src="assets/TeleAI.png" alt="TeleAI Logo" width="120px" />
757-
</div>
758+
</div>
759+
760+
<sub>mcp-name: io.github.teleai-uagi/telemem</sub>

pyproject.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ dependencies = [
2020
"numpy",
2121
"pyyaml",
2222
"tqdm",
23+
"mcp>=1.6.0",
2324
]
2425

2526
[project.optional-dependencies]
27+
# Kept as an alias for backward compatibility: the MCP SDK is now a core
28+
# dependency so `uvx telemem` works without extras (MCP registry convention).
2629
mcp = [
2730
"mcp>=1.6.0"
2831
]
@@ -44,6 +47,9 @@ dev = [
4447

4548
[project.scripts]
4649
telemem-mcp = "telemem.mcp.server:main"
50+
# `telemem` == the MCP server on stdio, so `uvx telemem` works out of the box
51+
# (the MCP registry convention is that the package identifier is runnable).
52+
telemem = "telemem.mcp.server:main"
4753

4854
[project.urls]
4955
Homepage = "https://github.com/TeleAI-UAGI/telemem"

server.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
3+
"name": "io.github.teleai-uagi/telemem",
4+
"description": "Long-term and multimodal memory for AI agents - character-aware, mem0-compatible, fully-local option",
5+
"repository": {
6+
"url": "https://github.com/TeleAI-UAGI/telemem",
7+
"source": "github"
8+
},
9+
"version": "1.7.0",
10+
"packages": [
11+
{
12+
"registryType": "pypi",
13+
"registryBaseUrl": "https://pypi.org",
14+
"identifier": "telemem",
15+
"version": "1.7.0",
16+
"runtimeHint": "uvx",
17+
"transport": {
18+
"type": "stdio"
19+
},
20+
"environmentVariables": [
21+
{
22+
"name": "OPENAI_API_KEY",
23+
"description": "API key for the default OpenAI LLM/embedder (not needed with a local TELEMEM_CONFIG)",
24+
"isRequired": false,
25+
"isSecret": true
26+
},
27+
{
28+
"name": "TELEMEM_CONFIG",
29+
"description": "Path to a TeleMem YAML/JSON config, e.g. the fully-local Ollama + FAISS setup (config/config.ollama.yaml)",
30+
"isRequired": false,
31+
"isSecret": false
32+
},
33+
{
34+
"name": "TELEMEM_DEFAULT_USER_ID",
35+
"description": "Default memory scope when tool calls omit user_id/agent_id/run_id (default: telemem-mcp)",
36+
"isRequired": false,
37+
"isSecret": false
38+
}
39+
]
40+
}
41+
]
42+
}

telemem/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from .mem0 import TeleMemory
88
from .mem0 import TeleMemory as Memory
99

10-
__version__ = "1.6.0"
10+
__version__ = "1.7.0"
1111

1212
# Everything mem0 exposes, with TeleMem's classes layered on top.
1313
__all__ = sorted(

uv.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)