Tiger Memory MCP Server
Officialby timescale
README.md
# Tiger Memory MCP Server
A simple memory system designed to allow LLMs to store and retrieve information. This provides some focused tools to LLMs via the [Model Context Protocol](https://modelcontextprotocol.io/introduction).
## API
All methods are exposed as MCP tools and REST API endpoints.
## Development
Cloning and running the server locally.
```bash
git clone git@github.com:timescale/tiger-memory-mcp-server.git
```
### Building
Run `npm i` to install dependencies and build the project. Use `npm run watch` to rebuild on changes.
Create a `.env` file based on the `.env.sample` file.
```bash
cp .env.sample .env
```
### Testing
The MCP Inspector is very handy.
```bash
npm run inspector
```
| Field | Value |
| -------------- | --------------- |
| Transport Type | `STDIO` |
| Command | `node` |
| Arguments | `dist/index.js` |
#### Testing in Claude Desktop
Create/edit the file `~/Library/Application Support/Claude/claude_desktop_config.json` to add an entry like the following, making sure to use the absolute path to your local `tiger-memory-mcp-server` project, and real database credentials.
```json
{
"mcpServers": {
"tiger-memory": {
"command": "node",
"args": [
"/absolute/path/to/tiger-memory-mcp-server/dist/index.js",
"stdio"
],
"env": {
"PGHOST": "x.y.tsdb.cloud.timescale.com",
"PGDATABASE": "tsdb",
"PGPORT": "32467",
"PGUSER": "readonly_mcp_user",
"PGPASSWORD": "abc123"
}
}
}
}
```
## Deployment
We use a Helm chart to deploy to Kubernetes. See the `chart/` directory for details.
The service is accessible to other services in the cluster via the DNS name `tiger-memory-mcp-server.savannah-system.svc.cluster.local`.
### Database setup
Creating the database user:
```sql
CREATE USER tiger_memory WITH PASSWORD 'secret';
GRANT CREATE ON DATABASE tsdb TO tiger_memory;
```
### Secrets
Run the following to create the necessary sealed secrets. Be sure to fill in the correct values.
```bash
kubectl -n savannah-system create secret generic tiger-memory-mcp-server-database \
--dry-run=client \
--from-literal=user="tiger_memory" \
--from-literal=password="secret" \
--from-literal=database="tsdb" \
--from-literal=host="x.y.tsdb.cloud.timescale.com" \
--from-literal=port="32467" \
-o yaml | kubeseal -o yaml
# https://logfire-us.pydantic.dev/tigerdata/tigerdata/settings/write-tokens
kubectl -n savannah-system create secret generic tiger-memory-mcp-server-logfire \
--dry-run=client \
--from-literal=token="pylf_v1_us_" \
-o yaml | kubeseal -o yaml
# https://login.tailscale.com/admin/settings/keys
kubectl -n savannah-system create secret generic tiger-memory-mcp-server-tailscale \
--dry-run=client \
--from-literal=authkey="tskey-auth-" \
-o yaml | kubeseal -o yaml
```
Update `./chart/values/dev.yaml` with the output.
TDQS
A3.7/5.0
Scored across 4 tools
Disambiguation5/5
Each tool has a unique, non-overlapping purpose: create (remember), read (recall), update (update), delete (forget). No ambiguity.
Naming Consistency5/5
All tool names are single-word imperative verbs (forget, recall, remember, update), following a consistent pattern.
Tool Count5/5
4 tools cover the essential CRUD operations for memory management, which is well-scoped and appropriate.
Completeness5/5
The tool set fully covers all CRUD operations (Create, Read, Update, Delete). No obvious gaps for the stated purpose.
Maintenance
ActivityStale
ResponsivenessUnresponsive