Personal MCP
# Personal MCP
This project is a small local MCP server for learning how MCP tools, resources, and prompts work with personal data.
## What this is
A beginner-friendly example of an MCP that exposes personal information from JSON files. It is intentionally simple and does not include authentication, databases, cloud deployment, or sync systems.
## Features
- MCP tools for reading profile, projects, education, experience, and skills
- Simple search across personal data
- Context retrieval by topic
- MCP resources for direct access to JSON files
- One reusable prompt for generating a professional bio
- Local execution only
## Project structure
```text
personal-mcp/
├── server.py
├── data/
│ ├── profile.json
│ ├── projects.json
│ ├── education.json
│ ├── experience.json
│ └── skills.json
├── pyproject.toml
├── .gitignore
├── .env.example
└── README.md
```
## Installation
```bash
uv sync
```
## Running
```bash
uv run mcp dev server.py
```
You can then use MCP Inspector or an MCP client to test the server.
## Customizing
Replace the JSON placeholder data in the `data/` directory with your own information.
## MCP concepts shown here
### Tools
These are actions such as:
- `get_profile()`
- `get_projects()`
- `search_personal_data()`
- `get_context()`
### Resources
These are addressable data endpoints such as:
- `personal://profile`
- `personal://projects`
### Prompts
This project includes:
- `personal_bio`
The goal is to keep the project understandable enough for a beginner learning MCP.TDQS
Scored across 8 tools
Each getter targets a distinct data category, but get_context overlaps with all of them by accepting the same topics, and search_personal_data can also duplicate broad retrieval. Descriptions help, but an agent may hesitate between the generic and specific tools.
The vast majority follow a clear get_<resource> pattern (get_profile, get_education, get_projects). search_personal_data is a minor deviation, but it still uses a predictable verb_noun structure, so the set remains consistent.
Eight tools is well-scoped for a personal-data retrieval server. Each resource area is represented without excessive fragmentation or unnecessary bulk.
The surface covers all advertised personal data categories (profile, education, experience, skills, projects), plus a search tool and a generic context tool that can return everything. For a read-only personal information server, there are no obvious dead ends.