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