mcp-server-things 1.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,36 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Eric Bowman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ ATTRIBUTION NOTICES:
26
+
27
+ This software is built using the FastMCP framework, which is licensed under
28
+ the Apache License 2.0. For full FastMCP license terms, see:
29
+ https://github.com/jlowin/fastmcp/blob/main/LICENSE
30
+
31
+ This software integrates with Things 3 by Cultured Code using official
32
+ AppleScript APIs. Things 3 is a trademark of Cultured Code GmbH & Co. KG.
33
+ This project is not affiliated with or endorsed by Cultured Code.
34
+
35
+ AppleScript is a technology by Apple Inc. This project uses AppleScript
36
+ in accordance with Apple's terms and conditions for automation.
@@ -0,0 +1,436 @@
1
+ Metadata-Version: 2.1
2
+ Name: mcp-server-things
3
+ Version: 1.1.1
4
+ Summary: Model Context Protocol server for Things 3 task management integration
5
+ Home-page: https://github.com/ebowman/mcp-server-things
6
+ Author: MCP Developer
7
+ Author-email: MCP Developer <developer@example.com>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/ebowman/mcp-server-things
10
+ Project-URL: Bug Reports, https://github.com/ebowman/mcp-server-things/issues
11
+ Project-URL: Source, https://github.com/ebowman/mcp-server-things
12
+ Keywords: mcp,things3,applescript,task-management,productivity
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Office/Business :: Scheduling
23
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
24
+ Requires-Python: >=3.8
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: fastmcp>=2.0.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: pydantic-settings>=2.0.0
30
+ Requires-Dist: asyncio-mqtt>=0.11.0
31
+ Requires-Dist: things.py>=0.0.15
32
+ Provides-Extra: config
33
+ Requires-Dist: python-dotenv>=0.19.0; extra == "config"
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
36
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
37
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
38
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
39
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
40
+ Requires-Dist: black>=23.0.0; extra == "dev"
41
+ Requires-Dist: isort>=5.0.0; extra == "dev"
42
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
43
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
44
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
45
+ Requires-Dist: python-dotenv>=0.19.0; extra == "dev"
46
+ Provides-Extra: docs
47
+ Requires-Dist: sphinx>=5.0.0; extra == "docs"
48
+ Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
49
+ Requires-Dist: myst-parser>=1.0.0; extra == "docs"
50
+ Provides-Extra: test
51
+ Requires-Dist: pytest>=7.0.0; extra == "test"
52
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
53
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
54
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
55
+ Requires-Dist: coverage>=7.0.0; extra == "test"
56
+
57
+ # Things 3 MCP Server
58
+
59
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
60
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
61
+ [![macOS](https://img.shields.io/badge/macOS-12+-green.svg)](https://www.apple.com/macos/)
62
+
63
+ A Model Context Protocol (MCP) server that connects Claude and other AI assistants to Things 3 for natural language task management.
64
+
65
+ ## Installation
66
+
67
+ ### From Source
68
+
69
+ 1. Clone the repository:
70
+ ```bash
71
+ git clone https://github.com/ebowman/mcp-server-things.git
72
+ cd mcp-server-things
73
+ ```
74
+
75
+ 2. Create and activate a virtual environment:
76
+ ```bash
77
+ python3 -m venv venv
78
+ source venv/bin/activate # On macOS/Linux
79
+ ```
80
+
81
+ 3. Install dependencies:
82
+ ```bash
83
+ pip install -r requirements.txt
84
+ ```
85
+
86
+ 4. Install in development mode:
87
+ ```bash
88
+ pip install -e .
89
+ ```
90
+
91
+ ### Claude Desktop Configuration
92
+
93
+ Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):
94
+
95
+ ```json
96
+ {
97
+ "mcpServers": {
98
+ "things": {
99
+ "command": "/path/to/mcp-server-things/venv/bin/python",
100
+ "args": ["-m", "things_mcp"],
101
+ "env": {
102
+ "PYTHONPATH": "/path/to/mcp-server-things/src",
103
+ "THINGS_MCP_LOG_LEVEL": "INFO",
104
+ "THINGS_MCP_APPLESCRIPT_TIMEOUT": "30"
105
+ }
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ **Note:**
112
+ - Replace `/path/to/mcp-server-things` with your actual installation path
113
+ - Use the full path to the Python executable in your virtual environment
114
+ - See Configuration section below for environment variable options
115
+
116
+ ![Demo showing Claude creating tasks in Things 3](demo.gif)
117
+ *Creating tasks with natural language through Claude*
118
+
119
+ ## 📚 Documentation
120
+
121
+ - **[User Examples](docs/USER_EXAMPLES.md)** - Rich examples of how to use Things 3 with AI assistants
122
+ - **[Architecture Overview](docs/ARCHITECTURE.md)** - Technical design and implementation details
123
+ - **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions
124
+
125
+ ## Features
126
+
127
+ ### Core Todo Operations
128
+ - **Create**: Add todos with full metadata (tags, deadlines, projects, notes, reminders)
129
+ - **Read**: Get todos by ID, project, or built-in lists (Today, Inbox, Upcoming, etc.)
130
+ - **Update**: Modify existing todos with partial updates
131
+ - **Delete**: Remove todos safely
132
+ - **Search**: Find todos by title, notes, or advanced filters
133
+
134
+ ### Project & Area Management
135
+ - Get all projects and areas with optional task inclusion
136
+ - Create new projects with initial todos
137
+ - Update project metadata and status
138
+ - Organize todos within project hierarchies
139
+
140
+ ### Built-in List Access
141
+ - **Inbox**: Capture new items
142
+ - **Today**: Items scheduled for today
143
+ - **Upcoming**: Future scheduled items
144
+ - **Anytime**: Items without specific dates
145
+ - **Someday**: Items for future consideration
146
+ - **Logbook**: Completed items history
147
+ - **Trash**: Deleted items
148
+
149
+ ### Advanced Features
150
+ - **Reminder Support**: Create todos with specific reminder times (e.g., "today@14:30")
151
+ - Uses hybrid approach: AppleScript for regular todos, URL scheme for reminders
152
+ - This works around AppleScript API limitation (cannot set reminder times)
153
+ - **Tag Management**: Full tag support with AI creation control
154
+ - **Date-Range Queries**: Get todos due/activating within specific timeframes
155
+ - **URL Schemes**: Native Things 3 URL scheme integration
156
+ - **Health Monitoring**: System health checks and queue status monitoring
157
+ - **Error Handling**: Robust error handling with configurable retries
158
+ - **Logging**: Structured logging with configurable levels
159
+ - **Concurrency Support**: Multi-client safe operation with operation queuing
160
+ - **Input Validation**: Configurable limits for titles, notes, and tags
161
+
162
+ ## Requirements
163
+
164
+ - **macOS**: This server requires macOS (tested on macOS 12+)
165
+ - **Things 3**: Things 3 must be installed and accessible
166
+ - **Python**: Python 3.8 or higher
167
+ - **Permissions**: AppleScript permissions for Things 3 access
168
+
169
+ ## Quick Start
170
+
171
+ Once installed, Claude (or other MCP clients) can automatically discover and use all available tools. No additional setup required.
172
+
173
+ ## Configuration
174
+
175
+ The server uses environment variables for configuration. You can set these variables in three ways:
176
+ 1. System environment variables
177
+ 2. A `.env` file (automatically loaded from the current directory)
178
+ 3. A custom `.env` file specified with `--env-file`
179
+
180
+ ### Using the .env File
181
+
182
+ 1. **Review the example configuration:**
183
+ ```bash
184
+ cat .env.example
185
+ ```
186
+
187
+ 2. **Create your own .env file:**
188
+ ```bash
189
+ cp .env.example .env
190
+ # Edit .env to customize settings
191
+ ```
192
+
193
+ 3. **Or use a custom location:**
194
+ ```bash
195
+ cp .env.example ~/my-things-config.env
196
+ python -m things_mcp --env-file ~/my-things-config.env
197
+ ```
198
+
199
+ ### Key Configuration Options
200
+
201
+ ```bash
202
+ # Server identification
203
+ THINGS_MCP_SERVER_NAME=things3-mcp-server
204
+ THINGS_MCP_SERVER_VERSION=1.0.0
205
+
206
+ # AppleScript execution
207
+ THINGS_MCP_APPLESCRIPT_TIMEOUT=30.0 # Timeout in seconds (1-300)
208
+ THINGS_MCP_APPLESCRIPT_RETRY_COUNT=3 # Retry attempts (0-10)
209
+
210
+ # Tag management - Control AI tag creation
211
+ THINGS_MCP_AI_CAN_CREATE_TAGS=false # false = AI can only use existing tags
212
+ THINGS_MCP_TAG_VALIDATION_CASE_SENSITIVE=false
213
+
214
+ # Logging
215
+ THINGS_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
216
+ THINGS_MCP_LOG_FILE_PATH=/path/to/file.log # Optional: log to file instead of console
217
+
218
+ # Validation limits
219
+ THINGS_MCP_MAX_TITLE_LENGTH=500
220
+ THINGS_MCP_MAX_NOTES_LENGTH=10000
221
+ THINGS_MCP_MAX_TAGS_PER_ITEM=20
222
+ THINGS_MCP_SEARCH_RESULTS_LIMIT=100
223
+ ```
224
+
225
+ ### Command Line Options
226
+
227
+ The server supports several command-line options:
228
+
229
+ ```bash
230
+ # Start with debug logging
231
+ python -m things_mcp --debug
232
+
233
+ # Use a custom .env file
234
+ python -m things_mcp --env-file ~/my-config.env
235
+
236
+ # Check system health
237
+ python -m things_mcp --health-check
238
+
239
+ # Test AppleScript connectivity
240
+ python -m things_mcp --test-applescript
241
+
242
+ # Show version
243
+ python -m things_mcp --version
244
+
245
+ # Customize timeout and retry settings
246
+ python -m things_mcp --timeout 60 --retry-count 5
247
+ ```
248
+
249
+ ### Claude Desktop Environment Variables
250
+
251
+ You can set environment variables directly in your Claude Desktop configuration:
252
+
253
+ ```json
254
+ {
255
+ "mcpServers": {
256
+ "things": {
257
+ "env": {
258
+ "THINGS_MCP_LOG_LEVEL": "DEBUG",
259
+ "THINGS_MCP_AI_CAN_CREATE_TAGS": "true",
260
+ "THINGS_MCP_APPLESCRIPT_TIMEOUT": "60"
261
+ }
262
+ }
263
+ }
264
+ }
265
+ ```
266
+
267
+ ## Available MCP Tools
268
+
269
+ ### Todo Management
270
+ - `get_todos(project_uuid?, include_items?)` - List todos
271
+ - `add_todo(title, ...)` - Create new todo with optional reminder time
272
+ - `update_todo(id, ...)` - Update existing todo
273
+ - `get_todo_by_id(todo_id)` - Get specific todo
274
+ - `delete_todo(todo_id)` - Delete todo
275
+
276
+ ### Project Management
277
+ - `get_projects(include_items?)` - List projects
278
+ - `add_project(title, ...)` - Create new project
279
+ - `update_project(id, ...)` - Update existing project
280
+
281
+ ### Area Management
282
+ - `get_areas(include_items?)` - List areas
283
+
284
+ ### List Access
285
+ - `get_inbox()` - Get Inbox todos
286
+ - `get_today()` - Get Today's todos
287
+ - `get_upcoming()` - Get upcoming todos
288
+ - `get_anytime()` - Get Anytime todos
289
+ - `get_someday()` - Get Someday todos
290
+ - `get_logbook(limit?, period?)` - Get completed todos
291
+ - `get_trash()` - Get trashed todos
292
+
293
+ ### Date-Range Queries
294
+ - `get_due_in_days(days)` - Get todos due within specified days
295
+ - `get_activating_in_days(days)` - Get todos activating within days
296
+ - `get_upcoming_in_days(days)` - Get todos due or activating within days
297
+
298
+ ### Search & Tags
299
+ - `search_todos(query)` - Basic search
300
+ - `search_advanced(...)` - Advanced search with filters
301
+ - `get_tags(include_items?)` - List tags
302
+ - `create_tag(name)` - Create a new tag
303
+ - `get_tagged_items(tag)` - Get items with specific tag
304
+ - `add_tags(todo_id, tags)` - Add tags to a todo
305
+ - `remove_tags(todo_id, tags)` - Remove tags from a todo
306
+ - `get_recent(period)` - Get recently created items
307
+
308
+ ### Bulk Operations
309
+ - `move_record(record_id, to_parent_uuid)` - Move single record
310
+ - `bulk_move_records(record_ids, to_parent_uuid)` - Move multiple records
311
+
312
+ ### System & Utilities
313
+ - `health_check()` - Check server and Things 3 status
314
+ - `queue_status()` - Check operation queue status and statistics
315
+ - `get_server_capabilities()` - Get server features and configuration
316
+ - `get_usage_recommendations()` - Get usage tips and best practices
317
+ - `context_stats()` - Get context-aware response statistics
318
+
319
+
320
+ ## Troubleshooting
321
+
322
+ ### Common Issues
323
+
324
+ #### Permission Denied Errors
325
+ ```bash
326
+ # Grant AppleScript permissions to your terminal/IDE
327
+ # System Preferences > Security & Privacy > Privacy > Automation
328
+ # Enable access for your terminal application to control Things 3
329
+ ```
330
+
331
+ #### Things 3 Not Found
332
+ ```bash
333
+ # Verify Things 3 is installed and running
334
+ python -m things_mcp.main --health-check
335
+
336
+ # Check if Things 3 is in Applications folder
337
+ ls /Applications/ | grep -i things
338
+ ```
339
+
340
+ #### Connection Timeouts
341
+ ```bash
342
+ # Increase timeout value via environment variable
343
+ export THINGS_MCP_APPLESCRIPT_TIMEOUT=60
344
+
345
+ # Or in your .env file
346
+ THINGS_MCP_APPLESCRIPT_TIMEOUT=60
347
+ ```
348
+
349
+ ### Debug Mode
350
+
351
+ ```bash
352
+ # Enable debug logging
353
+ python -m things_mcp.main --debug
354
+
355
+ # Check logs
356
+ tail -f things_mcp.log
357
+ ```
358
+
359
+ ### Health Diagnostics
360
+
361
+ ```bash
362
+ # Comprehensive health check
363
+ python -m things_mcp.main --health-check
364
+
365
+ # Test specific components
366
+ python -m things_mcp.main --test-applescript
367
+ ```
368
+
369
+ ## Performance
370
+
371
+ - **Startup Time**: Less than 2 seconds
372
+ - **Response Time**: Less than 500ms for most operations
373
+ - **Memory Usage**: 15MB baseline, 50MB under concurrent load
374
+ - **Concurrent Requests**: Serialized write operations to prevent conflicts
375
+ - **Throughput**: Multiple operations per second depending on complexity
376
+ - **Queue Processing**: Less than 50ms latency for operation enqueuing
377
+
378
+ ## Security
379
+
380
+ - No network access required (local AppleScript only)
381
+ - No data stored outside of Things 3
382
+ - Minimal system permissions needed
383
+ - Secure AppleScript execution with timeouts
384
+ - Input validation on all parameters
385
+
386
+ ## Contributing
387
+
388
+ Contributions are welcome! Please follow these guidelines:
389
+
390
+ - Set up a virtual environment and install dependencies
391
+ - Follow existing code style and patterns
392
+ - Add tests for new features
393
+ - Submit pull requests with clear descriptions
394
+
395
+ ## Documentation
396
+
397
+ - [Troubleshooting Guide](docs/TROUBLESHOOTING.md) - Common issues and solutions
398
+ - [Development Roadmap](docs/ROADMAP.md) - Implementation status and missing features
399
+
400
+ ## License
401
+
402
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
403
+
404
+ ## Support
405
+
406
+ - **Issues**: [GitHub Issues](https://github.com/ebowman/mcp-server-things/issues)
407
+ - **Discussions**: [GitHub Discussions](https://github.com/ebowman/mcp-server-things/discussions)
408
+ - **Email**: ebowman@boboco.ie
409
+
410
+ ## Roadmap
411
+
412
+ ### Phase 1: Core Stability (Current)
413
+ - Complete MCP tool implementation (Completed)
414
+ - Robust error handling and logging (Completed)
415
+ - Comprehensive testing suite (Completed)
416
+ - Documentation and examples (Completed)
417
+
418
+ ### Phase 2: Enhanced Features
419
+ - Multi-client concurrency support with operation queuing (Completed)
420
+ - Configurable tag creation policies (Completed)
421
+ - Reminder support with datetime scheduling (Completed)
422
+ - Date-range query tools (Completed)
423
+ - Bulk move operations (Completed)
424
+ - Real-time sync with Things 3 changes (Planned)
425
+ - Advanced natural language processing (Planned)
426
+ - Integration with calendar and email (Planned)
427
+
428
+ ### Phase 3: Advanced Integration
429
+ - Multi-user support (Planned)
430
+ - API rate limiting (Planned)
431
+ - Webhook support (Planned)
432
+ - Analytics and reporting (Planned)
433
+
434
+ ---
435
+
436
+ Built for the Things 3 and MCP community.
@@ -0,0 +1,33 @@
1
+ things_mcp/__init__.py,sha256=gHhZDr_TTQaXVYfMeJAbYOMemblJ57ncWvIG3ZYvWHE,21
2
+ things_mcp/__main__.py,sha256=TogYe_r8IPGhC6FbO32m3iAIxshf6i0v779US0d3rRE,127
3
+ things_mcp/config.py,sha256=tOnmVptrfM6_wvY33cFl4QOwy8yIlahfDw1bUi51T6o,17830
4
+ things_mcp/context_manager.py,sha256=4eL3MnEgLoZM6c5ckVFe103sFyxnPa0jt8EOds7naWw,34629
5
+ things_mcp/hybrid_tools.py,sha256=Fh9Et27RQkRAmWqDfbA_IBevopX6XUohlvKNnDIzWMs,44110
6
+ things_mcp/locale_aware_dates.py,sha256=X5wvupUOferQNkb0ckYjNt9rXt2ODCBv9Wdfv696QX4,19913
7
+ things_mcp/main.py,sha256=19LsfoeNEejtcAcIVCEO_8JU7_78UetaqolxPQL3C74,10818
8
+ things_mcp/move_operations.py,sha256=jf2OA6X9nnvGujhRyK8XLlRX5huGR7DckbTsyuR8QrI,20460
9
+ things_mcp/operation_queue.py,sha256=VG_dmWM7l4gI6XJO1z5j8WzaI58eKL6DrMjzsE6cj1I,16531
10
+ things_mcp/pure_applescript_scheduler.py,sha256=b3LIsFpMPkw8BNbu9NUKNwhMoYoEQQHWtfygGcND5_g,53912
11
+ things_mcp/reliable_scheduling.py,sha256=K1xEvA5is9SazVDpbOH4e-0g4--zxQcWfp2RQkCcEe4,13835
12
+ things_mcp/response_optimizer.py,sha256=xuUpH4VdcCQ9kFn9luY4WkHPG3LYY5I9GgtmS5HXng8,13285
13
+ things_mcp/server.py,sha256=9FrejHua0eKkI1jPp4xa0ZJ0b3--AbxMlqnRArIWkwk,77689
14
+ things_mcp/server_outdated.py,sha256=IM5eUftfHl8XJyFpZUJMtthKs8_t_0UqkzZJ_cJXcg8,17614
15
+ things_mcp/shared_cache.py,sha256=WONXiZt-eX74D0489fyZ4qlW36xSLm_vAXKuY3Ar4ws,11451
16
+ things_mcp/tools.py,sha256=oIGwIq2JEhXlEAGTONUbT8GZUAUfyscOVNhgTE3Agag,156861
17
+ things_mcp/models/__init__.py,sha256=pxdsNP9RD1DXZEo64QOlfujR1_3mkxucJI6DbdzYoIs,1290
18
+ things_mcp/models/response_models.py,sha256=Kj2yB1PeFHfQQDLXkokbDRIO73DS9ApBaK8cmDwCVJg,924
19
+ things_mcp/models/things_models.py,sha256=YpuUWYI4FVR7qXmPRj0_ozdTg-2InqLnn2xMCTZl3H4,15271
20
+ things_mcp/services/__init__.py,sha256=ljQg-mkXZxdWvFNqNZ8aoP3lRMV9YqEJPWap5-5Rubc,398
21
+ things_mcp/services/applescript_manager.py,sha256=MJbjK7dVoWthFEfOzhTOXZuwX0qu7sGwckcgO3sSEA4,77688
22
+ things_mcp/services/cache_manager.py,sha256=E_dI5ozQudWkIrVvd61_9W2weJiXS8_NHWiBroBR1Hg,2989
23
+ things_mcp/services/error_handler.py,sha256=1VaCTXTnn62wHNJoTVpQHkXwJr2DnYZH0zoUSKKtPb8,15126
24
+ things_mcp/services/tag_service.py,sha256=4IYFOdS5596WrNwVLlN70wb_Aun-mYE9WIzmF2T60ks,12098
25
+ things_mcp/services/validation_service.py,sha256=FCez8Krdl2Zb7vIZ2VvYaxbG-XaImx_ZEc-qmB0pZMU,11763
26
+ things_mcp/utils/__init__.py,sha256=oUfNgFd9Kqfm98UO7ysYmceiVlNOJ7WFZ1i-6qmBKs4,37
27
+ things_mcp/utils/applescript_utils.py,sha256=K4Xm1HQ_5goMaBrnYDENkUg5_IfkExPSQH3btjt4Hck,1423
28
+ mcp_server_things-1.1.1.dist-info/LICENSE,sha256=3bOmaeO4SzDvfbdo_yZxJS-vi_WLTKYg7NFV5TYHCSw,1633
29
+ mcp_server_things-1.1.1.dist-info/METADATA,sha256=h7aJy3a4mfQfT9TKt2DE_L0cgwrPvWHNcgCEd81BZ0M,13961
30
+ mcp_server_things-1.1.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
31
+ mcp_server_things-1.1.1.dist-info/entry_points.txt,sha256=_gDhDOgLpmn99VtCU7IAPTpejKYe5nTDqrcNZxMaWYc,60
32
+ mcp_server_things-1.1.1.dist-info/top_level.txt,sha256=5jxKoULVumsxtvdUJL_Jr3BxHffP0FtbLHqmrgReH0M,11
33
+ mcp_server_things-1.1.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.45.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ things-mcp = src.things_mcp.__main__:main
@@ -0,0 +1 @@
1
+ things_mcp
things_mcp/__init__.py ADDED
@@ -0,0 +1 @@
1
+ # Things 3 MCP Server
things_mcp/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ """Entry point for running the Things MCP server as a module."""
2
+
3
+ from .main import main
4
+
5
+ if __name__ == "__main__":
6
+ main()