README.md•3.89 kB
# User Info MCP Server
A simple MCP (Model Context Protocol) server that provides user information management through tool calls. Built with FastMCP for efficient context sharing.
## Features
- **Static Mode**: Returns pre-configured user information from `user_info.txt`
- **Dynamic Mode**: Allows session-based user info storage when `USER_MANAGED=true`
- **Multiple Transports**: Supports both stdio and HTTP communication
- **Date Integration**: Automatically includes current date in responses
## Quick Start
### Installation
```bash
# Clone or download the project
cd mcp-userinfo
# Install dependencies
uv sync
```
### Running the Server
```bash
# Static mode (default)
uv run python server.py
# Dynamic mode with user management
USER_MANAGED=true uv run python server.py
# HTTP mode
PORT=8000 uv run python server.py
```
## Available Tools
### Always Available
- `get_user_info()`: Returns user information with current date header
### Dynamic Mode Only (`USER_MANAGED=true`)
- `put_user_info(info: str)`: Store user info for the current session (overwrites existing)
## Configuration
### Static Mode
Edit `user_info.txt` in the project root to customize the default user information:
```txt
Name: Your Name
Company: Your Company
Location: Your Location
Role: Your Role
Interests:
- Interest 1
- Interest 2
Professional Skills:
- Skill 1
- Skill 2
```
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `USER_MANAGED` | Enable dynamic user info storage | `false` |
| `USER_INFO_PATH` | Custom path to user info file | `user_info.txt` |
| `HOST` | HTTP server host | `127.0.0.1` |
| `PORT` | HTTP server port (enables HTTP transport) | - |
## MCP Client Configuration
### VS Code / Cursor (stdio)
Add to `.vscode/mcp.json` or `.cursor/mcp.json`:
```json
{
"mcpServers": {
"userInfoServer": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/mcp-userinfo"
}
}
}
```
### With Dynamic Mode
```json
{
"mcpServers": {
"userInfoServer": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/mcp-userinfo",
"env": {
"USER_MANAGED": "true",
"USER_INFO_PATH": "~/Documents/my_profile.txt"
}
}
}
}
```
### HTTP Transport
```json
{
"mcpServers": {
"userInfoServer": {
"type": "http",
"url": "https://your-domain.com/mcp/"
}
}
}
```
### Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"userInfoServer": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/mcp-userinfo"
}
}
}
```
## Usage Examples
### Getting User Info
```python
# The tool automatically includes current date
user_info = await get_user_info()
# Returns: "=== CURRENT DATE: 2024-01-15 ===\nUSE THIS DATE FOR ALL CALCULATIONS\n\n[your user info]"
```
### Storing User Info (Dynamic Mode)
```python
await put_user_info("""
Name: John Doe
Company: Tech Corp
Location: San Francisco, CA
Role: Software Engineer
Interests:
- Python development
- Machine learning
- Open source
""")
```
## Project Structure
```
mcp-userinfo/
├── server.py # Main MCP server implementation
├── user_info.txt # Static user information file
├── pyproject.toml # Project configuration
└── README.md # This file
```
## Dependencies
- `fastmcp>=2.11.3` - MCP server framework
- `uv` - Python package manager (for running)
## Notes
- In dynamic mode, user information is stored in memory and persists only for the current session
- The current date is automatically included in all responses and should be trusted for calculations
- Static mode falls back to a default message if `user_info.txt` doesn't exist