@withpica/mcp-server 2.1.0

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.
Files changed (226) hide show
  1. package/README.md +305 -0
  2. package/dist/config.d.ts +34 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +33 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +34 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/pica-sdk.d.ts +1162 -0
  11. package/dist/pica-sdk.d.ts.map +1 -0
  12. package/dist/pica-sdk.js +1371 -0
  13. package/dist/pica-sdk.js.map +1 -0
  14. package/dist/prompts/index.d.ts +78 -0
  15. package/dist/prompts/index.d.ts.map +1 -0
  16. package/dist/prompts/index.js +513 -0
  17. package/dist/prompts/index.js.map +1 -0
  18. package/dist/resources/index.d.ts +64 -0
  19. package/dist/resources/index.d.ts.map +1 -0
  20. package/dist/resources/index.js +310 -0
  21. package/dist/resources/index.js.map +1 -0
  22. package/dist/resources/llms-primer.d.ts +2 -0
  23. package/dist/resources/llms-primer.d.ts.map +1 -0
  24. package/dist/resources/llms-primer.js +67 -0
  25. package/dist/resources/llms-primer.js.map +1 -0
  26. package/dist/server.d.ts +27 -0
  27. package/dist/server.d.ts.map +1 -0
  28. package/dist/server.js +140 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/tools/agreement-types.d.ts +37 -0
  31. package/dist/tools/agreement-types.d.ts.map +1 -0
  32. package/dist/tools/agreement-types.js +579 -0
  33. package/dist/tools/agreement-types.js.map +1 -0
  34. package/dist/tools/agreements.d.ts +21 -0
  35. package/dist/tools/agreements.d.ts.map +1 -0
  36. package/dist/tools/agreements.js +328 -0
  37. package/dist/tools/agreements.js.map +1 -0
  38. package/dist/tools/analytics.d.ts +20 -0
  39. package/dist/tools/analytics.d.ts.map +1 -0
  40. package/dist/tools/analytics.js +126 -0
  41. package/dist/tools/analytics.js.map +1 -0
  42. package/dist/tools/assets.d.ts +23 -0
  43. package/dist/tools/assets.d.ts.map +1 -0
  44. package/dist/tools/assets.js +220 -0
  45. package/dist/tools/assets.js.map +1 -0
  46. package/dist/tools/audio-files.d.ts +21 -0
  47. package/dist/tools/audio-files.d.ts.map +1 -0
  48. package/dist/tools/audio-files.js +358 -0
  49. package/dist/tools/audio-files.js.map +1 -0
  50. package/dist/tools/bulk.d.ts +16 -0
  51. package/dist/tools/bulk.d.ts.map +1 -0
  52. package/dist/tools/bulk.js +82 -0
  53. package/dist/tools/bulk.js.map +1 -0
  54. package/dist/tools/calendar.d.ts +15 -0
  55. package/dist/tools/calendar.d.ts.map +1 -0
  56. package/dist/tools/calendar.js +69 -0
  57. package/dist/tools/calendar.js.map +1 -0
  58. package/dist/tools/collaborators.d.ts +17 -0
  59. package/dist/tools/collaborators.d.ts.map +1 -0
  60. package/dist/tools/collaborators.js +133 -0
  61. package/dist/tools/collaborators.js.map +1 -0
  62. package/dist/tools/comparisons.d.ts +22 -0
  63. package/dist/tools/comparisons.d.ts.map +1 -0
  64. package/dist/tools/comparisons.js +86 -0
  65. package/dist/tools/comparisons.js.map +1 -0
  66. package/dist/tools/credits.d.ts +17 -0
  67. package/dist/tools/credits.d.ts.map +1 -0
  68. package/dist/tools/credits.js +136 -0
  69. package/dist/tools/credits.js.map +1 -0
  70. package/dist/tools/dashboard.d.ts +20 -0
  71. package/dist/tools/dashboard.d.ts.map +1 -0
  72. package/dist/tools/dashboard.js +156 -0
  73. package/dist/tools/dashboard.js.map +1 -0
  74. package/dist/tools/directory.d.ts +15 -0
  75. package/dist/tools/directory.d.ts.map +1 -0
  76. package/dist/tools/directory.js +108 -0
  77. package/dist/tools/directory.js.map +1 -0
  78. package/dist/tools/disputes.d.ts +18 -0
  79. package/dist/tools/disputes.d.ts.map +1 -0
  80. package/dist/tools/disputes.js +66 -0
  81. package/dist/tools/disputes.js.map +1 -0
  82. package/dist/tools/documents.d.ts +15 -0
  83. package/dist/tools/documents.d.ts.map +1 -0
  84. package/dist/tools/documents.js +38 -0
  85. package/dist/tools/documents.js.map +1 -0
  86. package/dist/tools/duplicates.d.ts +16 -0
  87. package/dist/tools/duplicates.d.ts.map +1 -0
  88. package/dist/tools/duplicates.js +72 -0
  89. package/dist/tools/duplicates.js.map +1 -0
  90. package/dist/tools/enrichment.d.ts +23 -0
  91. package/dist/tools/enrichment.d.ts.map +1 -0
  92. package/dist/tools/enrichment.js +207 -0
  93. package/dist/tools/enrichment.js.map +1 -0
  94. package/dist/tools/exports.d.ts +19 -0
  95. package/dist/tools/exports.d.ts.map +1 -0
  96. package/dist/tools/exports.js +155 -0
  97. package/dist/tools/exports.js.map +1 -0
  98. package/dist/tools/health.d.ts +17 -0
  99. package/dist/tools/health.d.ts.map +1 -0
  100. package/dist/tools/health.js +69 -0
  101. package/dist/tools/health.js.map +1 -0
  102. package/dist/tools/import-documents.d.ts +21 -0
  103. package/dist/tools/import-documents.d.ts.map +1 -0
  104. package/dist/tools/import-documents.js +191 -0
  105. package/dist/tools/import-documents.js.map +1 -0
  106. package/dist/tools/import.d.ts +29 -0
  107. package/dist/tools/import.d.ts.map +1 -0
  108. package/dist/tools/import.js +404 -0
  109. package/dist/tools/import.js.map +1 -0
  110. package/dist/tools/index.d.ts +48 -0
  111. package/dist/tools/index.d.ts.map +1 -0
  112. package/dist/tools/index.js +394 -0
  113. package/dist/tools/index.js.map +1 -0
  114. package/dist/tools/integrations.d.ts +15 -0
  115. package/dist/tools/integrations.d.ts.map +1 -0
  116. package/dist/tools/integrations.js +102 -0
  117. package/dist/tools/integrations.js.map +1 -0
  118. package/dist/tools/licensing.d.ts +40 -0
  119. package/dist/tools/licensing.d.ts.map +1 -0
  120. package/dist/tools/licensing.js +436 -0
  121. package/dist/tools/licensing.js.map +1 -0
  122. package/dist/tools/memory.d.ts +21 -0
  123. package/dist/tools/memory.d.ts.map +1 -0
  124. package/dist/tools/memory.js +121 -0
  125. package/dist/tools/memory.js.map +1 -0
  126. package/dist/tools/multimedia.d.ts +19 -0
  127. package/dist/tools/multimedia.d.ts.map +1 -0
  128. package/dist/tools/multimedia.js +293 -0
  129. package/dist/tools/multimedia.js.map +1 -0
  130. package/dist/tools/notes.d.ts +21 -0
  131. package/dist/tools/notes.d.ts.map +1 -0
  132. package/dist/tools/notes.js +126 -0
  133. package/dist/tools/notes.js.map +1 -0
  134. package/dist/tools/notifications.d.ts +17 -0
  135. package/dist/tools/notifications.d.ts.map +1 -0
  136. package/dist/tools/notifications.js +117 -0
  137. package/dist/tools/notifications.js.map +1 -0
  138. package/dist/tools/people.d.ts +53 -0
  139. package/dist/tools/people.d.ts.map +1 -0
  140. package/dist/tools/people.js +534 -0
  141. package/dist/tools/people.js.map +1 -0
  142. package/dist/tools/pica-score.d.ts +15 -0
  143. package/dist/tools/pica-score.d.ts.map +1 -0
  144. package/dist/tools/pica-score.js +30 -0
  145. package/dist/tools/pica-score.js.map +1 -0
  146. package/dist/tools/projects.d.ts +19 -0
  147. package/dist/tools/projects.d.ts.map +1 -0
  148. package/dist/tools/projects.js +142 -0
  149. package/dist/tools/projects.js.map +1 -0
  150. package/dist/tools/purchases.d.ts +15 -0
  151. package/dist/tools/purchases.d.ts.map +1 -0
  152. package/dist/tools/purchases.js +65 -0
  153. package/dist/tools/purchases.js.map +1 -0
  154. package/dist/tools/recordings.d.ts +41 -0
  155. package/dist/tools/recordings.d.ts.map +1 -0
  156. package/dist/tools/recordings.js +293 -0
  157. package/dist/tools/recordings.js.map +1 -0
  158. package/dist/tools/registration.d.ts +16 -0
  159. package/dist/tools/registration.d.ts.map +1 -0
  160. package/dist/tools/registration.js +52 -0
  161. package/dist/tools/registration.js.map +1 -0
  162. package/dist/tools/releases.d.ts +18 -0
  163. package/dist/tools/releases.d.ts.map +1 -0
  164. package/dist/tools/releases.js +138 -0
  165. package/dist/tools/releases.js.map +1 -0
  166. package/dist/tools/royalties.d.ts +23 -0
  167. package/dist/tools/royalties.d.ts.map +1 -0
  168. package/dist/tools/royalties.js +263 -0
  169. package/dist/tools/royalties.js.map +1 -0
  170. package/dist/tools/search.d.ts +30 -0
  171. package/dist/tools/search.d.ts.map +1 -0
  172. package/dist/tools/search.js +117 -0
  173. package/dist/tools/search.js.map +1 -0
  174. package/dist/tools/send.d.ts +18 -0
  175. package/dist/tools/send.d.ts.map +1 -0
  176. package/dist/tools/send.js +189 -0
  177. package/dist/tools/send.js.map +1 -0
  178. package/dist/tools/sessions.d.ts +18 -0
  179. package/dist/tools/sessions.d.ts.map +1 -0
  180. package/dist/tools/sessions.js +107 -0
  181. package/dist/tools/sessions.js.map +1 -0
  182. package/dist/tools/settings.d.ts +18 -0
  183. package/dist/tools/settings.d.ts.map +1 -0
  184. package/dist/tools/settings.js +98 -0
  185. package/dist/tools/settings.js.map +1 -0
  186. package/dist/tools/share-links.d.ts +19 -0
  187. package/dist/tools/share-links.d.ts.map +1 -0
  188. package/dist/tools/share-links.js +126 -0
  189. package/dist/tools/share-links.js.map +1 -0
  190. package/dist/tools/split-sheets.d.ts +24 -0
  191. package/dist/tools/split-sheets.d.ts.map +1 -0
  192. package/dist/tools/split-sheets.js +189 -0
  193. package/dist/tools/split-sheets.js.map +1 -0
  194. package/dist/tools/team.d.ts +22 -0
  195. package/dist/tools/team.d.ts.map +1 -0
  196. package/dist/tools/team.js +139 -0
  197. package/dist/tools/team.js.map +1 -0
  198. package/dist/tools/telegram.d.ts +20 -0
  199. package/dist/tools/telegram.d.ts.map +1 -0
  200. package/dist/tools/telegram.js +94 -0
  201. package/dist/tools/telegram.js.map +1 -0
  202. package/dist/tools/uploads.d.ts +17 -0
  203. package/dist/tools/uploads.d.ts.map +1 -0
  204. package/dist/tools/uploads.js +159 -0
  205. package/dist/tools/uploads.js.map +1 -0
  206. package/dist/tools/works.d.ts +53 -0
  207. package/dist/tools/works.d.ts.map +1 -0
  208. package/dist/tools/works.js +517 -0
  209. package/dist/tools/works.js.map +1 -0
  210. package/dist/utils/credit-gate.d.ts +17 -0
  211. package/dist/utils/credit-gate.d.ts.map +1 -0
  212. package/dist/utils/credit-gate.js +111 -0
  213. package/dist/utils/credit-gate.js.map +1 -0
  214. package/dist/utils/errors.d.ts +29 -0
  215. package/dist/utils/errors.d.ts.map +1 -0
  216. package/dist/utils/errors.js +114 -0
  217. package/dist/utils/errors.js.map +1 -0
  218. package/dist/utils/formatting.d.ts +63 -0
  219. package/dist/utils/formatting.d.ts.map +1 -0
  220. package/dist/utils/formatting.js +130 -0
  221. package/dist/utils/formatting.js.map +1 -0
  222. package/dist/utils/mpp.d.ts +78 -0
  223. package/dist/utils/mpp.d.ts.map +1 -0
  224. package/dist/utils/mpp.js +136 -0
  225. package/dist/utils/mpp.js.map +1 -0
  226. package/package.json +44 -0
package/README.md ADDED
@@ -0,0 +1,305 @@
1
+ # PICA MCP Server
2
+
3
+ Model Context Protocol (MCP) server for the PICA Platform. Enables **any MCP-compatible AI assistant** to interact with your PICA music catalog.
4
+
5
+ ## What is MCP?
6
+
7
+ The Model Context Protocol (MCP) is an open standard that enables AI assistants to securely access external data and functionality. With this MCP server, any MCP-compatible AI can interact with your PICA catalog.
8
+
9
+ ## Compatible AI Assistants
10
+
11
+ - **Claude Desktop** - Anthropic's desktop AI assistant
12
+ - **ChatGPT** - OpenAI's assistant (when MCP support is available)
13
+ - **Custom AI tools** - Any application that implements the MCP protocol
14
+ - **Future AI assistants** - As more tools adopt MCP
15
+
16
+ ## Features
17
+
18
+ ### 24 AI-Callable Tools
19
+
20
+ **Works Management (8 tools)**
21
+
22
+ - `pica_works_list` - List musical works
23
+ - `pica_works_get` - Get work details
24
+ - `pica_works_create` - Create new work
25
+ - `pica_works_update` - Update work
26
+ - `pica_works_delete` - Delete work
27
+ - `pica_works_verify` - Verify work
28
+ - `pica_works_search` - Search works
29
+ - `pica_works_bulk_delete` - Delete multiple works
30
+
31
+ **People Management (8 tools)**
32
+
33
+ - `pica_people_list` - List people
34
+ - `pica_people_get` - Get person details
35
+ - `pica_people_create` - Create new person
36
+ - `pica_people_update` - Update person
37
+ - `pica_people_delete` - Delete person
38
+ - `pica_people_search` - Search people
39
+ - `pica_people_enrich_isni` - Enrich from ISNI
40
+ - `pica_people_enrich_musicbrainz` - Enrich from MusicBrainz
41
+
42
+ **Recordings Management (6 tools)**
43
+
44
+ - `pica_recordings_list` - List recordings
45
+ - `pica_recordings_get` - Get recording details
46
+ - `pica_recordings_create` - Create new recording
47
+ - `pica_recordings_update` - Update recording
48
+ - `pica_recordings_delete` - Delete recording
49
+ - `pica_recordings_by_work` - Get recordings of a work
50
+
51
+ **Search & Analytics (2 tools)**
52
+
53
+ - `pica_search_all` - Search across all entities
54
+ - `pica_catalog_stats` - Get catalog statistics
55
+
56
+ ### 4 Data Resources
57
+
58
+ Read-only access to catalog data:
59
+
60
+ - `works://list` - All works
61
+ - `people://list` - All people
62
+ - `recordings://list` - All recordings
63
+ - `catalog://stats` - Catalog statistics
64
+
65
+ ### 4 Workflow Prompts
66
+
67
+ Pre-configured prompts for common tasks:
68
+
69
+ - `analyze-catalog` - Comprehensive catalog analysis
70
+ - `find-duplicates` - Find duplicate entries
71
+ - `enrich-metadata` - Identify enrichment opportunities
72
+ - `verify-works` - Review unverified works
73
+
74
+ ## Installation
75
+
76
+ ### NPM (Recommended)
77
+
78
+ ```bash
79
+ npm install -g @withpica/mcp-server
80
+ ```
81
+
82
+ ### From Source
83
+
84
+ ```bash
85
+ cd mcp-server
86
+ npm install
87
+ npm run build
88
+ npm link
89
+ ```
90
+
91
+ ## Configuration
92
+
93
+ ### Get Your PICA API Key
94
+
95
+ 1. Log into PICA at https://withpica.com
96
+ 2. Go to Settings → API Keys
97
+ 3. Generate a new API key
98
+ 4. Copy the key for use below
99
+
100
+ ### Claude Desktop Setup
101
+
102
+ Add to your Claude Desktop configuration file:
103
+
104
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
105
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
106
+
107
+ ```json
108
+ {
109
+ "mcpServers": {
110
+ "pica": {
111
+ "command": "npx",
112
+ "args": ["-y", "@withpica/mcp-server"],
113
+ "env": {
114
+ "PICA_API_KEY": "your-api-key-here"
115
+ }
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### Other MCP-Compatible AI Assistants
122
+
123
+ The setup process is similar for any MCP-compatible tool:
124
+
125
+ 1. Configure the MCP server command: `npx -y @withpica/mcp-server`
126
+ 2. Set the `PICA_API_KEY` environment variable
127
+ 3. The AI can now access all PICA tools and resources
128
+
129
+ ## Usage Examples
130
+
131
+ ### Example 1: List Your Works
132
+
133
+ **User**: "Show me my musical works"
134
+
135
+ **AI** uses: `pica_works_list`
136
+
137
+ **Result**: List of works with titles, ISWCs, verification status, etc.
138
+
139
+ ### Example 2: Create a Work
140
+
141
+ **User**: "Create a new composition called 'Moonlight Sonata No. 2'"
142
+
143
+ **AI** uses: `pica_works_create` with appropriate parameters
144
+
145
+ **Result**: New work created with generated ID
146
+
147
+ ### Example 3: Analyze Catalog
148
+
149
+ **User**: "Analyze my catalog"
150
+
151
+ **AI** uses: `analyze-catalog` prompt
152
+
153
+ **AI calls**:
154
+
155
+ - `pica_catalog_stats` - Get statistics
156
+ - `pica_works_list` - Review works
157
+ - `pica_people_list` - Review people
158
+
159
+ **Result**: Comprehensive analysis with insights and recommendations
160
+
161
+ ### Example 4: Find Duplicates
162
+
163
+ **User**: "Find duplicate entries"
164
+
165
+ **AI** uses: `find-duplicates` prompt
166
+
167
+ **AI calls**:
168
+
169
+ - `pica_works_list` - Get all works
170
+ - `pica_people_list` - Get all people
171
+
172
+ **Result**: List of potential duplicates with merge recommendations
173
+
174
+ ### Example 5: Enrich Metadata
175
+
176
+ **User**: "Enrich Mozart's profile from ISNI"
177
+
178
+ **AI** uses: `pica_people_enrich_isni` with person ID and ISNI
179
+
180
+ **Result**: Person record updated with enriched data from ISNI
181
+
182
+ ## Use Cases
183
+
184
+ ### For Catalog Managers
185
+
186
+ - "Show me all unverified works"
187
+ - "Find duplicate entries"
188
+ - "List works missing ISWC codes"
189
+ - "Enrich all people from ISNI"
190
+
191
+ ### For Data Analysis
192
+
193
+ - "What's the average duration of my compositions?"
194
+ - "Who are my most prolific composers?"
195
+ - "Which works have the most recordings?"
196
+ - "Show me catalog statistics"
197
+
198
+ ### For Enrichment
199
+
200
+ - "Find all people that could be enriched from MusicBrainz"
201
+ - "Suggest ISNI matches for unverified artists"
202
+ - "Which works are missing metadata?"
203
+
204
+ ### For Bulk Operations
205
+
206
+ - "Create works from this list"
207
+ - "Verify all completed works"
208
+ - "Delete test entries"
209
+
210
+ ## Environment Variables
211
+
212
+ - `PICA_API_KEY` (required) - Your PICA API key
213
+ - `PICA_API_URL` (optional) - API base URL (default: https://withpica.com/api)
214
+ - `DEBUG` (optional) - Enable debug logging (set to 'true' or '1')
215
+
216
+ ## Development
217
+
218
+ ### Build
219
+
220
+ ```bash
221
+ npm run build
222
+ ```
223
+
224
+ ### Development Mode
225
+
226
+ ```bash
227
+ npm run dev
228
+ ```
229
+
230
+ ### Local Testing
231
+
232
+ ```bash
233
+ PICA_API_KEY=your-key npm run dev
234
+ ```
235
+
236
+ ## Troubleshooting
237
+
238
+ ### "PICA_API_KEY environment variable is required"
239
+
240
+ Make sure you've set the API key in your MCP server configuration:
241
+
242
+ ```json
243
+ {
244
+ "env": {
245
+ "PICA_API_KEY": "your-actual-api-key"
246
+ }
247
+ }
248
+ ```
249
+
250
+ ### "Authentication failed"
251
+
252
+ - Verify your API key is correct
253
+ - Check that the API key hasn't been revoked
254
+ - Generate a new API key if needed
255
+
256
+ ### Tools Not Showing Up
257
+
258
+ 1. Restart your AI assistant after configuring the MCP server
259
+ 2. Check the MCP server logs for errors
260
+ 3. Verify the configuration file syntax is correct
261
+
262
+ ### Connection Issues
263
+
264
+ - Ensure you have an internet connection
265
+ - Check that https://withpica.com is accessible
266
+ - Verify no firewall is blocking the connection
267
+
268
+ ## Architecture
269
+
270
+ ```
271
+ MCP Server for PICA
272
+ ├── Protocol Handler (MCP standard)
273
+ ├── Authentication (API key)
274
+ ├── Tools (24 AI-callable functions)
275
+ │ ├── Works Management (8)
276
+ │ ├── People Management (8)
277
+ │ ├── Recordings Management (6)
278
+ │ └── Search & Analytics (2)
279
+ ├── Resources (4 data providers)
280
+ └── Prompts (4 workflows)
281
+ ```
282
+
283
+ ## Security
284
+
285
+ - All requests require a valid PICA API key
286
+ - API keys are transmitted securely over HTTPS
287
+ - Data access is scoped to your organization
288
+ - No data is stored by the MCP server
289
+
290
+ ## Support
291
+
292
+ - **Documentation**: https://docs.withpica.com
293
+ - **Issues**: https://github.com/withpica/pica/issues
294
+ - **Email**: support@withpica.com
295
+
296
+ ## License
297
+
298
+ MIT
299
+
300
+ ## Credits
301
+
302
+ Built with:
303
+
304
+ - [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) - MCP SDK
305
+ - [@withpica/sdk](https://www.npmjs.com/package/@withpica/sdk) - PICA TypeScript SDK
@@ -0,0 +1,34 @@
1
+ /**
2
+ * MCP Server Configuration
3
+ */
4
+ export interface ServerConfig {
5
+ /**
6
+ * PICA API key for authentication
7
+ */
8
+ picaApiKey: string;
9
+ /**
10
+ * PICA API base URL
11
+ */
12
+ picaApiUrl: string;
13
+ /**
14
+ * Server name shown to AI assistants
15
+ */
16
+ serverName: string;
17
+ /**
18
+ * Server version
19
+ */
20
+ version: string;
21
+ /**
22
+ * Enable debug logging
23
+ */
24
+ debug: boolean;
25
+ }
26
+ /**
27
+ * Load configuration from environment variables
28
+ */
29
+ export declare function loadConfig(): ServerConfig;
30
+ /**
31
+ * Validate configuration
32
+ */
33
+ export declare function validateConfig(config: ServerConfig): void;
34
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAkBzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAQzD"}
package/dist/config.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP Server Configuration
3
+ */
4
+ /**
5
+ * Load configuration from environment variables
6
+ */
7
+ export function loadConfig() {
8
+ const picaApiKey = process.env.PICA_API_KEY;
9
+ if (!picaApiKey) {
10
+ throw new Error("PICA_API_KEY environment variable is required.\n" +
11
+ "Please set it to your PICA API key:\n" +
12
+ 'export PICA_API_KEY="your-api-key-here"');
13
+ }
14
+ return {
15
+ picaApiKey,
16
+ picaApiUrl: process.env.PICA_API_URL || "https://withpica.com/api",
17
+ serverName: "pica-mcp-server",
18
+ version: "2.1.0",
19
+ debug: process.env.DEBUG === "true" || process.env.DEBUG === "1",
20
+ };
21
+ }
22
+ /**
23
+ * Validate configuration
24
+ */
25
+ export function validateConfig(config) {
26
+ if (!config.picaApiKey || config.picaApiKey.trim() === "") {
27
+ throw new Error("PICA API key cannot be empty");
28
+ }
29
+ if (!config.picaApiUrl || !config.picaApiUrl.startsWith("http")) {
30
+ throw new Error("Invalid PICA API URL");
31
+ }
32
+ }
33
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6BH;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,kDAAkD;YAChD,uCAAuC;YACvC,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B;QAClE,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG;KACjE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PICA MCP Server
4
+ * Entry point for the Model Context Protocol server
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PICA MCP Server
4
+ * Entry point for the Model Context Protocol server
5
+ */
6
+ import { loadConfig, validateConfig } from "./config.js";
7
+ import { PicaMcpServer } from "./server.js";
8
+ async function main() {
9
+ try {
10
+ // Load and validate configuration
11
+ const config = loadConfig();
12
+ validateConfig(config);
13
+ // Create and start server
14
+ const server = new PicaMcpServer(config);
15
+ await server.start();
16
+ // Handle graceful shutdown
17
+ process.on("SIGINT", async () => {
18
+ console.error("[MCP Server] Shutting down...");
19
+ await server.stop();
20
+ process.exit(0);
21
+ });
22
+ process.on("SIGTERM", async () => {
23
+ console.error("[MCP Server] Shutting down...");
24
+ await server.stop();
25
+ process.exit(0);
26
+ });
27
+ }
28
+ catch (error) {
29
+ console.error("[MCP Server] Fatal error:", error instanceof Error ? error.message : String(error));
30
+ process.exit(1);
31
+ }
32
+ }
33
+ main();
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,2BAA2B,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}