Skip to main content
Glama
README.md
# 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