skippy-mcp 0.2.0__tar.gz

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,4 @@
1
+ .venv/
2
+ dist/
3
+ __pycache__/
4
+ *.egg-info/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sanvio Labs
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.
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.5
2
+ Name: skippy-mcp
3
+ Version: 0.2.0
4
+ Summary: Use Skippy from Claude, Cursor, Kiro and any other MCP client. Private beta.
5
+ Project-URL: Homepage, https://heyskippy.ai
6
+ Author: Sanvio Labs
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Keywords: ai-assistant,mcp,model-context-protocol,skippy
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: httpx>=0.27.0
17
+ Requires-Dist: mcp<2,>=1.0.0
18
+ Description-Content-Type: text/markdown
19
+
20
+ # Skippy MCP
21
+
22
+ Use Skippy from Claude, Cursor, Kiro, VS Code, or any other MCP client. Your notes, workspace, skills, agents and research live in Skippy, so what you save in one tool is there in the next.
23
+
24
+ **This is a private beta.** Your Skippy account has to be added to it first. If you haven't been invited, ask the Skippy team.
25
+
26
+ ## Setup
27
+
28
+ You need two things: a Skippy account in the beta, and [uv](https://docs.astral.sh/uv/getting-started/installation/) installed. Setup takes about five minutes.
29
+
30
+ ### 1. Create an API key
31
+
32
+ In Skippy, open **Settings > API Keys** and click **Create new key**. Copy it straight away: Skippy shows it once.
33
+
34
+ ### 2. Save the key
35
+
36
+ ```bash
37
+ uvx skippy-mcp auth
38
+ ```
39
+
40
+ Paste the key when it asks. It saves the key to `~/.skippy/token`, readable only by you, then checks it with Skippy. You should see `✓ Key works.`
41
+
42
+ ### 3. Add Skippy to your client
43
+
44
+ Every client runs the same command, `uvx skippy-mcp`. Only where you put it changes.
45
+
46
+ **Claude Code**
47
+
48
+ ```bash
49
+ claude mcp add skippy -- uvx skippy-mcp
50
+ ```
51
+
52
+ **Claude Desktop, Cursor, Kiro and Windsurf** take this block:
53
+
54
+ ```json
55
+ {
56
+ "mcpServers": {
57
+ "skippy": {
58
+ "command": "uvx",
59
+ "args": ["skippy-mcp"]
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ | Client | Where it goes |
66
+ |---|---|
67
+ | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\Claude\claude_desktop_config.json` on Windows |
68
+ | Cursor | `~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` for one |
69
+ | Kiro | `~/.kiro/settings/mcp.json` for every project, or `.kiro/settings/mcp.json` for one |
70
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` |
71
+
72
+ **VS Code** uses a slightly different shape, in `.vscode/mcp.json`:
73
+
74
+ ```json
75
+ {
76
+ "servers": {
77
+ "skippy": {
78
+ "type": "stdio",
79
+ "command": "uvx",
80
+ "args": ["skippy-mcp"]
81
+ }
82
+ }
83
+ }
84
+ ```
85
+
86
+ Restart the client. Ask it to run `skippy_status`, and you should see your name and plan.
87
+
88
+ ## What you can do
89
+
90
+ | Ask for | Tools |
91
+ |---|---|
92
+ | A conversation with Skippy, with its memory of you | `skippy_send`, `skippy_context` |
93
+ | Research | `skippy_web_search`, `skippy_deep_research` |
94
+ | Your files in Skippy | `skippy_workspace_read`, `_write`, `_list`, `_delete` |
95
+ | Notes and a clipboard that follow you between tools | `skippy_save_note`, `skippy_view_notes`, `skippy_clip`, `skippy_paste` |
96
+ | A searchable log of decisions and milestones | `skippy_journal`, `skippy_journal_search` |
97
+ | Saved workflows | `skippy_create_skill`, `skippy_run_skill`, `skippy_list_skills` |
98
+ | Your agents | `skippy_list_agents`, `skippy_invoke_agent`, `skippy_create_agent` |
99
+ | Scheduled jobs | `skippy_schedule_job`, `skippy_list_jobs`, `skippy_cancel_job` |
100
+ | Topics Skippy watches for you | `skippy_radar_add_topic`, `skippy_radar_scan` |
101
+ | Static sites | `skippy_publish_site`, `skippy_share_site`, `skippy_list_sites` |
102
+ | Your usage | `skippy_usage` |
103
+
104
+ Deep research draws on the same monthly research credits as the Skippy app.
105
+
106
+ Four tools run on your own machine instead: `read_local_file`, `list_local_files`, `git_status` and `git_diff`. They can only see the folder your client started the server in. What they read goes to your AI client, the same as any file you open in it, and none of it goes to Skippy.
107
+
108
+ ## Troubleshooting
109
+
110
+ **"The Skippy MCP server is in private beta."** Your key works, but your account isn't in the beta yet. Ask the Skippy team to add you.
111
+
112
+ **"This key is invalid or disabled."** The key was revoked, disabled, or mistyped. Create a new one under Settings > API Keys and run `uvx skippy-mcp auth` again.
113
+
114
+ **Your client says it can't find `uvx`.** Desktop apps often start with a shorter `PATH` than your terminal. Run `which uvx` in a terminal and put that full path in `"command"` instead of `uvx`.
115
+
116
+ **To check your setup at any time**, run `uvx skippy-mcp verify`.
117
+
118
+ ## Folder-based scoping (optional)
119
+
120
+ If you keep work for different clients or projects in different folders, Skippy can file workspace writes and journal entries under that name automatically. Create `~/.skippy/client_map.json`:
121
+
122
+ ```json
123
+ { "/work/northwind": "northwind", "/work/contoso": "contoso" }
124
+ ```
125
+
126
+ When the server starts in a folder whose path contains one of those fragments, `notes.md` is saved as `clients/northwind/notes.md`. The `SKIPPY_CLIENT_MAP` environment variable takes the same JSON and overrides the file. With neither, nothing is scoped.
127
+
128
+ ## Feedback
129
+
130
+ Something broken or missing? Ask your client to run `skippy_submit_feedback`. It goes straight to the team building Skippy.
@@ -0,0 +1,111 @@
1
+ # Skippy MCP
2
+
3
+ Use Skippy from Claude, Cursor, Kiro, VS Code, or any other MCP client. Your notes, workspace, skills, agents and research live in Skippy, so what you save in one tool is there in the next.
4
+
5
+ **This is a private beta.** Your Skippy account has to be added to it first. If you haven't been invited, ask the Skippy team.
6
+
7
+ ## Setup
8
+
9
+ You need two things: a Skippy account in the beta, and [uv](https://docs.astral.sh/uv/getting-started/installation/) installed. Setup takes about five minutes.
10
+
11
+ ### 1. Create an API key
12
+
13
+ In Skippy, open **Settings > API Keys** and click **Create new key**. Copy it straight away: Skippy shows it once.
14
+
15
+ ### 2. Save the key
16
+
17
+ ```bash
18
+ uvx skippy-mcp auth
19
+ ```
20
+
21
+ Paste the key when it asks. It saves the key to `~/.skippy/token`, readable only by you, then checks it with Skippy. You should see `✓ Key works.`
22
+
23
+ ### 3. Add Skippy to your client
24
+
25
+ Every client runs the same command, `uvx skippy-mcp`. Only where you put it changes.
26
+
27
+ **Claude Code**
28
+
29
+ ```bash
30
+ claude mcp add skippy -- uvx skippy-mcp
31
+ ```
32
+
33
+ **Claude Desktop, Cursor, Kiro and Windsurf** take this block:
34
+
35
+ ```json
36
+ {
37
+ "mcpServers": {
38
+ "skippy": {
39
+ "command": "uvx",
40
+ "args": ["skippy-mcp"]
41
+ }
42
+ }
43
+ }
44
+ ```
45
+
46
+ | Client | Where it goes |
47
+ |---|---|
48
+ | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\Claude\claude_desktop_config.json` on Windows |
49
+ | Cursor | `~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` for one |
50
+ | Kiro | `~/.kiro/settings/mcp.json` for every project, or `.kiro/settings/mcp.json` for one |
51
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` |
52
+
53
+ **VS Code** uses a slightly different shape, in `.vscode/mcp.json`:
54
+
55
+ ```json
56
+ {
57
+ "servers": {
58
+ "skippy": {
59
+ "type": "stdio",
60
+ "command": "uvx",
61
+ "args": ["skippy-mcp"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ Restart the client. Ask it to run `skippy_status`, and you should see your name and plan.
68
+
69
+ ## What you can do
70
+
71
+ | Ask for | Tools |
72
+ |---|---|
73
+ | A conversation with Skippy, with its memory of you | `skippy_send`, `skippy_context` |
74
+ | Research | `skippy_web_search`, `skippy_deep_research` |
75
+ | Your files in Skippy | `skippy_workspace_read`, `_write`, `_list`, `_delete` |
76
+ | Notes and a clipboard that follow you between tools | `skippy_save_note`, `skippy_view_notes`, `skippy_clip`, `skippy_paste` |
77
+ | A searchable log of decisions and milestones | `skippy_journal`, `skippy_journal_search` |
78
+ | Saved workflows | `skippy_create_skill`, `skippy_run_skill`, `skippy_list_skills` |
79
+ | Your agents | `skippy_list_agents`, `skippy_invoke_agent`, `skippy_create_agent` |
80
+ | Scheduled jobs | `skippy_schedule_job`, `skippy_list_jobs`, `skippy_cancel_job` |
81
+ | Topics Skippy watches for you | `skippy_radar_add_topic`, `skippy_radar_scan` |
82
+ | Static sites | `skippy_publish_site`, `skippy_share_site`, `skippy_list_sites` |
83
+ | Your usage | `skippy_usage` |
84
+
85
+ Deep research draws on the same monthly research credits as the Skippy app.
86
+
87
+ Four tools run on your own machine instead: `read_local_file`, `list_local_files`, `git_status` and `git_diff`. They can only see the folder your client started the server in. What they read goes to your AI client, the same as any file you open in it, and none of it goes to Skippy.
88
+
89
+ ## Troubleshooting
90
+
91
+ **"The Skippy MCP server is in private beta."** Your key works, but your account isn't in the beta yet. Ask the Skippy team to add you.
92
+
93
+ **"This key is invalid or disabled."** The key was revoked, disabled, or mistyped. Create a new one under Settings > API Keys and run `uvx skippy-mcp auth` again.
94
+
95
+ **Your client says it can't find `uvx`.** Desktop apps often start with a shorter `PATH` than your terminal. Run `which uvx` in a terminal and put that full path in `"command"` instead of `uvx`.
96
+
97
+ **To check your setup at any time**, run `uvx skippy-mcp verify`.
98
+
99
+ ## Folder-based scoping (optional)
100
+
101
+ If you keep work for different clients or projects in different folders, Skippy can file workspace writes and journal entries under that name automatically. Create `~/.skippy/client_map.json`:
102
+
103
+ ```json
104
+ { "/work/northwind": "northwind", "/work/contoso": "contoso" }
105
+ ```
106
+
107
+ When the server starts in a folder whose path contains one of those fragments, `notes.md` is saved as `clients/northwind/notes.md`. The `SKIPPY_CLIENT_MAP` environment variable takes the same JSON and overrides the file. With neither, nothing is scoped.
108
+
109
+ ## Feedback
110
+
111
+ Something broken or missing? Ask your client to run `skippy_submit_feedback`. It goes straight to the team building Skippy.
@@ -0,0 +1,68 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "skippy-mcp"
7
+ version = "0.2.0"
8
+ description = "Use Skippy from Claude, Cursor, Kiro and any other MCP client. Private beta."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [{ name = "Sanvio Labs" }]
14
+ keywords = ["mcp", "skippy", "model-context-protocol", "ai-assistant"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Environment :: Console",
18
+ "Intended Audience :: Developers",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3",
21
+ ]
22
+ dependencies = [
23
+ # `<2` is load-bearing, not caution. mcp 2.0 renamed FastMCP to MCPServer and
24
+ # moved `mcp.server.fastmcp`, so `server.py` does not import under it. The dev
25
+ # environment resolves through uv.lock and never saw this; a published package
26
+ # ignores the lock, so `uvx skippy-mcp serve` picked up 2.x and traced back on
27
+ # the one command the tool exists for. Measured 2026-09-19 against a wheel
28
+ # installed into an empty venv.
29
+ "mcp>=1.0.0,<2",
30
+ "httpx>=0.27.0",
31
+ ]
32
+
33
+ [project.urls]
34
+ Homepage = "https://heyskippy.ai"
35
+
36
+ [project.scripts]
37
+ skippy-mcp = "skippy_mcp.cli:main"
38
+
39
+ [tool.hatch.build.targets.wheel]
40
+ packages = ["src/skippy_mcp"]
41
+
42
+ # The sdist carries the package and nothing else: no tests, no lockfile, nothing
43
+ # written for the people who build Skippy rather than the people who use it.
44
+ [tool.hatch.build.targets.sdist]
45
+ include = ["src/skippy_mcp", "README.md", "LICENSE", "pyproject.toml"]
46
+
47
+ [tool.pytest.ini_options]
48
+ testpaths = ["tests"]
49
+ python_files = ["test_*.py"]
50
+ python_classes = ["Test*"]
51
+ python_functions = ["test_*"]
52
+ addopts = "-v --tb=short"
53
+
54
+ [dependency-groups]
55
+ dev = [
56
+ "pytest>=8.0",
57
+ "pytest-mock>=3.14",
58
+ ]
59
+
60
+ [tool.ruff]
61
+ line-length = 120
62
+
63
+ [tool.ruff.lint]
64
+ select = ["E", "W", "F", "I", "B", "UP"]
65
+ ignore = ["E501"]
66
+
67
+ [tool.ruff.lint.per-file-ignores]
68
+ "tests/**" = ["S101", "S106", "S108", "F841"]
@@ -0,0 +1,3 @@
1
+ """Skippy MCP server: use Skippy from Claude, Cursor, Kiro and other MCP clients."""
2
+
3
+ __version__ = "0.2.0"