@@ -6,76 +6,40 @@ A Model Context Protocol (MCP) server providing comprehensive tools for interact
66
77## Features
88
9- - ** Comprehensive Account Management** : List, search, and retrieve account information across all Firefly III account types
10- - ** Transaction Operations** : Full CRUD operations for transactions with support for withdrawals, deposits, and transfers
11- - ** Bulk Operations** : Efficient bulk transaction creation and updates for high-volume workflows
12- - ** Budget Management** : Complete budget analysis with spending tracking, allocation, and summary reporting
13- - ** Docker Support** : Production-ready Docker images with multi-platform support (amd64/arm64)
14- - ** Type Safety** : Full type hints and Pydantic validation throughout the codebase
15- - ** Async Operations** : Non-blocking HTTP operations for optimal performance
9+ - ** Account Management** : List, search, and retrieve account information across all Firefly III account types
10+ - ** Transaction Operations** : Full CRUD operations for withdrawals, deposits, and transfers
11+ - ** Bulk Operations** : Efficient bulk transaction creation and updates
12+ - ** Budget Management** : Budget analysis with spending tracking and allocation
13+ - ** Docker Support** : Production-ready multi-platform images (amd64/arm64)
1614
17- ## Quick Start
18-
19- ### Prerequisites
15+ ## Prerequisites
2016
2117- Access to a Firefly III instance with a [ Personal Access Token] ( https://docs.firefly-iii.org/how-to/firefly-iii/features/api/#personal-access-token )
22- - For local installation: Python 3.14+ and [ uv] ( https://github.com/astral-sh/uv ) package manager
18+ - For local installation: Python 3.14+ and [ uv] ( https://github.com/astral-sh/uv )
2319- For Docker: Docker installed on your system
2420
25- ### Option 1: Docker (Recommended)
21+ ## Adding to Claude
2622
27- ``` bash
28- docker pull ghcr.io/radcod3/lampyrid:latest
29- ```
23+ ### Option 1: Local Setup (Claude Desktop)
3024
31- ### Option 2: Local Installation
25+ Clone and install LamPyrid:
3226
3327``` bash
3428git clone https://github.com/RadCod3/LamPyrid.git
3529cd LamPyrid
3630uv sync
3731```
3832
39- ## Adding to Claude
40-
41- LamPyrid can be used with Claude in two ways:
42-
43- ### Local Setup (Claude Desktop)
44-
45- For running LamPyrid locally on your machine with Claude Desktop.
46-
47- ** Using Docker:**
48-
4933Add to your Claude Desktop configuration file:
5034- macOS: ` ~/Library/Application Support/Claude/claude_desktop_config.json `
5135- Windows: ` %APPDATA%\Claude\claude_desktop_config.json `
5236
53- ``` json
54- {
55- "mcpServers" : {
56- "lampyrid" : {
57- "command" : " docker" ,
58- "args" : [
59- " run" , " --rm" , " -i" ,
60- " -e" , " MCP_TRANSPORT=stdio" ,
61- " -e" , " FIREFLY_BASE_URL=https://your-firefly-instance.com" ,
62- " -e" , " FIREFLY_TOKEN=your-personal-access-token" ,
63- " ghcr.io/radcod3/lampyrid:latest"
64- ]
65- }
66- }
67- }
68- ```
69-
70- ** Using Local Installation:**
71-
7237``` json
7338{
7439 "mcpServers" : {
7540 "lampyrid" : {
7641 "command" : " uv" ,
77- "args" : [" run" , " lampyrid" ],
78- "cwd" : " /path/to/LamPyrid" ,
42+ "args" : [" run" , " --project" , " /path/to/LamPyrid" , " lampyrid" ],
7943 "env" : {
8044 "FIREFLY_BASE_URL" : " https://your-firefly-instance.com" ,
8145 "FIREFLY_TOKEN" : " your-personal-access-token"
@@ -85,9 +49,9 @@ Add to your Claude Desktop configuration file:
8549}
8650```
8751
88- After adding the configuration, restart Claude Desktop. LamPyrid tools will be available for account management, transaction operations, and budget analysis .
52+ Restart Claude Desktop to enable LamPyrid tools .
8953
90- ### Remote Setup (Claude Connector)
54+ ### Option 2: Remote Setup (Claude Connector)
9155
9256When hosted on a remote server, LamPyrid can be added as a ** Claude Connector** , allowing you to use it across all Claude interfaces including ** Claude mobile apps** (iOS/Android), Claude web, and Claude Desktop.
9357
@@ -100,26 +64,32 @@ services:
10064 image : ghcr.io/radcod3/lampyrid:latest
10165 ports :
10266 - " 3000:3000"
103- environment :
104- FIREFLY_BASE_URL : https://your-firefly-instance.com
105- FIREFLY_TOKEN : your-api-token
106- MCP_TRANSPORT : http
67+ env_file :
68+ - .env
10769 restart : unless-stopped
10870` ` `
10971
72+ ` ` ` bash
73+ # .env
74+ FIREFLY_BASE_URL=https://your-firefly-instance.com
75+ FIREFLY_TOKEN=your-api-token
76+ MCP_TRANSPORT=http
77+ ```
78+
79+ ``` bash
80+ docker compose up -d
81+ ```
82+
11083** 2. Add as Claude Connector:**
11184
112- 1. Go to [Claude Settings](https://claude.ai/settings/integrations)
113- 2. Navigate to **Integrations** > **Add More**
114- 3. Enter your server URL: ` https://your-server-url.com`
115- 4. LamPyrid is now available on all your Claude devices!
85+ 1 . Go to Claude ** Settings** > ** Connectors** > ** Add connector**
86+ 2 . Enter your server URL: ` https://your-server-url.com/mcp `
87+ 3 . LamPyrid is now available on all your Claude devices!
11688
117- > **Security Note**: If hosting on a public server, it is strongly recommended to enable authentication. LamPyrid currently supports Google OAuth - see the [Authentication Setup ](#google-oauth- authentication-optional) section for configuration .
89+ > ** Security Note** : If hosting on a public server, it is strongly recommended to enable authentication. LamPyrid currently supports Google OAuth - see the [ Authentication] ( #authentication-optional ) section below .
11890
11991## Configuration
12092
121- LamPyrid uses environment variables for configuration :
122-
12393### Required
12494
12595| Variable | Description |
@@ -136,9 +106,9 @@ LamPyrid uses environment variables for configuration:
136106| ` MCP_PORT ` | ` 3000 ` | Port binding for HTTP/SSE transports |
137107| ` LOGGING_LEVEL ` | ` INFO ` | Logging verbosity: DEBUG/INFO/WARNING/ERROR/CRITICAL |
138108
139- # ## Google OAuth Authentication (Optional)
109+ ### Authentication (Optional)
140110
141- Recommended for remote server deployments to secure access to your financial data . Currently, Google OAuth is the only supported authentication provider .
111+ Recommended for remote deployments. Currently supports Google OAuth.
142112
143113| Variable | Description |
144114| ----------| -------------|
@@ -156,7 +126,7 @@ Recommended for remote server deployments to secure access to your financial dat
1561266 . Add authorized redirect URI: ` {SERVER_BASE_URL}/auth/callback `
1571277 . Copy the Client ID and Client Secret to your environment
158128
159- # ## OAuth Token Persistence (Optional)
129+ ### Token Persistence (Optional)
160130
161131Enable persistent authentication across server restarts:
162132
@@ -166,7 +136,7 @@ Enable persistent authentication across server restarts:
166136| ` OAUTH_STORAGE_ENCRYPTION_KEY ` | Fernet key (generate: ` python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" ` ) |
167137| ` OAUTH_STORAGE_PATH ` | Storage path (default: ` /app/data/oauth ` for Docker) |
168138
169- # # Available MCP Tools
139+ ## Available Tools
170140
171141### Account Management (3 tools)
172142| Tool | Description |
@@ -198,7 +168,7 @@ Enable persistent authentication across server restarts:
198168| ` get_budget_summary ` | Comprehensive summary of all budgets with spending |
199169| ` get_available_budget ` | Check available budget amounts for periods |
200170
201- # # Docker Deployment
171+ ## Docker
202172
203173### Available Images
204174
@@ -210,53 +180,13 @@ Enable persistent authentication across server restarts:
210180
211181All images support ` linux/amd64 ` and ` linux/arm64 ` platforms.
212182
213- # ## Using Docker Compose
214-
215- The repository includes a `docker-compose.yml` for easy deployment :
216-
217- ` ` ` yaml
218- services:
219- lampyrid:
220- image: ghcr.io/radcod3/lampyrid:latest
221- ports:
222- - "3000:3000"
223- env_file:
224- - .env
225- volumes:
226- # Persist OAuth tokens across container restarts
227- - ./data/oauth:/app/data/oauth
228- restart: unless-stopped
229- ` ` `
230-
231- Create a `.env` file with your configuration :
232-
233183``` bash
234- # Required
235- FIREFLY_BASE_URL=https://your-firefly-instance.com
236- FIREFLY_TOKEN=your-api-token
237-
238- # Optional - Server settings
239- MCP_TRANSPORT=http
240- LOGGING_LEVEL=INFO
241-
242- # Optional - For remote authentication
243- GOOGLE_CLIENT_ID=your-client-id
244- GOOGLE_CLIENT_SECRET=your-client-secret
245- SERVER_BASE_URL=https://your-domain.com
246-
247- # Optional - For persistent OAuth tokens
248- JWT_SIGNING_KEY=your-jwt-key
249- OAUTH_STORAGE_ENCRYPTION_KEY=your-encryption-key
250- OAUTH_STORAGE_PATH=/app/data/oauth
184+ docker pull ghcr.io/radcod3/lampyrid:latest
251185```
252186
253- Then start the server :
254-
255- ` ` ` bash
256- docker compose up -d
257- ` ` `
187+ ### Volume Permissions
258188
259- **Note on Volume Permissions**: If you encounter permission errors with OAuth storage, set the correct ownership:
189+ If you encounter permission errors with OAuth storage, set the correct ownership:
260190
261191``` bash
262192mkdir -p ./data/oauth
@@ -269,10 +199,8 @@ sudo chown -R 65532:65532 ./data/oauth
269199# Install dependencies
270200uv sync
271201
272- # Format code
202+ # Format and lint
273203uv run ruff format
274-
275- # Lint code
276204uv run ruff check --fix
277205
278206# Run the server
@@ -282,22 +210,6 @@ uv run lampyrid
282210uv run pytest
283211```
284212
285- # ## Project Structure
286-
287- ```
288- LamPyrid/
289- ├── src/lampyrid/
290- │ ├── server.py # FastMCP server initialization
291- │ ├── config.py # Environment configuration
292- │ ├── clients/firefly.py # HTTP client for Firefly III API
293- │ ├── models/ # Pydantic models
294- │ ├── services/ # Business logic layer
295- │ └── tools/ # MCP tool definitions
296- ├── tests/ # Unit and integration tests
297- ├── Dockerfile # Docker image definition
298- └── docker-compose.yml # Docker Compose configuration
299- ```
300-
301213## Contributing
302214
303215Contributions are welcome! Please:
@@ -309,8 +221,8 @@ Contributions are welcome! Please:
309221
310222## License
311223
312- This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) - see the [LICENSE](LICENSE) file for details .
224+ GNU Affero General Public License v3.0 (AGPL-3.0) - see [ LICENSE] ( LICENSE ) .
313225
314226## Support
315227
316- For issues and feature requests, please use the [GitHub issue tracker](https://github.com/RadCod3/LamPyrid/issues).
228+ For issues and feature requests, use the [ GitHub issue tracker] ( https://github.com/RadCod3/LamPyrid/issues ) .
0 commit comments