@mseep/csv-editor 1.0.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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +53 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +38 -0
- package/.github/workflows/deploy-docs.yml +62 -0
- package/.github/workflows/publish-github.yml +52 -0
- package/.github/workflows/publish.yml +44 -0
- package/.github/workflows/test.yml +32 -0
- package/.pre-commit-config.yaml +157 -0
- package/ALTERNATIVE_PUBLISHING.md +175 -0
- package/ARCHITECTURE.md +1011 -0
- package/CHANGELOG.md +99 -0
- package/CODE_OF_CONDUCT.md +41 -0
- package/CONTRIBUTING.md +427 -0
- package/Dockerfile +22 -0
- package/LICENSE +21 -0
- package/MCP_CONFIG.md +505 -0
- package/PUBLISHING.md +210 -0
- package/README.md +400 -0
- package/SECURITY.md +61 -0
- package/docs/README.md +41 -0
- package/docs/blog/2019-05-28-first-blog-post.md +12 -0
- package/docs/blog/2019-05-29-long-blog-post.md +44 -0
- package/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- package/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- package/docs/blog/2021-08-26-welcome/index.md +29 -0
- package/docs/blog/authors.yml +25 -0
- package/docs/blog/tags.yml +19 -0
- package/docs/docs/api/overview.md +183 -0
- package/docs/docs/installation.md +252 -0
- package/docs/docs/intro.md +87 -0
- package/docs/docs/tutorial-basics/_category_.json +8 -0
- package/docs/docs/tutorial-basics/congratulations.md +23 -0
- package/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
- package/docs/docs/tutorial-basics/create-a-document.md +57 -0
- package/docs/docs/tutorial-basics/create-a-page.md +43 -0
- package/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
- package/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
- package/docs/docs/tutorial-extras/_category_.json +7 -0
- package/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- package/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
- package/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
- package/docs/docs/tutorial-extras/translate-your-site.md +88 -0
- package/docs/docs/tutorials/quickstart.md +365 -0
- package/docs/docusaurus.config.ts +163 -0
- package/docs/package-lock.json +17493 -0
- package/docs/package.json +48 -0
- package/docs/sidebars.ts +33 -0
- package/docs/src/components/HomepageFeatures/index.tsx +71 -0
- package/docs/src/components/HomepageFeatures/styles.module.css +11 -0
- package/docs/src/css/custom.css +30 -0
- package/docs/src/pages/index.module.css +23 -0
- package/docs/src/pages/index.tsx +44 -0
- package/docs/src/pages/markdown-page.md +7 -0
- package/docs/static/.nojekyll +0 -0
- package/docs/static/img/docusaurus-social-card.jpg +0 -0
- package/docs/static/img/docusaurus.png +0 -0
- package/docs/static/img/favicon.ico +0 -0
- package/docs/static/img/logo.svg +1 -0
- package/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docs/static/img/undraw_docusaurus_react.svg +170 -0
- package/docs/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docs/tsconfig.json +8 -0
- package/examples/README.md +48 -0
- package/examples/auto_save_demo.py +206 -0
- package/examples/auto_save_overwrite.py +201 -0
- package/examples/basic_usage.py +135 -0
- package/examples/demo.py +139 -0
- package/examples/history_demo.py +317 -0
- package/examples/test_default_autosave.py +124 -0
- package/examples/update_consignee_example.py +179 -0
- package/package.json +51 -0
- package/plans/2026-04-19-fastmcp3-migration-plan.md +1045 -0
- package/pyproject.toml +331 -0
- package/requirements-dev.txt +30 -0
- package/requirements.txt +22 -0
- package/scripts/publish.py +67 -0
- package/smithery.yaml +15 -0
- package/specs/2026-04-19-fastmcp3-migration-design.md +243 -0
- package/src/csv_editor/__init__.py +8 -0
- package/src/csv_editor/models/__init__.py +39 -0
- package/src/csv_editor/models/auto_save.py +246 -0
- package/src/csv_editor/models/csv_session.py +468 -0
- package/src/csv_editor/models/data_models.py +244 -0
- package/src/csv_editor/models/history_manager.py +456 -0
- package/src/csv_editor/prompts/__init__.py +0 -0
- package/src/csv_editor/prompts/data_prompts.py +13 -0
- package/src/csv_editor/resources/__init__.py +0 -0
- package/src/csv_editor/resources/csv_resources.py +22 -0
- package/src/csv_editor/server.py +640 -0
- package/src/csv_editor/tools/__init__.py +5 -0
- package/src/csv_editor/tools/analytics.py +700 -0
- package/src/csv_editor/tools/auto_save_operations.py +235 -0
- package/src/csv_editor/tools/data_operations.py +3 -0
- package/src/csv_editor/tools/history_operations.py +315 -0
- package/src/csv_editor/tools/io_operations.py +431 -0
- package/src/csv_editor/tools/transformations.py +663 -0
- package/src/csv_editor/tools/validation.py +822 -0
- package/src/csv_editor/utils/__init__.py +0 -0
- package/src/csv_editor/utils/validators.py +205 -0
- package/tests/README.md +65 -0
- package/tests/__init__.py +7 -0
- package/tests/conftest.py +50 -0
- package/tests/test_auto_save.py +378 -0
- package/tests/test_basic.py +103 -0
- package/tests/test_integration.py +356 -0
- package/tests/test_server_boot.py +50 -0
- package/tests/test_settings.py +184 -0
package/MCP_CONFIG.md
ADDED
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
# MCP Configuration Guide for CSV Editor
|
|
2
|
+
|
|
3
|
+
> **📦 Installation Note**: Install via `pip install git+https://github.com/santoshray02/csv-editor.git` (not available on PyPI due to naming conflicts). See [ALTERNATIVE_PUBLISHING.md](ALTERNATIVE_PUBLISHING.md) for details.
|
|
4
|
+
|
|
5
|
+
This guide provides configuration examples for integrating the CSV Editor MCP server with various AI assistant platforms.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
- [Claude Desktop](#claude-desktop)
|
|
9
|
+
- [Continue (VS Code)](#continue-vs-code)
|
|
10
|
+
- [Cline](#cline)
|
|
11
|
+
- [Windsurf](#windsurf)
|
|
12
|
+
- [Zed Editor](#zed-editor)
|
|
13
|
+
- [Generic MCP Client](#generic-mcp-client)
|
|
14
|
+
- [Environment Variables](#environment-variables)
|
|
15
|
+
- [Troubleshooting](#troubleshooting)
|
|
16
|
+
|
|
17
|
+
## Claude Desktop
|
|
18
|
+
|
|
19
|
+
### macOS Configuration
|
|
20
|
+
Location: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"csv-editor": {
|
|
26
|
+
"command": "uv",
|
|
27
|
+
"args": [
|
|
28
|
+
"tool",
|
|
29
|
+
"run",
|
|
30
|
+
"csv-editor"
|
|
31
|
+
],
|
|
32
|
+
"env": {
|
|
33
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
34
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
35
|
+
"CSV_MAX_SESSIONS": "10"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Windows Configuration
|
|
43
|
+
Location: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"mcpServers": {
|
|
48
|
+
"csv-editor": {
|
|
49
|
+
"command": "uv",
|
|
50
|
+
"args": [
|
|
51
|
+
"tool",
|
|
52
|
+
"run",
|
|
53
|
+
"csv-editor"
|
|
54
|
+
],
|
|
55
|
+
"env": {
|
|
56
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
57
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
58
|
+
"CSV_MAX_SESSIONS": "10"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Linux Configuration
|
|
66
|
+
Location: `~/.config/Claude/claude_desktop_config.json`
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"mcpServers": {
|
|
71
|
+
"csv-editor": {
|
|
72
|
+
"command": "uv",
|
|
73
|
+
"args": [
|
|
74
|
+
"tool",
|
|
75
|
+
"run",
|
|
76
|
+
"csv-editor"
|
|
77
|
+
],
|
|
78
|
+
"env": {
|
|
79
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
80
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
81
|
+
"CSV_MAX_SESSIONS": "10"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Using Python Directly (Alternative)
|
|
89
|
+
If you prefer using Python directly instead of uv:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"mcpServers": {
|
|
94
|
+
"csv-editor": {
|
|
95
|
+
"command": "python",
|
|
96
|
+
"args": [
|
|
97
|
+
"-m",
|
|
98
|
+
"csv_editor.server"
|
|
99
|
+
],
|
|
100
|
+
"env": {
|
|
101
|
+
"PYTHONPATH": "/path/to/csv-editor/src",
|
|
102
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
103
|
+
"CSV_SESSION_TIMEOUT": "60"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Continue (VS Code)
|
|
111
|
+
|
|
112
|
+
### Configuration
|
|
113
|
+
Location: `~/.continue/config.json`
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"models": [
|
|
118
|
+
{
|
|
119
|
+
"title": "Claude 3.5 Sonnet",
|
|
120
|
+
"provider": "anthropic",
|
|
121
|
+
"model": "claude-3-5-sonnet-20241022",
|
|
122
|
+
"apiKey": "YOUR_API_KEY"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"mcpServers": {
|
|
126
|
+
"csv-editor": {
|
|
127
|
+
"command": "uv",
|
|
128
|
+
"args": [
|
|
129
|
+
"tool",
|
|
130
|
+
"run",
|
|
131
|
+
"csv-editor"
|
|
132
|
+
],
|
|
133
|
+
"cwd": "/path/to/csv-editor",
|
|
134
|
+
"env": {
|
|
135
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
136
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
137
|
+
"CSV_MAX_SESSIONS": "10"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"customCommands": [
|
|
142
|
+
{
|
|
143
|
+
"name": "csv-analyze",
|
|
144
|
+
"prompt": "Use the CSV Editor MCP server to analyze the selected CSV file",
|
|
145
|
+
"description": "Analyze CSV data"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "csv-clean",
|
|
149
|
+
"prompt": "Use the CSV Editor MCP server to clean and validate the CSV data",
|
|
150
|
+
"description": "Clean CSV data"
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Cline
|
|
157
|
+
|
|
158
|
+
### Configuration
|
|
159
|
+
Location: VS Code Settings (`.vscode/settings.json` or global settings)
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"cline.mcpServers": {
|
|
164
|
+
"csv-editor": {
|
|
165
|
+
"command": "uv",
|
|
166
|
+
"args": [
|
|
167
|
+
"tool",
|
|
168
|
+
"run",
|
|
169
|
+
"csv-editor"
|
|
170
|
+
],
|
|
171
|
+
"cwd": "/path/to/csv-editor",
|
|
172
|
+
"env": {
|
|
173
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
174
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
175
|
+
"CSV_MAX_SESSIONS": "10",
|
|
176
|
+
"CSV_LOG_LEVEL": "INFO"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"cline.customInstructions": "When working with CSV files, use the csv-editor MCP server for data operations, analysis, and transformations."
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Alternative: Cline Config File
|
|
185
|
+
Location: `~/.cline/config.json`
|
|
186
|
+
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"mcpServers": [
|
|
190
|
+
{
|
|
191
|
+
"name": "csv-editor",
|
|
192
|
+
"command": "uv",
|
|
193
|
+
"args": ["tool", "run", "csv-editor"],
|
|
194
|
+
"cwd": "/path/to/csv-editor",
|
|
195
|
+
"enabled": true,
|
|
196
|
+
"alwaysAllow": [
|
|
197
|
+
"load_csv",
|
|
198
|
+
"get_statistics",
|
|
199
|
+
"export_csv"
|
|
200
|
+
],
|
|
201
|
+
"env": {
|
|
202
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
203
|
+
"CSV_SESSION_TIMEOUT": "60"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Windsurf
|
|
211
|
+
|
|
212
|
+
### Configuration
|
|
213
|
+
Location: `~/.windsurf/config.json` (or in VS Code settings if using Windsurf extension)
|
|
214
|
+
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"mcp": {
|
|
218
|
+
"servers": [
|
|
219
|
+
{
|
|
220
|
+
"name": "csv-editor",
|
|
221
|
+
"command": "uv",
|
|
222
|
+
"args": ["tool", "run", "csv-editor"],
|
|
223
|
+
"cwd": "/path/to/csv-editor",
|
|
224
|
+
"env": {
|
|
225
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
226
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
227
|
+
"CSV_MAX_SESSIONS": "10"
|
|
228
|
+
},
|
|
229
|
+
"capabilities": {
|
|
230
|
+
"tools": true,
|
|
231
|
+
"resources": true,
|
|
232
|
+
"prompts": true
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Alternative: Windsurf VS Code Extension Settings
|
|
241
|
+
If using Windsurf as a VS Code extension, add to `.vscode/settings.json`:
|
|
242
|
+
|
|
243
|
+
```json
|
|
244
|
+
{
|
|
245
|
+
"windsurf.mcpServers": {
|
|
246
|
+
"csv-editor": {
|
|
247
|
+
"command": "uv",
|
|
248
|
+
"args": ["tool", "run", "csv-editor"],
|
|
249
|
+
"cwd": "/path/to/csv-editor",
|
|
250
|
+
"env": {
|
|
251
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
252
|
+
"CSV_SESSION_TIMEOUT": "60"
|
|
253
|
+
},
|
|
254
|
+
"autoStart": true,
|
|
255
|
+
"restartOnFailure": true
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
"windsurf.enableMcp": true
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Zed Editor
|
|
263
|
+
|
|
264
|
+
### Configuration
|
|
265
|
+
Location: `~/.config/zed/settings.json`
|
|
266
|
+
|
|
267
|
+
```json
|
|
268
|
+
{
|
|
269
|
+
"assistant": {
|
|
270
|
+
"default_model": {
|
|
271
|
+
"provider": "anthropic",
|
|
272
|
+
"model": "claude-3-5-sonnet-20241022"
|
|
273
|
+
},
|
|
274
|
+
"mcp": {
|
|
275
|
+
"servers": {
|
|
276
|
+
"csv-editor": {
|
|
277
|
+
"command": "uv",
|
|
278
|
+
"args": [
|
|
279
|
+
"tool",
|
|
280
|
+
"run",
|
|
281
|
+
"csv-editor"
|
|
282
|
+
],
|
|
283
|
+
"cwd": "/path/to/csv-editor",
|
|
284
|
+
"env": {
|
|
285
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
286
|
+
"CSV_SESSION_TIMEOUT": "60",
|
|
287
|
+
"CSV_MAX_SESSIONS": "10"
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
"language_models": {
|
|
294
|
+
"anthropic": {
|
|
295
|
+
"api_key": "YOUR_API_KEY"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Generic MCP Client
|
|
302
|
+
|
|
303
|
+
### Using FastMCP Client Library
|
|
304
|
+
|
|
305
|
+
```python
|
|
306
|
+
from fastmcp import Client
|
|
307
|
+
|
|
308
|
+
config = {
|
|
309
|
+
"mcpServers": {
|
|
310
|
+
"csv-editor": {
|
|
311
|
+
"command": "uv",
|
|
312
|
+
"args": ["tool", "run", "csv-editor"],
|
|
313
|
+
"cwd": "/path/to/csv-editor",
|
|
314
|
+
"env": {
|
|
315
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
316
|
+
"CSV_SESSION_TIMEOUT": "60"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
# Initialize client
|
|
323
|
+
client = Client(config)
|
|
324
|
+
|
|
325
|
+
async def use_csv_editor():
|
|
326
|
+
async with client:
|
|
327
|
+
# Load a CSV file
|
|
328
|
+
result = await client.call_tool(
|
|
329
|
+
"csv-editor_load_csv",
|
|
330
|
+
{
|
|
331
|
+
"file_path": "/path/to/data.csv",
|
|
332
|
+
"encoding": "utf-8"
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
session_id = result["session_id"]
|
|
337
|
+
|
|
338
|
+
# Get statistics
|
|
339
|
+
stats = await client.call_tool(
|
|
340
|
+
"csv-editor_get_statistics",
|
|
341
|
+
{"session_id": session_id}
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
print(stats)
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Using MCP SDK Directly
|
|
348
|
+
|
|
349
|
+
```python
|
|
350
|
+
import mcp
|
|
351
|
+
from mcp.client import ClientSession
|
|
352
|
+
from mcp.client.stdio import StdioServerParameters, stdio_client
|
|
353
|
+
|
|
354
|
+
async def run_csv_editor():
|
|
355
|
+
server_params = StdioServerParameters(
|
|
356
|
+
command="uv",
|
|
357
|
+
args=["tool", "run", "csv-editor"],
|
|
358
|
+
cwd="/path/to/csv-editor",
|
|
359
|
+
env={
|
|
360
|
+
"CSV_MAX_FILE_SIZE": "1024",
|
|
361
|
+
"CSV_SESSION_TIMEOUT": "60"
|
|
362
|
+
}
|
|
363
|
+
)
|
|
364
|
+
|
|
365
|
+
async with stdio_client(server_params) as (read, write):
|
|
366
|
+
async with ClientSession(read, write) as session:
|
|
367
|
+
# Initialize connection
|
|
368
|
+
await session.initialize()
|
|
369
|
+
|
|
370
|
+
# List available tools
|
|
371
|
+
tools = await session.list_tools()
|
|
372
|
+
print("Available tools:", tools)
|
|
373
|
+
|
|
374
|
+
# Call a tool
|
|
375
|
+
result = await session.call_tool(
|
|
376
|
+
"load_csv",
|
|
377
|
+
arguments={
|
|
378
|
+
"file_path": "/path/to/data.csv"
|
|
379
|
+
}
|
|
380
|
+
)
|
|
381
|
+
print("Result:", result)
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Environment Variables
|
|
385
|
+
|
|
386
|
+
All configurations support the following environment variables:
|
|
387
|
+
|
|
388
|
+
| Variable | Default | Description |
|
|
389
|
+
|----------|---------|-------------|
|
|
390
|
+
| `CSV_MAX_FILE_SIZE` | `1024` | Maximum file size in MB |
|
|
391
|
+
| `CSV_SESSION_TIMEOUT` | `60` | Session timeout in minutes |
|
|
392
|
+
| `CSV_MAX_SESSIONS` | `10` | Maximum concurrent sessions |
|
|
393
|
+
| `CSV_LOG_LEVEL` | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
|
394
|
+
| `CSV_TEMP_DIR` | System temp | Directory for temporary files |
|
|
395
|
+
| `CSV_ENABLE_PROFILING` | `false` | Enable performance profiling |
|
|
396
|
+
| `CSV_CACHE_SIZE` | `100` | Maximum cache size in MB |
|
|
397
|
+
|
|
398
|
+
## Installation Methods
|
|
399
|
+
|
|
400
|
+
### Method 1: Using uv (Recommended)
|
|
401
|
+
```bash
|
|
402
|
+
# Install uv if not already installed
|
|
403
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
404
|
+
|
|
405
|
+
# Clone and install
|
|
406
|
+
git clone https://github.com/santoshray02/csv-editor.git
|
|
407
|
+
cd csv-editor
|
|
408
|
+
uv pip install -e .
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Method 2: Using pip
|
|
412
|
+
```bash
|
|
413
|
+
# Clone and install
|
|
414
|
+
git clone https://github.com/santoshray02/csv-editor.git
|
|
415
|
+
cd csv-editor
|
|
416
|
+
pip install -e .
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Method 3: Using pipx (Global Installation)
|
|
420
|
+
```bash
|
|
421
|
+
pipx install git+https://github.com/santoshray02/csv-editor.git
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Verification
|
|
425
|
+
|
|
426
|
+
After configuration, verify the server is working:
|
|
427
|
+
|
|
428
|
+
### 1. Test Direct Execution
|
|
429
|
+
```bash
|
|
430
|
+
# Using uv
|
|
431
|
+
uv tool run csv-editor --help
|
|
432
|
+
|
|
433
|
+
# Or using Python
|
|
434
|
+
python -m csv_editor.server --help
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### 2. Test with MCP Inspector
|
|
438
|
+
```bash
|
|
439
|
+
# Install MCP Inspector
|
|
440
|
+
npm install -g @modelcontextprotocol/inspector
|
|
441
|
+
|
|
442
|
+
# Run inspector
|
|
443
|
+
mcp-inspector uv tool run csv-editor
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### 3. Check in Your Client
|
|
447
|
+
- **Claude Desktop**: Look for "csv-editor" in the MCP servers list
|
|
448
|
+
- **Continue**: Check the "MCP" tab in the Continue panel
|
|
449
|
+
- **Cline**: Verify in the Cline settings or status bar
|
|
450
|
+
- **Windsurf**: Check the Windsurf panel or status bar for MCP connection
|
|
451
|
+
- **Zed**: Check the assistant panel for available tools
|
|
452
|
+
|
|
453
|
+
## Troubleshooting
|
|
454
|
+
|
|
455
|
+
### Common Issues
|
|
456
|
+
|
|
457
|
+
1. **Server not starting**
|
|
458
|
+
- Check the command path is correct
|
|
459
|
+
- Verify Python/uv is in PATH
|
|
460
|
+
- Check file permissions
|
|
461
|
+
|
|
462
|
+
2. **Tools not appearing**
|
|
463
|
+
- Restart the client application
|
|
464
|
+
- Check the configuration file syntax
|
|
465
|
+
- Review client application logs
|
|
466
|
+
|
|
467
|
+
3. **Session timeout issues**
|
|
468
|
+
- Increase `CSV_SESSION_TIMEOUT` value
|
|
469
|
+
- Check system resources
|
|
470
|
+
|
|
471
|
+
4. **File size limitations**
|
|
472
|
+
- Adjust `CSV_MAX_FILE_SIZE` environment variable
|
|
473
|
+
- Consider chunking large files
|
|
474
|
+
|
|
475
|
+
### Debug Mode
|
|
476
|
+
|
|
477
|
+
Enable debug logging by setting:
|
|
478
|
+
```json
|
|
479
|
+
{
|
|
480
|
+
"env": {
|
|
481
|
+
"CSV_LOG_LEVEL": "DEBUG"
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### Log Locations
|
|
487
|
+
|
|
488
|
+
- **Claude Desktop**: `~/Library/Logs/Claude/` (macOS), `%APPDATA%\Claude\logs\` (Windows)
|
|
489
|
+
- **Continue**: VS Code Output panel → Continue
|
|
490
|
+
- **Cline**: VS Code Output panel → Cline
|
|
491
|
+
- **Windsurf**: `~/.windsurf/logs/` or VS Code Output panel → Windsurf
|
|
492
|
+
- **Zed**: `~/.local/state/zed/logs/` (Linux/macOS)
|
|
493
|
+
|
|
494
|
+
## Security Considerations
|
|
495
|
+
|
|
496
|
+
1. **File Access**: The server has access to the file system. Configure appropriate permissions.
|
|
497
|
+
2. **Network Access**: URL loading is enabled. Consider firewall rules if needed.
|
|
498
|
+
3. **Resource Limits**: Set appropriate limits via environment variables.
|
|
499
|
+
4. **Sensitive Data**: Be cautious when processing files containing sensitive information.
|
|
500
|
+
|
|
501
|
+
## Support
|
|
502
|
+
|
|
503
|
+
For issues or questions:
|
|
504
|
+
- GitHub Issues: https://github.com/santoshray02/csv-editor/issues
|
|
505
|
+
- Documentation: https://github.com/santoshray02/csv-editor#readme
|
package/PUBLISHING.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Publishing Guide for CSV Editor
|
|
2
|
+
|
|
3
|
+
This guide covers publishing your CSV Editor package to PyPI and other repositories for maximum visibility.
|
|
4
|
+
|
|
5
|
+
## 🎯 Publishing Strategy
|
|
6
|
+
|
|
7
|
+
### 1. PyPI (Python Package Index) - Primary
|
|
8
|
+
- **Main distribution channel** for Python packages
|
|
9
|
+
- **Easy installation** via `pip install csv-editor`
|
|
10
|
+
- **Automatic dependency management**
|
|
11
|
+
|
|
12
|
+
### 2. GitHub Packages
|
|
13
|
+
- **Backup distribution** and enterprise use
|
|
14
|
+
- **Integration** with GitHub ecosystem
|
|
15
|
+
|
|
16
|
+
### 3. Conda-Forge (Future)
|
|
17
|
+
- **Scientific Python community**
|
|
18
|
+
- **Conda package manager**
|
|
19
|
+
|
|
20
|
+
## 🚀 Quick Start Publishing
|
|
21
|
+
|
|
22
|
+
### Prerequisites
|
|
23
|
+
```bash
|
|
24
|
+
# Install publishing tools (using uv)
|
|
25
|
+
uv add --dev twine
|
|
26
|
+
|
|
27
|
+
# Create PyPI account at https://pypi.org/account/register/
|
|
28
|
+
# Create API token at https://pypi.org/manage/account/token/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Method 1: Automated Publishing (Recommended)
|
|
32
|
+
|
|
33
|
+
1. **Push to GitHub** and create a release:
|
|
34
|
+
```bash
|
|
35
|
+
git add .
|
|
36
|
+
git commit -m "Prepare v1.0.0 release"
|
|
37
|
+
git push origin main
|
|
38
|
+
git tag v1.0.0
|
|
39
|
+
git push origin v1.0.0
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
2. **Create GitHub Release**:
|
|
43
|
+
- Go to https://github.com/santoshray02/csv-editor/releases
|
|
44
|
+
- Click "Create a new release"
|
|
45
|
+
- Tag: `v1.0.0`
|
|
46
|
+
- Title: `CSV Editor v1.0.0`
|
|
47
|
+
- Description: Copy from CHANGELOG.md
|
|
48
|
+
- Publish release
|
|
49
|
+
|
|
50
|
+
3. **Automatic publishing** via GitHub Actions will handle the rest!
|
|
51
|
+
|
|
52
|
+
### Method 2: Manual Publishing
|
|
53
|
+
|
|
54
|
+
1. **Build and test**:
|
|
55
|
+
```bash
|
|
56
|
+
uv run python scripts/publish.py
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. **Test publish** (optional):
|
|
60
|
+
```bash
|
|
61
|
+
uv run twine upload --repository testpypi dist/*
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
3. **Publish to PyPI**:
|
|
65
|
+
```bash
|
|
66
|
+
uv run twine upload dist/*
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 📋 Pre-Publishing Checklist
|
|
70
|
+
|
|
71
|
+
- [ ] Version number updated in `pyproject.toml`
|
|
72
|
+
- [ ] CHANGELOG.md updated with new version
|
|
73
|
+
- [ ] All tests passing
|
|
74
|
+
- [ ] Documentation updated
|
|
75
|
+
- [ ] README.md has clear installation instructions
|
|
76
|
+
- [ ] License file present
|
|
77
|
+
- [ ] GitHub repository is public
|
|
78
|
+
- [ ] PyPI account created and API token configured
|
|
79
|
+
|
|
80
|
+
## 🔧 PyPI Configuration
|
|
81
|
+
|
|
82
|
+
### 1. Create `.pypirc` file:
|
|
83
|
+
```ini
|
|
84
|
+
[distutils]
|
|
85
|
+
index-servers = pypi testpypi
|
|
86
|
+
|
|
87
|
+
[pypi]
|
|
88
|
+
username = __token__
|
|
89
|
+
password = pypi-your-api-token-here
|
|
90
|
+
|
|
91
|
+
[testpypi]
|
|
92
|
+
repository = https://test.pypi.org/legacy/
|
|
93
|
+
username = __token__
|
|
94
|
+
password = pypi-your-test-api-token-here
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 2. Or use environment variables:
|
|
98
|
+
```bash
|
|
99
|
+
export TWINE_USERNAME=__token__
|
|
100
|
+
export TWINE_PASSWORD=pypi-your-api-token-here
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 🌟 Promotion Strategy
|
|
104
|
+
|
|
105
|
+
### 1. Python Community
|
|
106
|
+
- **Reddit**: r/Python, r/MachineLearning, r/datascience
|
|
107
|
+
- **Hacker News**: Submit to Show HN
|
|
108
|
+
- **Python Weekly**: Submit for newsletter inclusion
|
|
109
|
+
- **Real Python**: Consider guest article
|
|
110
|
+
|
|
111
|
+
### 2. MCP Community
|
|
112
|
+
- **Model Context Protocol Discord**
|
|
113
|
+
- **Anthropic Community Forums**
|
|
114
|
+
- **FastMCP GitHub discussions**
|
|
115
|
+
|
|
116
|
+
### 3. Data Science Community
|
|
117
|
+
- **Kaggle**: Share in datasets/discussions
|
|
118
|
+
- **Data Science subreddits**
|
|
119
|
+
- **Pandas community**
|
|
120
|
+
- **Jupyter community**
|
|
121
|
+
|
|
122
|
+
### 4. Developer Platforms
|
|
123
|
+
- **Product Hunt**: Launch your package
|
|
124
|
+
- **Dev.to**: Write tutorial articles
|
|
125
|
+
- **Medium**: Technical deep-dive articles
|
|
126
|
+
- **YouTube**: Create demo videos
|
|
127
|
+
|
|
128
|
+
### 5. Social Media
|
|
129
|
+
- **Twitter/X**: Use hashtags #Python #DataScience #MCP #OpenSource
|
|
130
|
+
- **LinkedIn**: Professional network posts
|
|
131
|
+
- **Mastodon**: Python and tech communities
|
|
132
|
+
|
|
133
|
+
## 📊 Package Analytics
|
|
134
|
+
|
|
135
|
+
### Track your package performance:
|
|
136
|
+
- **PyPI Stats**: https://pypistats.org/packages/csv-editor
|
|
137
|
+
- **GitHub Insights**: Repository analytics
|
|
138
|
+
- **Download counts**: Monitor adoption
|
|
139
|
+
|
|
140
|
+
### Key metrics to watch:
|
|
141
|
+
- Daily/monthly downloads
|
|
142
|
+
- GitHub stars and forks
|
|
143
|
+
- Issues and discussions
|
|
144
|
+
- Community contributions
|
|
145
|
+
|
|
146
|
+
## 🔄 Maintenance
|
|
147
|
+
|
|
148
|
+
### Regular updates:
|
|
149
|
+
1. **Security updates**: Keep dependencies current
|
|
150
|
+
2. **Bug fixes**: Address user issues promptly
|
|
151
|
+
3. **Feature releases**: Based on community feedback
|
|
152
|
+
4. **Documentation**: Keep examples and guides updated
|
|
153
|
+
|
|
154
|
+
### Version management:
|
|
155
|
+
- **Patch releases** (1.0.1): Bug fixes
|
|
156
|
+
- **Minor releases** (1.1.0): New features
|
|
157
|
+
- **Major releases** (2.0.0): Breaking changes
|
|
158
|
+
|
|
159
|
+
## 📈 Success Metrics
|
|
160
|
+
|
|
161
|
+
### Short-term goals (1-3 months):
|
|
162
|
+
- [ ] 100+ PyPI downloads
|
|
163
|
+
- [ ] 50+ GitHub stars
|
|
164
|
+
- [ ] 5+ community issues/discussions
|
|
165
|
+
- [ ] Featured in at least one newsletter/blog
|
|
166
|
+
|
|
167
|
+
### Medium-term goals (3-6 months):
|
|
168
|
+
- [ ] 1000+ PyPI downloads
|
|
169
|
+
- [ ] 100+ GitHub stars
|
|
170
|
+
- [ ] 10+ contributors
|
|
171
|
+
- [ ] Conda-forge package
|
|
172
|
+
- [ ] Documentation website
|
|
173
|
+
|
|
174
|
+
### Long-term goals (6+ months):
|
|
175
|
+
- [ ] 10,000+ PyPI downloads
|
|
176
|
+
- [ ] 500+ GitHub stars
|
|
177
|
+
- [ ] Active community
|
|
178
|
+
- [ ] Integration with major AI platforms
|
|
179
|
+
- [ ] Conference talks/presentations
|
|
180
|
+
|
|
181
|
+
## 🆘 Troubleshooting
|
|
182
|
+
|
|
183
|
+
### Common issues:
|
|
184
|
+
1. **Upload failed**: Check API token and package name availability
|
|
185
|
+
2. **Build errors**: Ensure all dependencies in pyproject.toml
|
|
186
|
+
3. **Import errors**: Check package structure and __init__.py files
|
|
187
|
+
4. **Version conflicts**: Ensure version is higher than existing
|
|
188
|
+
|
|
189
|
+
### Getting help:
|
|
190
|
+
- **PyPI Support**: https://pypi.org/help/
|
|
191
|
+
- **GitHub Issues**: Create issues for package-specific problems
|
|
192
|
+
- **Python Packaging Guide**: https://packaging.python.org/
|
|
193
|
+
|
|
194
|
+
## 🎉 Post-Publishing
|
|
195
|
+
|
|
196
|
+
After successful publishing:
|
|
197
|
+
|
|
198
|
+
1. **Update README** with installation instructions
|
|
199
|
+
2. **Create announcement** on social media
|
|
200
|
+
3. **Submit to package directories**:
|
|
201
|
+
- Awesome Python lists
|
|
202
|
+
- Python Package Index alternatives
|
|
203
|
+
- Curated package collections
|
|
204
|
+
|
|
205
|
+
4. **Engage with community**:
|
|
206
|
+
- Respond to issues promptly
|
|
207
|
+
- Welcome contributions
|
|
208
|
+
- Maintain active development
|
|
209
|
+
|
|
210
|
+
Good luck with your package launch! 🚀
|