codeocean-mcp-server 0.3.0__tar.gz → 0.5.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.
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/CHANGELOG.md +10 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/PKG-INFO +35 -12
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/README.md +32 -9
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/pyproject.toml +3 -3
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/server.py +9 -4
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/capsules.py +7 -0
- codeocean_mcp_server-0.5.0/src/codeocean_mcp_server/tools/custom_metadata.py +16 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/uv.lock +35 -79
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/.gitignore +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/.python-version +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/LICENSE +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/RELEASE.md +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/__init__.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/file_utils.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/models.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/__init__.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/computations.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/data_assets.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/tests/bedrock_call.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/tests/bedrock_tools_converter.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/tests/mcp_client.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/tests/test_multi_tool_calling.py +0 -0
- {codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/tests/test_tool_calling.py +0 -0
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
CHANGELOG
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## 0.5.0 (2025-09-01)
|
|
5
|
+
|
|
6
|
+
- [#9](https://github.com/codeocean/codeocean-mcp-server/pull/9) feat: Updates for Code Ocean v3.9
|
|
7
|
+
- **Minimum Code Ocean platform version updated to `3.9.0`.**
|
|
8
|
+
|
|
9
|
+
## 0.4.0 (2025-08-04)
|
|
10
|
+
|
|
11
|
+
- [#7](https://github.com/codeocean/codeocean-mcp-server/pull/7) fix: pin mcp package dependency
|
|
12
|
+
|
|
4
13
|
## 0.3.0 (2025-07-14)
|
|
5
14
|
|
|
6
15
|
- [#5](https://github.com/codeocean/codeocean-mcp-server/pull/5) feat: Add support for AI agent ID in server configuration
|
|
@@ -13,3 +22,4 @@ CHANGELOG
|
|
|
13
22
|
## 0.1.0 (2025-07-01)
|
|
14
23
|
|
|
15
24
|
- [#1](https://github.com/codeocean/codeocean-mcp-server/pull/1) Initial version
|
|
25
|
+
- **Minimum Code Ocean platform version updated to `3.6.0`.**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codeocean-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Code Ocean MCP Server
|
|
5
5
|
Project-URL: Homepage, https://github.com/codeocean/codeocean-mcp-server
|
|
6
6
|
Project-URL: Issues, https://github.com/codeocean/codeocean-mcp-server/issues
|
|
@@ -12,8 +12,8 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Requires-Python: >=3.10
|
|
15
|
-
Requires-Dist: codeocean<0.
|
|
16
|
-
Requires-Dist:
|
|
15
|
+
Requires-Dist: codeocean<0.11.0,>=0.10.0
|
|
16
|
+
Requires-Dist: mcp<1.13.0,>=1.12.0
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
|
|
19
19
|
# Code Ocean MCP Server
|
|
@@ -25,6 +25,7 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
25
25
|
## Table of Contents
|
|
26
26
|
|
|
27
27
|
- [Prerequisites](#prerequisites)
|
|
28
|
+
- [Code Ocean Platform Version Compatibility](#code-ocean-platform-version-compatibility)
|
|
28
29
|
- [Installation](#installation)
|
|
29
30
|
- [Visual Studio Code](#visual-studio-code)
|
|
30
31
|
- [Claude Desktop](#claude-desktop)
|
|
@@ -32,6 +33,7 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
32
33
|
- [Roo Code](#roo-code)
|
|
33
34
|
- [Cursor](#cursor)
|
|
34
35
|
- [Windsurf](#windsurf)
|
|
36
|
+
- [Local Testing](#local-testing)
|
|
35
37
|
|
|
36
38
|
## Prerequisites
|
|
37
39
|
|
|
@@ -39,9 +41,16 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
39
41
|
2. Install Python 3.10 or newer using `uv python install 3.10` (or a more recent version)
|
|
40
42
|
3. Generate a Code Ocean access token. Follow instructions in the [Code Ocean user guide](https://docs.codeocean.com/user-guide/code-ocean-api/authentication).
|
|
41
43
|
|
|
44
|
+
## Code Ocean Platform Version Compatibility
|
|
45
|
+
|
|
46
|
+
Each release of this Code Ocean MCP Server is tested and verified against a specific minimum version of the Code Ocean platform API.
|
|
47
|
+
Generally, this minimum version is the latest Code Ocean version at the time of the MCP Server release.
|
|
48
|
+
We recommend ensuring your MCP Server dependency is pinned to a version compatible with your Code Ocean deployment.
|
|
49
|
+
For details on when the minimum Code Ocean platform version changes, see the [CHANGELOG](CHANGELOG.md).
|
|
50
|
+
|
|
42
51
|
## Installation
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
### [Visual Studio Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)
|
|
45
54
|
|
|
46
55
|
Here's an example VS Code MCP server configuration:
|
|
47
56
|
```json
|
|
@@ -74,7 +83,7 @@ Here's an example VS Code MCP server configuration:
|
|
|
74
83
|
|
|
75
84
|
---
|
|
76
85
|
|
|
77
|
-
|
|
86
|
+
### [Claude Desktop](https://modelcontextprotocol.io/quickstart/user)
|
|
78
87
|
|
|
79
88
|
1. Open the `claude_desktop_config.json` file:
|
|
80
89
|
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
@@ -99,7 +108,7 @@ Here's an example VS Code MCP server configuration:
|
|
|
99
108
|
|
|
100
109
|
---
|
|
101
110
|
|
|
102
|
-
|
|
111
|
+
### [Cline](https://docs.cline.bot/mcp/configuring-mcp-servers)
|
|
103
112
|
|
|
104
113
|
Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.json. You can edit this either through the GUI (“Configure MCP Servers” in the MCP Servers pane) or by hand:
|
|
105
114
|
1. Open Cline and click the MCP Servers icon in the sidebar.
|
|
@@ -126,11 +135,11 @@ Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.js
|
|
|
126
135
|
|
|
127
136
|
---
|
|
128
137
|
|
|
129
|
-
|
|
138
|
+
### [Roo Code](https://docs.roocode.com/features/mcp/using-mcp-in-roo/)
|
|
130
139
|
|
|
131
140
|
Roo Code’s MCP support is configured globally across all workspaces via a JSON settings file or through its dedicated MCP Settings UI
|
|
132
141
|
|
|
133
|
-
|
|
142
|
+
#### Via the MCP Settings UI:
|
|
134
143
|
1. Click the MCP icon in Roo Code’s sidebar. 
|
|
135
144
|
2. Select Edit MCP Settings (opens cline_mcp_settings.json). 
|
|
136
145
|
3. Under "mcpServers", add:
|
|
@@ -152,14 +161,14 @@ Roo Code’s MCP support is configured globally across all workspaces via a JSON
|
|
|
152
161
|
```
|
|
153
162
|
4. Save and restart Roo Code; your Code Ocean tools will appear automatically.
|
|
154
163
|
|
|
155
|
-
|
|
164
|
+
#### Optional: Manually editing cline_mcp_settings.json
|
|
156
165
|
1. Locate cline_mcp_settings.json (in your home directory or workspace). 
|
|
157
166
|
2. Insert the same "codeocean" block under "mcpServers" as above.
|
|
158
167
|
3. Save and restart.
|
|
159
168
|
|
|
160
169
|
---
|
|
161
170
|
|
|
162
|
-
|
|
171
|
+
### [Cursor](https://docs.cursor.com/context/model-context-protocol)
|
|
163
172
|
|
|
164
173
|
Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) or {project}/.cursor/mcp.json (project-specific) .
|
|
165
174
|
1. Open .cursor/mcp.json (or create it if missing). 
|
|
@@ -183,7 +192,7 @@ Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) o
|
|
|
183
192
|
|
|
184
193
|
---
|
|
185
194
|
|
|
186
|
-
|
|
195
|
+
### [Windsurf](https://docs.windsurf.com/windsurf/cascade/mcp)
|
|
187
196
|
|
|
188
197
|
Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the Cascade → MCP Servers UI) .
|
|
189
198
|
1. Open your Windsurf Settings and navigate to Cascade → MCP Servers, then click View Raw Config to open mcp_config.json. 
|
|
@@ -204,4 +213,18 @@ Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the C
|
|
|
204
213
|
}
|
|
205
214
|
```
|
|
206
215
|
|
|
207
|
-
3. Save and restart Windsurf (or hit “Refresh” in the MCP panel).
|
|
216
|
+
3. Save and restart Windsurf (or hit “Refresh” in the MCP panel).
|
|
217
|
+
|
|
218
|
+
## Local Testing
|
|
219
|
+
|
|
220
|
+
You can test the MCP server locally during development with [MCP Inspector](https://modelcontextprotocol.io/legacy/tools/inspector):
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
npx @modelcontextprotocol/inspector uvx --from . codeocean-mcp-server
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
This will start a web server where you can:
|
|
227
|
+
|
|
228
|
+
- View available tools and resources
|
|
229
|
+
- Test tool calls interactively
|
|
230
|
+
- See server logs and responses
|
|
@@ -7,6 +7,7 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
9
9
|
- [Prerequisites](#prerequisites)
|
|
10
|
+
- [Code Ocean Platform Version Compatibility](#code-ocean-platform-version-compatibility)
|
|
10
11
|
- [Installation](#installation)
|
|
11
12
|
- [Visual Studio Code](#visual-studio-code)
|
|
12
13
|
- [Claude Desktop](#claude-desktop)
|
|
@@ -14,6 +15,7 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
14
15
|
- [Roo Code](#roo-code)
|
|
15
16
|
- [Cursor](#cursor)
|
|
16
17
|
- [Windsurf](#windsurf)
|
|
18
|
+
- [Local Testing](#local-testing)
|
|
17
19
|
|
|
18
20
|
## Prerequisites
|
|
19
21
|
|
|
@@ -21,9 +23,16 @@ This MCP server provides tools to search and run capsules and pipelines, and man
|
|
|
21
23
|
2. Install Python 3.10 or newer using `uv python install 3.10` (or a more recent version)
|
|
22
24
|
3. Generate a Code Ocean access token. Follow instructions in the [Code Ocean user guide](https://docs.codeocean.com/user-guide/code-ocean-api/authentication).
|
|
23
25
|
|
|
26
|
+
## Code Ocean Platform Version Compatibility
|
|
27
|
+
|
|
28
|
+
Each release of this Code Ocean MCP Server is tested and verified against a specific minimum version of the Code Ocean platform API.
|
|
29
|
+
Generally, this minimum version is the latest Code Ocean version at the time of the MCP Server release.
|
|
30
|
+
We recommend ensuring your MCP Server dependency is pinned to a version compatible with your Code Ocean deployment.
|
|
31
|
+
For details on when the minimum Code Ocean platform version changes, see the [CHANGELOG](CHANGELOG.md).
|
|
32
|
+
|
|
24
33
|
## Installation
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
### [Visual Studio Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)
|
|
27
36
|
|
|
28
37
|
Here's an example VS Code MCP server configuration:
|
|
29
38
|
```json
|
|
@@ -56,7 +65,7 @@ Here's an example VS Code MCP server configuration:
|
|
|
56
65
|
|
|
57
66
|
---
|
|
58
67
|
|
|
59
|
-
|
|
68
|
+
### [Claude Desktop](https://modelcontextprotocol.io/quickstart/user)
|
|
60
69
|
|
|
61
70
|
1. Open the `claude_desktop_config.json` file:
|
|
62
71
|
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
@@ -81,7 +90,7 @@ Here's an example VS Code MCP server configuration:
|
|
|
81
90
|
|
|
82
91
|
---
|
|
83
92
|
|
|
84
|
-
|
|
93
|
+
### [Cline](https://docs.cline.bot/mcp/configuring-mcp-servers)
|
|
85
94
|
|
|
86
95
|
Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.json. You can edit this either through the GUI (“Configure MCP Servers” in the MCP Servers pane) or by hand:
|
|
87
96
|
1. Open Cline and click the MCP Servers icon in the sidebar.
|
|
@@ -108,11 +117,11 @@ Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.js
|
|
|
108
117
|
|
|
109
118
|
---
|
|
110
119
|
|
|
111
|
-
|
|
120
|
+
### [Roo Code](https://docs.roocode.com/features/mcp/using-mcp-in-roo/)
|
|
112
121
|
|
|
113
122
|
Roo Code’s MCP support is configured globally across all workspaces via a JSON settings file or through its dedicated MCP Settings UI
|
|
114
123
|
|
|
115
|
-
|
|
124
|
+
#### Via the MCP Settings UI:
|
|
116
125
|
1. Click the MCP icon in Roo Code’s sidebar. 
|
|
117
126
|
2. Select Edit MCP Settings (opens cline_mcp_settings.json). 
|
|
118
127
|
3. Under "mcpServers", add:
|
|
@@ -134,14 +143,14 @@ Roo Code’s MCP support is configured globally across all workspaces via a JSON
|
|
|
134
143
|
```
|
|
135
144
|
4. Save and restart Roo Code; your Code Ocean tools will appear automatically.
|
|
136
145
|
|
|
137
|
-
|
|
146
|
+
#### Optional: Manually editing cline_mcp_settings.json
|
|
138
147
|
1. Locate cline_mcp_settings.json (in your home directory or workspace). 
|
|
139
148
|
2. Insert the same "codeocean" block under "mcpServers" as above.
|
|
140
149
|
3. Save and restart.
|
|
141
150
|
|
|
142
151
|
---
|
|
143
152
|
|
|
144
|
-
|
|
153
|
+
### [Cursor](https://docs.cursor.com/context/model-context-protocol)
|
|
145
154
|
|
|
146
155
|
Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) or {project}/.cursor/mcp.json (project-specific) .
|
|
147
156
|
1. Open .cursor/mcp.json (or create it if missing). 
|
|
@@ -165,7 +174,7 @@ Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) o
|
|
|
165
174
|
|
|
166
175
|
---
|
|
167
176
|
|
|
168
|
-
|
|
177
|
+
### [Windsurf](https://docs.windsurf.com/windsurf/cascade/mcp)
|
|
169
178
|
|
|
170
179
|
Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the Cascade → MCP Servers UI) .
|
|
171
180
|
1. Open your Windsurf Settings and navigate to Cascade → MCP Servers, then click View Raw Config to open mcp_config.json. 
|
|
@@ -186,4 +195,18 @@ Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the C
|
|
|
186
195
|
}
|
|
187
196
|
```
|
|
188
197
|
|
|
189
|
-
3. Save and restart Windsurf (or hit “Refresh” in the MCP panel).
|
|
198
|
+
3. Save and restart Windsurf (or hit “Refresh” in the MCP panel).
|
|
199
|
+
|
|
200
|
+
## Local Testing
|
|
201
|
+
|
|
202
|
+
You can test the MCP server locally during development with [MCP Inspector](https://modelcontextprotocol.io/legacy/tools/inspector):
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
npx @modelcontextprotocol/inspector uvx --from . codeocean-mcp-server
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
This will start a web server where you can:
|
|
209
|
+
|
|
210
|
+
- View available tools and resources
|
|
211
|
+
- Test tool calls interactively
|
|
212
|
+
- See server logs and responses
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codeocean-mcp-server"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.5.0"
|
|
4
4
|
authors = [{ name = "Code Ocean", email = "dev@codeocean.com" }]
|
|
5
5
|
description = "Code Ocean MCP Server"
|
|
6
6
|
readme = "README.md"
|
|
@@ -11,8 +11,8 @@ classifiers = [
|
|
|
11
11
|
"Operating System :: OS Independent",
|
|
12
12
|
]
|
|
13
13
|
dependencies = [
|
|
14
|
-
"codeocean>=0.
|
|
15
|
-
"
|
|
14
|
+
"codeocean>=0.10.0,<0.11.0",
|
|
15
|
+
"mcp>=1.12.0,<1.13.0",
|
|
16
16
|
]
|
|
17
17
|
license = "MIT"
|
|
18
18
|
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/server.py
RENAMED
|
@@ -3,7 +3,12 @@ import os
|
|
|
3
3
|
from codeocean import CodeOcean
|
|
4
4
|
from mcp.server.fastmcp import FastMCP
|
|
5
5
|
|
|
6
|
-
from codeocean_mcp_server.tools import
|
|
6
|
+
from codeocean_mcp_server.tools import (
|
|
7
|
+
capsules,
|
|
8
|
+
computations,
|
|
9
|
+
custom_metadata,
|
|
10
|
+
data_assets,
|
|
11
|
+
)
|
|
7
12
|
|
|
8
13
|
|
|
9
14
|
def main():
|
|
@@ -12,15 +17,14 @@ def main():
|
|
|
12
17
|
token = os.getenv("CODEOCEAN_TOKEN")
|
|
13
18
|
if not domain or not token:
|
|
14
19
|
raise ValueError(
|
|
15
|
-
"Environment variables CODEOCEAN_DOMAIN and "
|
|
16
|
-
"CODEOCEAN_TOKEN must be set."
|
|
20
|
+
"Environment variables CODEOCEAN_DOMAIN and " "CODEOCEAN_TOKEN must be set."
|
|
17
21
|
)
|
|
18
22
|
agent_id = os.getenv("AGENT_ID", "AI Agent")
|
|
19
23
|
client = CodeOcean(domain=domain, token=token, agent_id=agent_id)
|
|
20
24
|
|
|
21
25
|
mcp = FastMCP(
|
|
22
26
|
name="Code Ocean",
|
|
23
|
-
|
|
27
|
+
instructions=(
|
|
24
28
|
f"MCP server for Code Ocean: search & run capsules, "
|
|
25
29
|
f"pipelines, and assets using Code Ocean domain {domain}."
|
|
26
30
|
),
|
|
@@ -29,6 +33,7 @@ def main():
|
|
|
29
33
|
capsules.add_tools(mcp, client)
|
|
30
34
|
data_assets.add_tools(mcp, client)
|
|
31
35
|
computations.add_tools(mcp, client)
|
|
36
|
+
custom_metadata.add_tools(mcp, client)
|
|
32
37
|
|
|
33
38
|
mcp.run()
|
|
34
39
|
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/capsules.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from codeocean import CodeOcean
|
|
2
2
|
from codeocean.capsule import (
|
|
3
|
+
AppPanel,
|
|
3
4
|
Capsule,
|
|
4
5
|
CapsuleSearchParams,
|
|
5
6
|
CapsuleSearchResults,
|
|
@@ -11,6 +12,7 @@ from mcp.server.fastmcp import FastMCP
|
|
|
11
12
|
|
|
12
13
|
from codeocean_mcp_server.models import dataclass_to_pydantic
|
|
13
14
|
|
|
15
|
+
AppPanelModel = dataclass_to_pydantic(AppPanel)
|
|
14
16
|
CapsuleSearchParamsModel = dataclass_to_pydantic(CapsuleSearchParams)
|
|
15
17
|
DataAssetAttachParamsModel = dataclass_to_pydantic(DataAssetAttachParams)
|
|
16
18
|
|
|
@@ -65,3 +67,8 @@ def add_tools(mcp: FastMCP, client: CodeOcean):
|
|
|
65
67
|
def list_computations(capsule_id: str) -> list[Computation]:
|
|
66
68
|
"""List all computations for a capsule."""
|
|
67
69
|
return client.capsules.list_computations(capsule_id)
|
|
70
|
+
|
|
71
|
+
@mcp.tool(description=client.capsules.get_capsule_app_panel.__doc__)
|
|
72
|
+
def get_capsule_app_panel(capsule_id: str, version: int | None = None) -> AppPanelModel:
|
|
73
|
+
"""Retrieve the app panel for a capsule, optionally for a specific version."""
|
|
74
|
+
return client.capsules.get_capsule_app_panel(capsule_id, version)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from codeocean import CodeOcean
|
|
2
|
+
from codeocean.custom_metadata import CustomMetadata
|
|
3
|
+
from mcp.server.fastmcp import FastMCP
|
|
4
|
+
|
|
5
|
+
from codeocean_mcp_server.models import dataclass_to_pydantic
|
|
6
|
+
|
|
7
|
+
CustomMetadataModel = dataclass_to_pydantic(CustomMetadata)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def add_tools(mcp: FastMCP, client: CodeOcean):
|
|
11
|
+
"""Add custom_metadata tools to the MCP server."""
|
|
12
|
+
|
|
13
|
+
@mcp.tool(description=client.custom_metadata.get_custom_metadata.__doc__)
|
|
14
|
+
def get_custom_metadata() -> CustomMetadataModel:
|
|
15
|
+
"""Retrieve custom metadata."""
|
|
16
|
+
return client.custom_metadata.get_custom_metadata()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 3
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
@@ -151,18 +151,6 @@ wheels = [
|
|
|
151
151
|
{ url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" },
|
|
152
152
|
]
|
|
153
153
|
|
|
154
|
-
[[package]]
|
|
155
|
-
name = "authlib"
|
|
156
|
-
version = "1.6.0"
|
|
157
|
-
source = { registry = "https://pypi.org/simple" }
|
|
158
|
-
dependencies = [
|
|
159
|
-
{ name = "cryptography" },
|
|
160
|
-
]
|
|
161
|
-
sdist = { url = "https://files.pythonhosted.org/packages/a2/9d/b1e08d36899c12c8b894a44a5583ee157789f26fc4b176f8e4b6217b56e1/authlib-1.6.0.tar.gz", hash = "sha256:4367d32031b7af175ad3a323d571dc7257b7099d55978087ceae4a0d88cd3210", size = 158371, upload-time = "2025-05-23T00:21:45.011Z" }
|
|
162
|
-
wheels = [
|
|
163
|
-
{ url = "https://files.pythonhosted.org/packages/84/29/587c189bbab1ccc8c86a03a5d0e13873df916380ef1be461ebe6acebf48d/authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d", size = 239981, upload-time = "2025-05-23T00:21:43.075Z" },
|
|
164
|
-
]
|
|
165
|
-
|
|
166
154
|
[[package]]
|
|
167
155
|
name = "backports-strenum"
|
|
168
156
|
version = "1.3.1"
|
|
@@ -350,7 +338,7 @@ wheels = [
|
|
|
350
338
|
|
|
351
339
|
[[package]]
|
|
352
340
|
name = "codeocean"
|
|
353
|
-
version = "0.
|
|
341
|
+
version = "0.10.0"
|
|
354
342
|
source = { registry = "https://pypi.org/simple" }
|
|
355
343
|
dependencies = [
|
|
356
344
|
{ name = "backports-strenum", marker = "python_full_version < '3.11'" },
|
|
@@ -358,18 +346,18 @@ dependencies = [
|
|
|
358
346
|
{ name = "requests" },
|
|
359
347
|
{ name = "requests-toolbelt" },
|
|
360
348
|
]
|
|
361
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
349
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5b/1a/c7edc172712bf5cf71ed824d554db2d9f076ed54c31449c81955d615897b/codeocean-0.10.0.tar.gz", hash = "sha256:36c7b4a569a8ee538dc85ea46a2392d608f18622e2e5db9db07473e7a0fc5776", size = 19099, upload-time = "2025-09-01T10:06:09.616Z" }
|
|
362
350
|
wheels = [
|
|
363
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
351
|
+
{ url = "https://files.pythonhosted.org/packages/ec/79/3fb1d8b67a975992c0628bc30c0e53148391dd8731d919e1e98486bb1755/codeocean-0.10.0-py3-none-any.whl", hash = "sha256:cd6a564af9d46d21d06ad62d836782537d7b8e1e4641a56fd1590cd316d333ea", size = 19923, upload-time = "2025-09-01T10:06:10.349Z" },
|
|
364
352
|
]
|
|
365
353
|
|
|
366
354
|
[[package]]
|
|
367
355
|
name = "codeocean-mcp-server"
|
|
368
|
-
version = "0.
|
|
356
|
+
version = "0.5.0"
|
|
369
357
|
source = { editable = "." }
|
|
370
358
|
dependencies = [
|
|
371
359
|
{ name = "codeocean" },
|
|
372
|
-
{ name = "
|
|
360
|
+
{ name = "mcp" },
|
|
373
361
|
]
|
|
374
362
|
|
|
375
363
|
[package.dev-dependencies]
|
|
@@ -384,8 +372,8 @@ dev = [
|
|
|
384
372
|
|
|
385
373
|
[package.metadata]
|
|
386
374
|
requires-dist = [
|
|
387
|
-
{ name = "codeocean", specifier = ">=0.
|
|
388
|
-
{ name = "
|
|
375
|
+
{ name = "codeocean", specifier = ">=0.10.0,<0.11.0" },
|
|
376
|
+
{ name = "mcp", specifier = ">=1.12.0,<1.13.0" },
|
|
389
377
|
]
|
|
390
378
|
|
|
391
379
|
[package.metadata.requires-dev]
|
|
@@ -416,7 +404,6 @@ dependencies = [
|
|
|
416
404
|
]
|
|
417
405
|
sdist = { url = "https://files.pythonhosted.org/packages/fe/c8/a2a376a8711c1e11708b9c9972e0c3223f5fc682552c82d8db844393d6ce/cryptography-45.0.4.tar.gz", hash = "sha256:7405ade85c83c37682c8fe65554759800a4a8c54b2d96e0f8ad114d31b808d57", size = 744890, upload-time = "2025-06-10T00:03:51.297Z" }
|
|
418
406
|
wheels = [
|
|
419
|
-
{ url = "https://files.pythonhosted.org/packages/cc/1c/92637793de053832523b410dbe016d3f5c11b41d0cf6eef8787aabb51d41/cryptography-45.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:425a9a6ac2823ee6e46a76a21a4e8342d8fa5c01e08b823c1f19a8b74f096069", size = 7055712, upload-time = "2025-06-10T00:02:38.826Z" },
|
|
420
407
|
{ url = "https://files.pythonhosted.org/packages/ba/14/93b69f2af9ba832ad6618a03f8a034a5851dc9a3314336a3d71c252467e1/cryptography-45.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:680806cf63baa0039b920f4976f5f31b10e772de42f16310a6839d9f21a26b0d", size = 4205335, upload-time = "2025-06-10T00:02:41.64Z" },
|
|
421
408
|
{ url = "https://files.pythonhosted.org/packages/67/30/fae1000228634bf0b647fca80403db5ca9e3933b91dd060570689f0bd0f7/cryptography-45.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4ca0f52170e821bc8da6fc0cc565b7bb8ff8d90d36b5e9fdd68e8a86bdf72036", size = 4431487, upload-time = "2025-06-10T00:02:43.696Z" },
|
|
422
409
|
{ url = "https://files.pythonhosted.org/packages/6d/5a/7dffcf8cdf0cb3c2430de7404b327e3db64735747d641fc492539978caeb/cryptography-45.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f3fe7a5ae34d5a414957cc7f457e2b92076e72938423ac64d215722f6cf49a9e", size = 4208922, upload-time = "2025-06-10T00:02:45.334Z" },
|
|
@@ -426,9 +413,6 @@ wheels = [
|
|
|
426
413
|
{ url = "https://files.pythonhosted.org/packages/db/b7/a84bdcd19d9c02ec5807f2ec2d1456fd8451592c5ee353816c09250e3561/cryptography-45.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2882338b2a6e0bd337052e8b9007ced85c637da19ef9ecaf437744495c8c2999", size = 4463623, upload-time = "2025-06-10T00:02:52.542Z" },
|
|
427
414
|
{ url = "https://files.pythonhosted.org/packages/d8/84/69707d502d4d905021cac3fb59a316344e9f078b1da7fb43ecde5e10840a/cryptography-45.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:23b9c3ea30c3ed4db59e7b9619272e94891f8a3a5591d0b656a7582631ccf750", size = 4332447, upload-time = "2025-06-10T00:02:54.63Z" },
|
|
428
415
|
{ url = "https://files.pythonhosted.org/packages/f3/ee/d4f2ab688e057e90ded24384e34838086a9b09963389a5ba6854b5876598/cryptography-45.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0a97c927497e3bc36b33987abb99bf17a9a175a19af38a892dc4bbb844d7ee2", size = 4572830, upload-time = "2025-06-10T00:02:56.689Z" },
|
|
429
|
-
{ url = "https://files.pythonhosted.org/packages/70/d4/994773a261d7ff98034f72c0e8251fe2755eac45e2265db4c866c1c6829c/cryptography-45.0.4-cp311-abi3-win32.whl", hash = "sha256:e00a6c10a5c53979d6242f123c0a97cff9f3abed7f064fc412c36dc521b5f257", size = 2932769, upload-time = "2025-06-10T00:02:58.467Z" },
|
|
430
|
-
{ url = "https://files.pythonhosted.org/packages/5a/42/c80bd0b67e9b769b364963b5252b17778a397cefdd36fa9aa4a5f34c599a/cryptography-45.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:817ee05c6c9f7a69a16200f0c90ab26d23a87701e2a284bd15156783e46dbcc8", size = 3410441, upload-time = "2025-06-10T00:03:00.14Z" },
|
|
431
|
-
{ url = "https://files.pythonhosted.org/packages/ce/0b/2488c89f3a30bc821c9d96eeacfcab6ff3accc08a9601ba03339c0fd05e5/cryptography-45.0.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:964bcc28d867e0f5491a564b7debb3ffdd8717928d315d12e0d7defa9e43b723", size = 7031836, upload-time = "2025-06-10T00:03:01.726Z" },
|
|
432
416
|
{ url = "https://files.pythonhosted.org/packages/fe/51/8c584ed426093aac257462ae62d26ad61ef1cbf5b58d8b67e6e13c39960e/cryptography-45.0.4-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6a5bf57554e80f75a7db3d4b1dacaa2764611ae166ab42ea9a72bcdb5d577637", size = 4195746, upload-time = "2025-06-10T00:03:03.94Z" },
|
|
433
417
|
{ url = "https://files.pythonhosted.org/packages/5c/7d/4b0ca4d7af95a704eef2f8f80a8199ed236aaf185d55385ae1d1610c03c2/cryptography-45.0.4-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46cf7088bf91bdc9b26f9c55636492c1cce3e7aaf8041bbf0243f5e5325cfb2d", size = 4424456, upload-time = "2025-06-10T00:03:05.589Z" },
|
|
434
418
|
{ url = "https://files.pythonhosted.org/packages/1d/45/5fabacbc6e76ff056f84d9f60eeac18819badf0cefc1b6612ee03d4ab678/cryptography-45.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7bedbe4cc930fa4b100fc845ea1ea5788fcd7ae9562e669989c11618ae8d76ee", size = 4198495, upload-time = "2025-06-10T00:03:09.172Z" },
|
|
@@ -438,20 +422,14 @@ wheels = [
|
|
|
438
422
|
{ url = "https://files.pythonhosted.org/packages/3a/c0/85fa358ddb063ec588aed4a6ea1df57dc3e3bc1712d87c8fa162d02a65fc/cryptography-45.0.4-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:06509dc70dd71fa56eaa138336244e2fbaf2ac164fc9b5e66828fccfd2b680d6", size = 4451442, upload-time = "2025-06-10T00:03:16.248Z" },
|
|
439
423
|
{ url = "https://files.pythonhosted.org/packages/33/67/362d6ec1492596e73da24e669a7fbbaeb1c428d6bf49a29f7a12acffd5dc/cryptography-45.0.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5f31e6b0a5a253f6aa49be67279be4a7e5a4ef259a9f33c69f7d1b1191939872", size = 4325038, upload-time = "2025-06-10T00:03:18.4Z" },
|
|
440
424
|
{ url = "https://files.pythonhosted.org/packages/53/75/82a14bf047a96a1b13ebb47fb9811c4f73096cfa2e2b17c86879687f9027/cryptography-45.0.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:944e9ccf67a9594137f942d5b52c8d238b1b4e46c7a0c2891b7ae6e01e7c80a4", size = 4560964, upload-time = "2025-06-10T00:03:20.06Z" },
|
|
441
|
-
{ url = "https://files.pythonhosted.org/packages/cd/37/1a3cba4c5a468ebf9b95523a5ef5651244693dc712001e276682c278fc00/cryptography-45.0.4-cp37-abi3-win32.whl", hash = "sha256:c22fe01e53dc65edd1945a2e6f0015e887f84ced233acecb64b4daadb32f5c97", size = 2924557, upload-time = "2025-06-10T00:03:22.563Z" },
|
|
442
|
-
{ url = "https://files.pythonhosted.org/packages/2a/4b/3256759723b7e66380397d958ca07c59cfc3fb5c794fb5516758afd05d41/cryptography-45.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:627ba1bc94f6adf0b0a2e35d87020285ead22d9f648c7e75bb64f367375f3b22", size = 3395508, upload-time = "2025-06-10T00:03:24.586Z" },
|
|
443
|
-
{ url = "https://files.pythonhosted.org/packages/16/33/b38e9d372afde56906a23839302c19abdac1c505bfb4776c1e4b07c3e145/cryptography-45.0.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a77c6fb8d76e9c9f99f2f3437c1a4ac287b34eaf40997cfab1e9bd2be175ac39", size = 3580103, upload-time = "2025-06-10T00:03:26.207Z" },
|
|
444
425
|
{ url = "https://files.pythonhosted.org/packages/c4/b9/357f18064ec09d4807800d05a48f92f3b369056a12f995ff79549fbb31f1/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7aad98a25ed8ac917fdd8a9c1e706e5a0956e06c498be1f713b61734333a4507", size = 4143732, upload-time = "2025-06-10T00:03:27.896Z" },
|
|
445
426
|
{ url = "https://files.pythonhosted.org/packages/c4/9c/7f7263b03d5db329093617648b9bd55c953de0b245e64e866e560f9aac07/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3530382a43a0e524bc931f187fc69ef4c42828cf7d7f592f7f249f602b5a4ab0", size = 4385424, upload-time = "2025-06-10T00:03:29.992Z" },
|
|
446
427
|
{ url = "https://files.pythonhosted.org/packages/a6/5a/6aa9d8d5073d5acc0e04e95b2860ef2684b2bd2899d8795fc443013e263b/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:6b613164cb8425e2f8db5849ffb84892e523bf6d26deb8f9bb76ae86181fa12b", size = 4142438, upload-time = "2025-06-10T00:03:31.782Z" },
|
|
447
428
|
{ url = "https://files.pythonhosted.org/packages/42/1c/71c638420f2cdd96d9c2b287fec515faf48679b33a2b583d0f1eda3a3375/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:96d4819e25bf3b685199b304a0029ce4a3caf98947ce8a066c9137cc78ad2c58", size = 4384622, upload-time = "2025-06-10T00:03:33.491Z" },
|
|
448
|
-
{ url = "https://files.pythonhosted.org/packages/ef/ab/e3a055c34e97deadbf0d846e189237d3385dca99e1a7e27384c3b2292041/cryptography-45.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b97737a3ffbea79eebb062eb0d67d72307195035332501722a9ca86bab9e3ab2", size = 3328911, upload-time = "2025-06-10T00:03:35.035Z" },
|
|
449
|
-
{ url = "https://files.pythonhosted.org/packages/ea/ba/cf442ae99ef363855ed84b39e0fb3c106ac66b7a7703f3c9c9cfe05412cb/cryptography-45.0.4-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4828190fb6c4bcb6ebc6331f01fe66ae838bb3bd58e753b59d4b22eb444b996c", size = 3590512, upload-time = "2025-06-10T00:03:36.982Z" },
|
|
450
429
|
{ url = "https://files.pythonhosted.org/packages/28/9a/a7d5bb87d149eb99a5abdc69a41e4e47b8001d767e5f403f78bfaafc7aa7/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:03dbff8411206713185b8cebe31bc5c0eb544799a50c09035733716b386e61a4", size = 4146899, upload-time = "2025-06-10T00:03:38.659Z" },
|
|
451
430
|
{ url = "https://files.pythonhosted.org/packages/17/11/9361c2c71c42cc5c465cf294c8030e72fb0c87752bacbd7a3675245e3db3/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51dfbd4d26172d31150d84c19bbe06c68ea4b7f11bbc7b3a5e146b367c311349", size = 4388900, upload-time = "2025-06-10T00:03:40.233Z" },
|
|
452
431
|
{ url = "https://files.pythonhosted.org/packages/c0/76/f95b83359012ee0e670da3e41c164a0c256aeedd81886f878911581d852f/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:0339a692de47084969500ee455e42c58e449461e0ec845a34a6a9b9bf7df7fb8", size = 4146422, upload-time = "2025-06-10T00:03:41.827Z" },
|
|
453
432
|
{ url = "https://files.pythonhosted.org/packages/09/ad/5429fcc4def93e577a5407988f89cf15305e64920203d4ac14601a9dc876/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:0cf13c77d710131d33e63626bd55ae7c0efb701ebdc2b3a7952b9b23a0412862", size = 4388475, upload-time = "2025-06-10T00:03:43.493Z" },
|
|
454
|
-
{ url = "https://files.pythonhosted.org/packages/99/49/0ab9774f64555a1b50102757811508f5ace451cf5dc0a2d074a4b9deca6a/cryptography-45.0.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bbc505d1dc469ac12a0a064214879eac6294038d6b24ae9f71faae1448a9608d", size = 3337594, upload-time = "2025-06-10T00:03:45.523Z" },
|
|
455
433
|
]
|
|
456
434
|
|
|
457
435
|
[[package]]
|
|
@@ -509,25 +487,6 @@ wheels = [
|
|
|
509
487
|
{ url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" },
|
|
510
488
|
]
|
|
511
489
|
|
|
512
|
-
[[package]]
|
|
513
|
-
name = "fastmcp"
|
|
514
|
-
version = "2.9.2"
|
|
515
|
-
source = { registry = "https://pypi.org/simple" }
|
|
516
|
-
dependencies = [
|
|
517
|
-
{ name = "authlib" },
|
|
518
|
-
{ name = "exceptiongroup" },
|
|
519
|
-
{ name = "httpx" },
|
|
520
|
-
{ name = "mcp" },
|
|
521
|
-
{ name = "openapi-pydantic" },
|
|
522
|
-
{ name = "python-dotenv" },
|
|
523
|
-
{ name = "rich" },
|
|
524
|
-
{ name = "typer" },
|
|
525
|
-
]
|
|
526
|
-
sdist = { url = "https://files.pythonhosted.org/packages/68/17/d2b5981180717e6e689d0aaa6215d1ddcec6cb065c6f6b45c471ab7d2edb/fastmcp-2.9.2.tar.gz", hash = "sha256:c000eb0a2d50afcc7d26be4c867abf5c995ca0e0119f17417d50f61e2e17347c", size = 2663824, upload-time = "2025-06-26T15:03:15.395Z" }
|
|
527
|
-
wheels = [
|
|
528
|
-
{ url = "https://files.pythonhosted.org/packages/89/60/223e1975e65ed7c6cead0fda947d4cdb4f7ee5ec60a7c8ea3b3787868f67/fastmcp-2.9.2-py3-none-any.whl", hash = "sha256:3626a3d9b1fa6325756273b6d1fe1ec610baafec957ac22f7aa1dc17c1db8b93", size = 162690, upload-time = "2025-06-26T15:03:13.553Z" },
|
|
529
|
-
]
|
|
530
|
-
|
|
531
490
|
[[package]]
|
|
532
491
|
name = "filelock"
|
|
533
492
|
version = "3.18.0"
|
|
@@ -1107,22 +1066,24 @@ wheels = [
|
|
|
1107
1066
|
|
|
1108
1067
|
[[package]]
|
|
1109
1068
|
name = "mcp"
|
|
1110
|
-
version = "1.
|
|
1069
|
+
version = "1.12.3"
|
|
1111
1070
|
source = { registry = "https://pypi.org/simple" }
|
|
1112
1071
|
dependencies = [
|
|
1113
1072
|
{ name = "anyio" },
|
|
1114
1073
|
{ name = "httpx" },
|
|
1115
1074
|
{ name = "httpx-sse" },
|
|
1075
|
+
{ name = "jsonschema" },
|
|
1116
1076
|
{ name = "pydantic" },
|
|
1117
1077
|
{ name = "pydantic-settings" },
|
|
1118
1078
|
{ name = "python-multipart" },
|
|
1079
|
+
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
|
1119
1080
|
{ name = "sse-starlette" },
|
|
1120
1081
|
{ name = "starlette" },
|
|
1121
1082
|
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
|
1122
1083
|
]
|
|
1123
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1084
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4d/19/9955e2df5384ff5dd25d38f8e88aaf89d2d3d9d39f27e7383eaf0b293836/mcp-1.12.3.tar.gz", hash = "sha256:ab2e05f5e5c13e1dc90a4a9ef23ac500a6121362a564447855ef0ab643a99fed", size = 427203, upload-time = "2025-07-31T18:36:36.795Z" }
|
|
1124
1085
|
wheels = [
|
|
1125
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1086
|
+
{ url = "https://files.pythonhosted.org/packages/8f/8b/0be74e3308a486f1d127f3f6767de5f9f76454c9b4183210c61cc50999b6/mcp-1.12.3-py3-none-any.whl", hash = "sha256:5483345bf39033b858920a5b6348a303acacf45b23936972160ff152107b850e", size = 158810, upload-time = "2025-07-31T18:36:34.915Z" },
|
|
1126
1087
|
]
|
|
1127
1088
|
|
|
1128
1089
|
[[package]]
|
|
@@ -1332,18 +1293,6 @@ wheels = [
|
|
|
1332
1293
|
{ url = "https://files.pythonhosted.org/packages/64/46/a10d9df4673df56f71201d129ba1cb19eaff3366d08c8664d61a7df52e65/openai-1.93.0-py3-none-any.whl", hash = "sha256:3d746fe5498f0dd72e0d9ab706f26c91c0f646bf7459e5629af8ba7c9dbdf090", size = 755038, upload-time = "2025-06-27T21:21:37.532Z" },
|
|
1333
1294
|
]
|
|
1334
1295
|
|
|
1335
|
-
[[package]]
|
|
1336
|
-
name = "openapi-pydantic"
|
|
1337
|
-
version = "0.5.1"
|
|
1338
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1339
|
-
dependencies = [
|
|
1340
|
-
{ name = "pydantic" },
|
|
1341
|
-
]
|
|
1342
|
-
sdist = { url = "https://files.pythonhosted.org/packages/02/2e/58d83848dd1a79cb92ed8e63f6ba901ca282c5f09d04af9423ec26c56fd7/openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d", size = 60892, upload-time = "2025-01-08T19:29:27.083Z" }
|
|
1343
|
-
wheels = [
|
|
1344
|
-
{ url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381, upload-time = "2025-01-08T19:29:25.275Z" },
|
|
1345
|
-
]
|
|
1346
|
-
|
|
1347
1296
|
[[package]]
|
|
1348
1297
|
name = "orderly-set"
|
|
1349
1298
|
version = "5.4.1"
|
|
@@ -1693,6 +1642,28 @@ wheels = [
|
|
|
1693
1642
|
{ url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" },
|
|
1694
1643
|
]
|
|
1695
1644
|
|
|
1645
|
+
[[package]]
|
|
1646
|
+
name = "pywin32"
|
|
1647
|
+
version = "311"
|
|
1648
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1649
|
+
wheels = [
|
|
1650
|
+
{ url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" },
|
|
1651
|
+
{ url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" },
|
|
1652
|
+
{ url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" },
|
|
1653
|
+
{ url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" },
|
|
1654
|
+
{ url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" },
|
|
1655
|
+
{ url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" },
|
|
1656
|
+
{ url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" },
|
|
1657
|
+
{ url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" },
|
|
1658
|
+
{ url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" },
|
|
1659
|
+
{ url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" },
|
|
1660
|
+
{ url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" },
|
|
1661
|
+
{ url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" },
|
|
1662
|
+
{ url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" },
|
|
1663
|
+
{ url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" },
|
|
1664
|
+
{ url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" },
|
|
1665
|
+
]
|
|
1666
|
+
|
|
1696
1667
|
[[package]]
|
|
1697
1668
|
name = "pywin32-ctypes"
|
|
1698
1669
|
version = "0.2.3"
|
|
@@ -2210,21 +2181,6 @@ wheels = [
|
|
|
2210
2181
|
{ url = "https://files.pythonhosted.org/packages/92/ef/c6deb083748be3bcad6f471b6ae983950c161890bf5ae1b2af80cc56c530/trove_classifiers-2025.5.9.12-py3-none-any.whl", hash = "sha256:e381c05537adac78881c8fa345fd0e9970159f4e4a04fcc42cfd3129cca640ce", size = 14119, upload-time = "2025-05-09T12:04:46.38Z" },
|
|
2211
2182
|
]
|
|
2212
2183
|
|
|
2213
|
-
[[package]]
|
|
2214
|
-
name = "typer"
|
|
2215
|
-
version = "0.16.0"
|
|
2216
|
-
source = { registry = "https://pypi.org/simple" }
|
|
2217
|
-
dependencies = [
|
|
2218
|
-
{ name = "click" },
|
|
2219
|
-
{ name = "rich" },
|
|
2220
|
-
{ name = "shellingham" },
|
|
2221
|
-
{ name = "typing-extensions" },
|
|
2222
|
-
]
|
|
2223
|
-
sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload-time = "2025-05-26T14:30:31.824Z" }
|
|
2224
|
-
wheels = [
|
|
2225
|
-
{ url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload-time = "2025-05-26T14:30:30.523Z" },
|
|
2226
|
-
]
|
|
2227
|
-
|
|
2228
2184
|
[[package]]
|
|
2229
2185
|
name = "typing-extensions"
|
|
2230
2186
|
version = "4.14.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/__init__.py
RENAMED
|
File without changes
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/file_utils.py
RENAMED
|
File without changes
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/models.py
RENAMED
|
File without changes
|
{codeocean_mcp_server-0.3.0 → codeocean_mcp_server-0.5.0}/src/codeocean_mcp_server/tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|