pythonanywhere-mcp-server 0.0.3__tar.gz → 0.0.5__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.
Files changed (24) hide show
  1. {pythonanywhere_mcp_server-0.0.3/src/pythonanywhere_mcp_server.egg-info → pythonanywhere_mcp_server-0.0.5}/PKG-INFO +29 -29
  2. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/README.md +29 -29
  3. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/pyproject.toml +1 -1
  4. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5/src/pythonanywhere_mcp_server.egg-info}/PKG-INFO +29 -29
  5. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/LICENSE +0 -0
  6. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/setup.cfg +0 -0
  7. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/__init__.py +0 -0
  8. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/__main__.py +0 -0
  9. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/server.py +0 -0
  10. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/tools/__init__.py +0 -0
  11. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/tools/file.py +0 -0
  12. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/tools/schedule.py +0 -0
  13. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/tools/webapp.py +0 -0
  14. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server/tools/website.py +0 -0
  15. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server.egg-info/SOURCES.txt +0 -0
  16. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server.egg-info/dependency_links.txt +0 -0
  17. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server.egg-info/entry_points.txt +0 -0
  18. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server.egg-info/requires.txt +0 -0
  19. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/src/pythonanywhere_mcp_server.egg-info/top_level.txt +0 -0
  20. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/tests/test_file_tools.py +0 -0
  21. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/tests/test_schedule_tools.py +0 -0
  22. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/tests/test_server.py +0 -0
  23. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/tests/test_webapp_tools.py +0 -0
  24. {pythonanywhere_mcp_server-0.0.3 → pythonanywhere_mcp_server-0.0.5}/tests/test_website_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonanywhere-mcp-server
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: PythonAnywhere Model Context Protocol Server
5
5
  Author-email: PythonAnywhere Developers <developers@pythonanywhere.com>
6
6
  License-Expression: MIT
@@ -26,42 +26,42 @@ Dynamic: license-file
26
26
 
27
27
  # PythonAnywhere Model Context Protocol Server
28
28
 
29
- A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
30
- server acts as a bridge between AI-powered tools and your
31
- [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
32
- programmatic management of files, websites, webapps, and scheduled tasks. By
33
- exposing a standardized interface, it allows language models and automation
34
- clients to perform operations—such as editing files, deploying web apps, or
35
- scheduling jobs—on your behalf, all while maintaining fine-grained control
29
+ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
30
+ server acts as a bridge between AI-powered tools and your
31
+ [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
32
+ programmatic management of files, websites, webapps, and scheduled tasks. By
33
+ exposing a standardized interface, it allows language models and automation
34
+ clients to perform operations—such as editing files, deploying web apps, or
35
+ scheduling jobs -- on your behalf, all while maintaining fine-grained control
36
36
  and auditability.
37
37
 
38
38
  ## Features
39
- - **File management**: Read, upload, delete files and list directory trees.
39
+ - **File management**: Read, upload, delete files and list directory trees.
40
40
  _(also enables debugging with direct access to log files, which are just
41
41
  files on PythonAnywhere)_
42
42
  - **ASGI Web app management**: Create, delete, reload, and list.
43
- _(as described in the [PythonAnywhere ASGI
43
+ _(as described in the [PythonAnywhere ASGI
44
44
  documentation](https://help.pythonanywhere.com/pages/ASGICommandLine))_
45
45
  - **WSGI Web app management**: Reload only _(at the moment)_.
46
46
  - **Scheduled task management**: List, create, update, and delete.
47
- _(Npote that it enables LLMs to execute arbitrary commands if a task is
48
- scheduled to soon after creation and deleted after execution. For that we
47
+ _(Note that this enables LLMs to execute arbitrary commands if a task is
48
+ scheduled too soon after creation and deleted after execution. For that we
49
49
  would suggest running it with [mcp-server-time](https://pypi.org/project/mcp-server-time/)
50
50
  as models easily get confused about time.)_
51
51
 
52
52
  ## Installation
53
- MCP protocol is well-defined and supported by various clients, but
54
- installation is different depending on the client you are using. We will
53
+ The MCP protocol is well-defined and supported by various clients, but
54
+ installation is different depending on the client you are using. We will
55
55
  cover cases that we tried and tested.
56
56
 
57
57
  In all cases, you need to have `uv` installed and available in your `PATH`.
58
58
 
59
- Have your PythonAnywhere API token and username ready. You can find (or
60
- generate) your API token in the [API section of your PythonAnywhere
59
+ Have your PythonAnywhere API token and username ready. You can find (or
60
+ generate) your API token in the [API section of your PythonAnywhere
61
61
  account](https://www.pythonanywhere.com/account/#api_token).
62
62
 
63
63
  ### Desktop Extension - works with Claude Desktop
64
- Probably the most straightforward way to install the MCP server is to use
64
+ Probably the most straightforward way to install the MCP server is to use
65
65
  the [desktop extension](https://github.com/anthropics/dxt/) for Claude Desktop.
66
66
 
67
67
  1. Open Claude Desktop.
@@ -75,7 +75,7 @@ Run:
75
75
  ```bash
76
76
  claude mcp add pythonanywhere-mcp-server \
77
77
  -e API_TOKEN=yourpythonanywhereapitoken \
78
- -e LOGNAME=yourpythonanywhereusername \
78
+ -e LOGNAME=yourpythonanywhereusername \
79
79
  -- uvx pythonanywhere-mcp-server
80
80
  ```
81
81
 
@@ -99,7 +99,7 @@ Add it to your `mcp.json`.
99
99
  ```
100
100
 
101
101
  ### Claude Desktop (manual setup) and Cursor:
102
- Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
102
+ Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
103
103
  for Cursor).
104
104
 
105
105
  ```json
@@ -120,20 +120,20 @@ for Cursor).
120
120
 
121
121
  ## Caveats
122
122
 
123
- Direct integration of an LLM with your PythonAnywhere account offers
124
- significant capabilities, but also introduces risks. We strongly advise
125
- maintaining human oversight, especially for sensitive actions such as
123
+ Direct integration of an LLM with your PythonAnywhere account offers
124
+ significant capabilities, but also introduces risks. We strongly advise
125
+ maintaining human oversight, especially for sensitive actions such as
126
126
  modifying or deleting files.
127
127
 
128
- If you are running multiple MCP servers simultaneously, be
129
- cautious—particularly if any server can access external resources you do not
130
- control, such as GitHub issues. These can become attack vectors. For more
128
+ If you are running multiple MCP servers simultaneously, be
129
+ cautious -- particularly if any server can access external resources you do not
130
+ control, such as GitHub issues. These can become attack vectors. For more
131
131
  details, see [this story](https://simonwillison.net/2025/Jul/6/supabase-mcp-lethal-trifecta/).
132
132
 
133
133
  ## Implementation
134
134
 
135
- Server uses [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
136
- in connection with [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
137
- package ([docs](https://core.pythonanywhere.com/)) that wraps subset of [PythonAnywhere
138
- API](https://help.pythonanywhere.com/pages/API/) and would be expanded in
135
+ The server uses the [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
136
+ in connection with the [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
137
+ package ([docs](https://core.pythonanywhere.com/)), which wraps a subset of the [PythonAnywhere
138
+ API](https://help.pythonanywhere.com/pages/API/) and may be expanded in
139
139
  the future as needed.
@@ -1,41 +1,41 @@
1
1
  # PythonAnywhere Model Context Protocol Server
2
2
 
3
- A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
4
- server acts as a bridge between AI-powered tools and your
5
- [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
6
- programmatic management of files, websites, webapps, and scheduled tasks. By
7
- exposing a standardized interface, it allows language models and automation
8
- clients to perform operations—such as editing files, deploying web apps, or
9
- scheduling jobs—on your behalf, all while maintaining fine-grained control
3
+ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
4
+ server acts as a bridge between AI-powered tools and your
5
+ [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
6
+ programmatic management of files, websites, webapps, and scheduled tasks. By
7
+ exposing a standardized interface, it allows language models and automation
8
+ clients to perform operations—such as editing files, deploying web apps, or
9
+ scheduling jobs -- on your behalf, all while maintaining fine-grained control
10
10
  and auditability.
11
11
 
12
12
  ## Features
13
- - **File management**: Read, upload, delete files and list directory trees.
13
+ - **File management**: Read, upload, delete files and list directory trees.
14
14
  _(also enables debugging with direct access to log files, which are just
15
15
  files on PythonAnywhere)_
16
16
  - **ASGI Web app management**: Create, delete, reload, and list.
17
- _(as described in the [PythonAnywhere ASGI
17
+ _(as described in the [PythonAnywhere ASGI
18
18
  documentation](https://help.pythonanywhere.com/pages/ASGICommandLine))_
19
19
  - **WSGI Web app management**: Reload only _(at the moment)_.
20
20
  - **Scheduled task management**: List, create, update, and delete.
21
- _(Npote that it enables LLMs to execute arbitrary commands if a task is
22
- scheduled to soon after creation and deleted after execution. For that we
21
+ _(Note that this enables LLMs to execute arbitrary commands if a task is
22
+ scheduled too soon after creation and deleted after execution. For that we
23
23
  would suggest running it with [mcp-server-time](https://pypi.org/project/mcp-server-time/)
24
24
  as models easily get confused about time.)_
25
25
 
26
26
  ## Installation
27
- MCP protocol is well-defined and supported by various clients, but
28
- installation is different depending on the client you are using. We will
27
+ The MCP protocol is well-defined and supported by various clients, but
28
+ installation is different depending on the client you are using. We will
29
29
  cover cases that we tried and tested.
30
30
 
31
31
  In all cases, you need to have `uv` installed and available in your `PATH`.
32
32
 
33
- Have your PythonAnywhere API token and username ready. You can find (or
34
- generate) your API token in the [API section of your PythonAnywhere
33
+ Have your PythonAnywhere API token and username ready. You can find (or
34
+ generate) your API token in the [API section of your PythonAnywhere
35
35
  account](https://www.pythonanywhere.com/account/#api_token).
36
36
 
37
37
  ### Desktop Extension - works with Claude Desktop
38
- Probably the most straightforward way to install the MCP server is to use
38
+ Probably the most straightforward way to install the MCP server is to use
39
39
  the [desktop extension](https://github.com/anthropics/dxt/) for Claude Desktop.
40
40
 
41
41
  1. Open Claude Desktop.
@@ -49,7 +49,7 @@ Run:
49
49
  ```bash
50
50
  claude mcp add pythonanywhere-mcp-server \
51
51
  -e API_TOKEN=yourpythonanywhereapitoken \
52
- -e LOGNAME=yourpythonanywhereusername \
52
+ -e LOGNAME=yourpythonanywhereusername \
53
53
  -- uvx pythonanywhere-mcp-server
54
54
  ```
55
55
 
@@ -73,7 +73,7 @@ Add it to your `mcp.json`.
73
73
  ```
74
74
 
75
75
  ### Claude Desktop (manual setup) and Cursor:
76
- Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
76
+ Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
77
77
  for Cursor).
78
78
 
79
79
  ```json
@@ -94,20 +94,20 @@ for Cursor).
94
94
 
95
95
  ## Caveats
96
96
 
97
- Direct integration of an LLM with your PythonAnywhere account offers
98
- significant capabilities, but also introduces risks. We strongly advise
99
- maintaining human oversight, especially for sensitive actions such as
97
+ Direct integration of an LLM with your PythonAnywhere account offers
98
+ significant capabilities, but also introduces risks. We strongly advise
99
+ maintaining human oversight, especially for sensitive actions such as
100
100
  modifying or deleting files.
101
101
 
102
- If you are running multiple MCP servers simultaneously, be
103
- cautious—particularly if any server can access external resources you do not
104
- control, such as GitHub issues. These can become attack vectors. For more
102
+ If you are running multiple MCP servers simultaneously, be
103
+ cautious -- particularly if any server can access external resources you do not
104
+ control, such as GitHub issues. These can become attack vectors. For more
105
105
  details, see [this story](https://simonwillison.net/2025/Jul/6/supabase-mcp-lethal-trifecta/).
106
106
 
107
107
  ## Implementation
108
108
 
109
- Server uses [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
110
- in connection with [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
111
- package ([docs](https://core.pythonanywhere.com/)) that wraps subset of [PythonAnywhere
112
- API](https://help.pythonanywhere.com/pages/API/) and would be expanded in
113
- the future as needed.
109
+ The server uses the [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
110
+ in connection with the [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
111
+ package ([docs](https://core.pythonanywhere.com/)), which wraps a subset of the [PythonAnywhere
112
+ API](https://help.pythonanywhere.com/pages/API/) and may be expanded in
113
+ the future as needed.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pythonanywhere-mcp-server"
7
- version = "0.0.3"
7
+ version = "0.0.5"
8
8
  description = "PythonAnywhere Model Context Protocol Server"
9
9
  authors = [
10
10
  {name = "PythonAnywhere Developers", email = "developers@pythonanywhere.com"}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonanywhere-mcp-server
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: PythonAnywhere Model Context Protocol Server
5
5
  Author-email: PythonAnywhere Developers <developers@pythonanywhere.com>
6
6
  License-Expression: MIT
@@ -26,42 +26,42 @@ Dynamic: license-file
26
26
 
27
27
  # PythonAnywhere Model Context Protocol Server
28
28
 
29
- A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
30
- server acts as a bridge between AI-powered tools and your
31
- [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
32
- programmatic management of files, websites, webapps, and scheduled tasks. By
33
- exposing a standardized interface, it allows language models and automation
34
- clients to perform operations—such as editing files, deploying web apps, or
35
- scheduling jobs—on your behalf, all while maintaining fine-grained control
29
+ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
30
+ server acts as a bridge between AI-powered tools and your
31
+ [PythonAnywhere](https://www.pythonanywhere.com/) account, enabling secure,
32
+ programmatic management of files, websites, webapps, and scheduled tasks. By
33
+ exposing a standardized interface, it allows language models and automation
34
+ clients to perform operations—such as editing files, deploying web apps, or
35
+ scheduling jobs -- on your behalf, all while maintaining fine-grained control
36
36
  and auditability.
37
37
 
38
38
  ## Features
39
- - **File management**: Read, upload, delete files and list directory trees.
39
+ - **File management**: Read, upload, delete files and list directory trees.
40
40
  _(also enables debugging with direct access to log files, which are just
41
41
  files on PythonAnywhere)_
42
42
  - **ASGI Web app management**: Create, delete, reload, and list.
43
- _(as described in the [PythonAnywhere ASGI
43
+ _(as described in the [PythonAnywhere ASGI
44
44
  documentation](https://help.pythonanywhere.com/pages/ASGICommandLine))_
45
45
  - **WSGI Web app management**: Reload only _(at the moment)_.
46
46
  - **Scheduled task management**: List, create, update, and delete.
47
- _(Npote that it enables LLMs to execute arbitrary commands if a task is
48
- scheduled to soon after creation and deleted after execution. For that we
47
+ _(Note that this enables LLMs to execute arbitrary commands if a task is
48
+ scheduled too soon after creation and deleted after execution. For that we
49
49
  would suggest running it with [mcp-server-time](https://pypi.org/project/mcp-server-time/)
50
50
  as models easily get confused about time.)_
51
51
 
52
52
  ## Installation
53
- MCP protocol is well-defined and supported by various clients, but
54
- installation is different depending on the client you are using. We will
53
+ The MCP protocol is well-defined and supported by various clients, but
54
+ installation is different depending on the client you are using. We will
55
55
  cover cases that we tried and tested.
56
56
 
57
57
  In all cases, you need to have `uv` installed and available in your `PATH`.
58
58
 
59
- Have your PythonAnywhere API token and username ready. You can find (or
60
- generate) your API token in the [API section of your PythonAnywhere
59
+ Have your PythonAnywhere API token and username ready. You can find (or
60
+ generate) your API token in the [API section of your PythonAnywhere
61
61
  account](https://www.pythonanywhere.com/account/#api_token).
62
62
 
63
63
  ### Desktop Extension - works with Claude Desktop
64
- Probably the most straightforward way to install the MCP server is to use
64
+ Probably the most straightforward way to install the MCP server is to use
65
65
  the [desktop extension](https://github.com/anthropics/dxt/) for Claude Desktop.
66
66
 
67
67
  1. Open Claude Desktop.
@@ -75,7 +75,7 @@ Run:
75
75
  ```bash
76
76
  claude mcp add pythonanywhere-mcp-server \
77
77
  -e API_TOKEN=yourpythonanywhereapitoken \
78
- -e LOGNAME=yourpythonanywhereusername \
78
+ -e LOGNAME=yourpythonanywhereusername \
79
79
  -- uvx pythonanywhere-mcp-server
80
80
  ```
81
81
 
@@ -99,7 +99,7 @@ Add it to your `mcp.json`.
99
99
  ```
100
100
 
101
101
  ### Claude Desktop (manual setup) and Cursor:
102
- Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
102
+ Add it to `claude_desktop_config.json` (for Claude Desktop) or (`mcp.json`
103
103
  for Cursor).
104
104
 
105
105
  ```json
@@ -120,20 +120,20 @@ for Cursor).
120
120
 
121
121
  ## Caveats
122
122
 
123
- Direct integration of an LLM with your PythonAnywhere account offers
124
- significant capabilities, but also introduces risks. We strongly advise
125
- maintaining human oversight, especially for sensitive actions such as
123
+ Direct integration of an LLM with your PythonAnywhere account offers
124
+ significant capabilities, but also introduces risks. We strongly advise
125
+ maintaining human oversight, especially for sensitive actions such as
126
126
  modifying or deleting files.
127
127
 
128
- If you are running multiple MCP servers simultaneously, be
129
- cautious—particularly if any server can access external resources you do not
130
- control, such as GitHub issues. These can become attack vectors. For more
128
+ If you are running multiple MCP servers simultaneously, be
129
+ cautious -- particularly if any server can access external resources you do not
130
+ control, such as GitHub issues. These can become attack vectors. For more
131
131
  details, see [this story](https://simonwillison.net/2025/Jul/6/supabase-mcp-lethal-trifecta/).
132
132
 
133
133
  ## Implementation
134
134
 
135
- Server uses [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
136
- in connection with [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
137
- package ([docs](https://core.pythonanywhere.com/)) that wraps subset of [PythonAnywhere
138
- API](https://help.pythonanywhere.com/pages/API/) and would be expanded in
135
+ The server uses the [python mcp sdk](https://github.com/modelcontextprotocol/python-sdk)
136
+ in connection with the [pythonanywhere-core](https://github.com/pythonanywhere/pythonanywhere-core)
137
+ package ([docs](https://core.pythonanywhere.com/)), which wraps a subset of the [PythonAnywhere
138
+ API](https://help.pythonanywhere.com/pages/API/) and may be expanded in
139
139
  the future as needed.