Identity Server
A local MCP server that maintains and serves personal identity context to LLMs.
Installation
# Clone and set up virtual environment
git clone https://github.com/ruthvik-947/identity-server.git
cd identity-server
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .
Note: Always run commands from the virtual environment. The project uses sentence-transformers and sqlite-vec for semantic search, which require specific dependency versions.
Quick Start
- Initialize your identity directory:
identity init
- Edit
~/.identity/identity.yamlwith your info
- Configure sources in
~/.identity/sources.yaml
- Sync your sources:
identity sync
- Add to Claude Code's MCP config:
{
"mcpServers": {
"identity": {
"command": "/path/to/identity-server/.venv/bin/identity",
"args": ["serve"]
}
}
}
Replace
/path/to/identity-serverwith your actual installation path (e.g.,~/.local/identity-server).
CLI Commands
identity init- Initialize identity directoryidentity status- Show current identityidentity sync- Sync all sourcesidentity sources- List configured sourcesidentity serve- Start MCP server
MCP Tools
get_identity()- Core identity infoget_projects()- Indexed projectsget_reading()- Reading list itemsquery(question)- Semantic searchlist_sources()- Configured sourcesadd_source(description)- Setup instructions
Source Types
local_files- Markdown/text files via globgit_repos- README, commits, languagesrss- RSS/Atom feedscustom- Python script connectors
Custom Connectors
Create Python scripts to pull data from any source (APIs, databases, etc.).
1. Create a connector in ~/.identity/connectors/:
# ~/.identity/connectors/my_connector.py
def fetch(config):
"""
Args:
config: dict from sources.yaml 'config' field
Returns:
list of dicts with: title, body, tags (optional), timestamp (optional)
"""
return [
{
"title": "Example Item",
"body": "Content goes here...",
"tags": ["tag1", "tag2"],
}
]
2. Add to sources.yaml:
sources:
- name: my-source
type: custom
connector: connectors/my_connector.py # relative to ~/.identity
privacy: private
config: # passed to fetch()
api_key: "..."
3. Run identity sync to execute connectors and index results.
Connectors only run during sync—the MCP server queries the local database.
Privacy
Tag sources as public or private. Private content is excluded from MCP queries.











