Metadata-Version: 2.4
Name: pension-pro-mcp
Version: 0.1.0
Summary: MCP server for the PensionPro API
Project-URL: Homepage, https://github.com/douglaslinsmeyer/pension-pro-mcp
Project-URL: Repository, https://github.com/douglaslinsmeyer/pension-pro-mcp
Project-URL: Issues, https://github.com/douglaslinsmeyer/pension-pro-mcp/issues
Author-email: Douglas Linsmeyer <douglaslinsmeyer@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: ai,mcp,model-context-protocol,pension,pensionpro
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.12
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Description-Content-Type: text/markdown

# PensionPro MCP Server

A local, open-source [MCP](https://modelcontextprotocol.io/) server that provides AI assistants with tools to interact with the [PensionPro](https://pensionpro.com/) REST API.

## Features

- **Plan Lookup & Search** — Search plans by name, status, type, or client. Get comprehensive plan details with contacts, cycles, and fee schedules.
- **Project & Task Workflow** — Search projects, view task details, complete/uncomplete tasks, reassign tasks, and create projects from templates.
- **Client & Contact Lookup** — Search clients and contacts, view client details with associated plans.
- **To-Do Management** — Search, create, and update to-dos linked to plans, projects, or contacts.
- **Notes** — Add and retrieve notes on plans, projects, tasks, and contacts.

## Prerequisites

- Python 3.12+
- A PensionPro API key and username

## Installation

Install from [PyPI](https://pypi.org/project/pension-pro-mcp/):

```bash
pip install pension-pro-mcp
```

Or run directly with [uvx](https://docs.astral.sh/uv/) (no install required):

```bash
uvx pension-pro-mcp
```

## Configuration

Set the following environment variables:

```bash
export PENSION_PRO_API_KEY=your_api_key
export PENSION_PRO_USERNAME=your_username
```

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "pension-pro": {
      "command": "uvx",
      "args": ["pension-pro-mcp"],
      "env": {
        "PENSION_PRO_API_KEY": "your_api_key",
        "PENSION_PRO_USERNAME": "your_username"
      }
    }
  }
}
```

### Claude Code

Add to your project's `.mcp.json`:

```json
{
  "mcpServers": {
    "pension-pro": {
      "command": "uvx",
      "args": ["pension-pro-mcp"],
      "env": {
        "PENSION_PRO_API_KEY": "your_api_key",
        "PENSION_PRO_USERNAME": "your_username"
      }
    }
  }
}
```

## Available Tools

| Tool | Description |
|------|-------------|
| `search_plans` | Search and filter plans by name, status, type, or client |
| `get_plan_details` | Get plan with contacts, cycles, services, investments, fees |
| `get_plan_projects` | Get projects for a plan with task completion summaries |
| `search_projects` | Search and filter projects by status, type, or plan |
| `get_project_details` | Get project with task groups, tasks, participants, notes |
| `get_task_details` | Get a single task with state, assignment, and notes |
| `complete_task` | Mark a task as complete |
| `uncomplete_task` | Revert a task to incomplete |
| `reassign_task` | Reassign a task to a different employee |
| `create_project_from_template` | Create a new project from a template |
| `search_clients` | Search and filter clients by company name |
| `get_client_details` | Get client with plans and notes |
| `search_contacts` | Search and filter contacts by name or client |
| `search_todos` | Search and filter to-dos |
| `get_todo` | Get a to-do with its comments |
| `create_todo` | Create a new to-do linked to an entity |
| `update_todo` | Update a to-do's details |
| `add_note` | Add a note to a plan, project, task, or contact |
| `get_notes` | Get notes for an entity |

## Development

```bash
git clone https://github.com/douglaslinsmeyer/pension-pro-mcp.git
cd pension-pro-mcp
pip install -e ".[dev]"
pytest
```

## License

MIT
