Skip to main content
Glama
KenTaniguchi-R

Personal Info MCP

README.md
# Personal Info MCP

A small MCP server that stores your personal info (name, address, email,
professional details, etc.) in an editable JSON file so Claude can pull values
instead of you re-typing them every time.

Holds **basic identity + professional** info only. Do **not** put financial data
or government IDs in here — it is not encrypted.

## Install

Runs with [`uvx`](https://docs.astral.sh/uv/) — no clone, no virtualenv. uvx
fetches, builds, and caches the server straight from GitHub:

```bash
uvx --from git+https://github.com/KenTaniguchi-R/personal-info-mcp personal-info-mcp
```

Pin a tag or commit for stability and use `uvx --refresh ...` to upgrade later:

```bash
uvx --from git+https://github.com/KenTaniguchi-R/personal-info-mcp@v0.1.0 personal-info-mcp
```

You won't usually run this by hand — point your MCP client at it (see below).
Once this is published to PyPI the command simplifies to `uvx personal-info-mcp`.

## Tools

| Tool | Type | Description |
|------|------|-------------|
| `get_personal_info(field)` | read | Get exactly one field by name. No fetch-all mode. |
| `search_personal_info(query, limit?)` | read | Keyword search over names/descriptions/tags (no values). Primary way to find a field. |
| `list_tags()` | read | List tags/categories with a count of fields under each. |
| `set_personal_info(field, value, description?, tags?)` | write | Add/update a field, with optional description and tags. |
| `delete_personal_info(field)` | write | Remove a field. |

The split is deliberate for privacy: every read tool exposes only names,
descriptions, and tags so the AI can find the right field, then
`get_personal_info` returns exactly one value. No single call ever reveals more
than one value, and nothing leaves the machine.

Discovery is **search-first by design**: there is no "list every field" tool, so
no call can dump the whole catalog into the AI's context. Use `list_tags` to
orient, `search_personal_info` to find a field (results are bounded by `limit`,
relevance-ranked), then `get`/`delete` it. A `get`/`delete` on a name that
doesn't exist returns a few near-match suggestions — never the full list — so a
typo can't flood context no matter how many fields you store.

## Editing your data directly

Your info lives in a JSON file in your per-user data directory, created on first
write with owner-only (`0600`) permissions:

| OS | Default path |
|----|--------------|
| macOS | `~/Library/Application Support/personal-info-mcp/personal_info.json` |
| Linux | `~/.local/share/personal-info-mcp/personal_info.json` |
| Windows | `%LOCALAPPDATA%\personal-info-mcp\personal_info.json` |

Set the `PERSONAL_INFO_PATH` environment variable to keep it somewhere else. Each
field is an object with a `value`, a short non-secret `description`, and optional
`tags` (the description and tags are shown in discovery/search to help pick the
right field — never put secrets in them):

```json
{
  "full_name": { "value": "Jane Doe", "description": "Legal full name", "tags": ["identity"] },
  "email": { "value": "jane@example.com", "description": "Primary email", "tags": ["contact"] },
  "amex_main": { "value": "...", "description": "Primary credit card", "tags": ["payment", "card"] }
}
```

Legacy flat `{ "field": "value" }` files are still read (description/tags default
to empty) and upgraded to the object form on the next write.

## Register with Claude Code

```bash
claude mcp add personal-info -- uvx --from git+https://github.com/KenTaniguchi-R/personal-info-mcp personal-info-mcp
```

Or add it to your MCP client config (e.g. `~/.claude.json` `mcpServers`) by hand:

```json
{
  "mcpServers": {
    "personal-info": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KenTaniguchi-R/personal-info-mcp",
        "personal-info-mcp"
      ]
    }
  }
}
```

Mark `set_personal_info` and `delete_personal_info` as confirm-required (writes);
`get_personal_info`, `search_personal_info`, and `list_tags` are safe to
auto-allow (reads).

## Register with Claude Desktop

Add the same block to `claude_desktop_config.json` and restart Claude Desktop
(macOS: `~/Library/Application Support/Claude/`, Windows:
`%APPDATA%\Claude\`):

```json
{
  "mcpServers": {
    "personal-info": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KenTaniguchi-R/personal-info-mcp",
        "personal-info-mcp"
      ]
    }
  }
}
```

## Develop locally

Clone and work against the source:

```bash
git clone https://github.com/KenTaniguchi-R/personal-info-mcp
cd personal-info-mcp
uv sync
uv run mcp dev personal_info_mcp/server.py   # opens the MCP Inspector
uv run pytest -v                              # run tests
```

To point a client at your working copy instead of the GitHub version, use `uv
run` against the checkout:

```json
{
  "mcpServers": {
    "personal-info": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/personal-info-mcp", "personal-info-mcp"]
    }
  }
}
```

TDQS

A4.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: delete, get, list tags, search, and set. No two tools overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., delete_personal_info, list_tags). No mixing of conventions.

Tool Count5/5

5 tools is well-scoped for managing personal info fields. Covers all necessary operations without excess.

Completeness5/5

Full lifecycle coverage: set (create/update), get (read), search (discovery), delete, and list_tags (organization). No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues