codeocean-mcp-server 0.2.0__tar.gz → 0.4.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.
Files changed (25) hide show
  1. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/.gitignore +8 -0
  2. codeocean_mcp_server-0.4.0/CHANGELOG.md +19 -0
  3. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/PKG-INFO +15 -9
  4. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/README.md +12 -6
  5. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/pyproject.toml +3 -3
  6. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/server.py +3 -2
  7. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/uv.lock +34 -78
  8. codeocean_mcp_server-0.2.0/.cci_pycache/lockfile +0 -2526
  9. codeocean_mcp_server-0.2.0/.temp-python-version +0 -1
  10. codeocean_mcp_server-0.2.0/CHANGELOG.md +0 -10
  11. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/.python-version +0 -0
  12. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/LICENSE +0 -0
  13. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/RELEASE.md +0 -0
  14. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/__init__.py +0 -0
  15. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/file_utils.py +0 -0
  16. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/models.py +0 -0
  17. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/tools/__init__.py +0 -0
  18. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/tools/capsules.py +0 -0
  19. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/tools/computations.py +0 -0
  20. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/src/codeocean_mcp_server/tools/data_assets.py +0 -0
  21. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/tests/bedrock_call.py +0 -0
  22. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/tests/bedrock_tools_converter.py +0 -0
  23. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/tests/mcp_client.py +0 -0
  24. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/tests/test_multi_tool_calling.py +0 -0
  25. {codeocean_mcp_server-0.2.0 → codeocean_mcp_server-0.4.0}/tests/test_tool_calling.py +0 -0
@@ -172,3 +172,11 @@ cython_debug/
172
172
 
173
173
  # PyPI configuration file
174
174
  .pypirc
175
+
176
+ # macOS
177
+ .DS_Store
178
+ *.DS_Store
179
+
180
+ # CI
181
+ .cci_pycache/
182
+ .temp-python-version
@@ -0,0 +1,19 @@
1
+ CHANGELOG
2
+ =========
3
+
4
+ ## 0.4.0 (2025-08-04)
5
+
6
+ - [#7](https://github.com/codeocean/codeocean-mcp-server/pull/7) fix: pin mcp package dependency
7
+
8
+ ## 0.3.0 (2025-07-14)
9
+
10
+ - [#5](https://github.com/codeocean/codeocean-mcp-server/pull/5) feat: Add support for AI agent ID in server configuration
11
+ - [#4](https://github.com/codeocean/codeocean-mcp-server/pull/4) fix: ignore CI artifacts in sdist
12
+
13
+ ## 0.2.0 (2025-07-02)
14
+
15
+ - [#2](https://github.com/codeocean/codeocean-mcp-server/pull/2) fix: return native client objects instead of Pydantic models
16
+
17
+ ## 0.1.0 (2025-07-01)
18
+
19
+ - [#1](https://github.com/codeocean/codeocean-mcp-server/pull/1) Initial version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeocean-mcp-server
3
- Version: 0.2.0
3
+ Version: 0.4.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.7.0
16
- Requires-Dist: fastmcp>=2.9.2
15
+ Requires-Dist: codeocean<0.9.0,>=0.8.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
@@ -63,7 +63,8 @@ Here's an example VS Code MCP server configuration:
63
63
  "args": ["codeocean-mcp-server"],
64
64
  "env": {
65
65
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
66
- "CODEOCEAN_TOKEN": "${input:codeocean-token}"
66
+ "CODEOCEAN_TOKEN": "${input:codeocean-token}",
67
+ "AGENT_ID": "VS Code"
67
68
  }
68
69
  }
69
70
  },
@@ -88,7 +89,8 @@ Here's an example VS Code MCP server configuration:
88
89
  "args": ["codeocean-mcp-server"],
89
90
  "env": {
90
91
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
91
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
92
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
93
+ "AGENT_ID": "Claude Desktop"
92
94
  }
93
95
  }
94
96
  }
@@ -111,7 +113,8 @@ Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.js
111
113
  "args": ["codeocean-mcp-server"],
112
114
  "env": {
113
115
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
114
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
116
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
117
+ "AGENT_ID": "Cline"
115
118
  },
116
119
  "alwaysAllow": [], // optional: list of tools to auto-approve
117
120
  "disabled": false // ensure it’s enabled
@@ -140,7 +143,8 @@ Roo Code’s MCP support is configured globally across all workspaces via a JSON
140
143
  "args": ["codeocean-mcp-server"],
141
144
  "env": {
142
145
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
143
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
146
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
147
+ "AGENT_ID": "Roo Code"
144
148
  }
145
149
  }
146
150
  }
@@ -168,7 +172,8 @@ Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) o
168
172
  "args": ["codeocean-mcp-server"],
169
173
  "env": {
170
174
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
171
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
175
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
176
+ "AGENT_ID": "Cursor"
172
177
  }
173
178
  }
174
179
  }
@@ -191,7 +196,8 @@ Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the C
191
196
  "args": ["codeocean-mcp-server"],
192
197
  "env": {
193
198
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
194
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
199
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
200
+ "AGENT_ID": "Windsurf"
195
201
  }
196
202
  }
197
203
  }
@@ -45,7 +45,8 @@ Here's an example VS Code MCP server configuration:
45
45
  "args": ["codeocean-mcp-server"],
46
46
  "env": {
47
47
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
48
- "CODEOCEAN_TOKEN": "${input:codeocean-token}"
48
+ "CODEOCEAN_TOKEN": "${input:codeocean-token}",
49
+ "AGENT_ID": "VS Code"
49
50
  }
50
51
  }
51
52
  },
@@ -70,7 +71,8 @@ Here's an example VS Code MCP server configuration:
70
71
  "args": ["codeocean-mcp-server"],
71
72
  "env": {
72
73
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
73
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
74
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
75
+ "AGENT_ID": "Claude Desktop"
74
76
  }
75
77
  }
76
78
  }
@@ -93,7 +95,8 @@ Cline stores all of its MCP settings in a JSON file called cline_mcp_settings.js
93
95
  "args": ["codeocean-mcp-server"],
94
96
  "env": {
95
97
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
96
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
98
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
99
+ "AGENT_ID": "Cline"
97
100
  },
98
101
  "alwaysAllow": [], // optional: list of tools to auto-approve
99
102
  "disabled": false // ensure it’s enabled
@@ -122,7 +125,8 @@ Roo Code’s MCP support is configured globally across all workspaces via a JSON
122
125
  "args": ["codeocean-mcp-server"],
123
126
  "env": {
124
127
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
125
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
128
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
129
+ "AGENT_ID": "Roo Code"
126
130
  }
127
131
  }
128
132
  }
@@ -150,7 +154,8 @@ Cursor stores MCP servers in a JSON file at either ~/.cursor/mcp.json (global) o
150
154
  "args": ["codeocean-mcp-server"],
151
155
  "env": {
152
156
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
153
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
157
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
158
+ "AGENT_ID": "Cursor"
154
159
  }
155
160
  }
156
161
  }
@@ -173,7 +178,8 @@ Windsurf (Cascade) uses mcp_config.json under ~/.codeium/windsurf/ (or via the C
173
178
  "args": ["codeocean-mcp-server"],
174
179
  "env": {
175
180
  "CODEOCEAN_DOMAIN": "https://codeocean.acme.com",
176
- "CODEOCEAN_TOKEN": "<YOUR_API_KEY>"
181
+ "CODEOCEAN_TOKEN": "<YOUR_API_KEY>",
182
+ "AGENT_ID": "Windsurf"
177
183
  }
178
184
  }
179
185
  }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codeocean-mcp-server"
3
- version = "0.2.0"
3
+ version = "0.4.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.7.0",
15
- "fastmcp>=2.9.2",
14
+ "codeocean>=0.8.0,<0.9.0",
15
+ "mcp>=1.12.0,<1.13.0",
16
16
  ]
17
17
  license = "MIT"
18
18
 
@@ -15,11 +15,12 @@ def main():
15
15
  "Environment variables CODEOCEAN_DOMAIN and "
16
16
  "CODEOCEAN_TOKEN must be set."
17
17
  )
18
- client = CodeOcean(domain=domain, token=token)
18
+ agent_id = os.getenv("AGENT_ID", "AI Agent")
19
+ client = CodeOcean(domain=domain, token=token, agent_id=agent_id)
19
20
 
20
21
  mcp = FastMCP(
21
22
  name="Code Ocean",
22
- description=(
23
+ instructions=(
23
24
  f"MCP server for Code Ocean: search & run capsules, "
24
25
  f"pipelines, and assets using Code Ocean domain {domain}."
25
26
  ),
@@ -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.7.0"
341
+ version = "0.8.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/be/80/d6d7adb680439c612fb4bcf82744dd4d8f62b92b2cef91922de9132140a2/codeocean-0.7.0.tar.gz", hash = "sha256:1797c37d1ba4d60eb4215455eca4d094d6e4564010eafca75601479e0353030d", size = 14477, upload-time = "2025-06-24T21:55:46.971Z" }
349
+ sdist = { url = "https://files.pythonhosted.org/packages/e6/66/c947525bd7bdbc8dd337b3ab0badd4be9c47a4869404640c6e000e3ec5a8/codeocean-0.8.0.tar.gz", hash = "sha256:fbbff4de028f034495584731ca3a4830d9a90a97b88839cfe16aeaebb5caa561", size = 15530, upload-time = "2025-07-11T16:50:17.372Z" }
362
350
  wheels = [
363
- { url = "https://files.pythonhosted.org/packages/4f/51/f1eb42ec8eccea8febb82e2346833204ee0dd2959daeee72123c284dc8b3/codeocean-0.7.0-py3-none-any.whl", hash = "sha256:b0fd9869db25399cc01388cf1fdaaeebeaf7faa53463496354e38f561f0050aa", size = 15959, upload-time = "2025-06-24T21:55:47.663Z" },
351
+ { url = "https://files.pythonhosted.org/packages/9e/16/d8a220ef5ea2f938be973394f23687208dcfb3ba737c022e88f3d6a97134/codeocean-0.8.0-py3-none-any.whl", hash = "sha256:73feba7c9c2c03a21ba07feaf0e946e3087d2d29af38efbd61d452dd7a8ef1a5", size = 16365, upload-time = "2025-07-11T16:50:18.622Z" },
364
352
  ]
365
353
 
366
354
  [[package]]
367
355
  name = "codeocean-mcp-server"
368
- version = "0.2.0"
356
+ version = "0.4.0"
369
357
  source = { editable = "." }
370
358
  dependencies = [
371
359
  { name = "codeocean" },
372
- { name = "fastmcp" },
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.7.0" },
388
- { name = "fastmcp", specifier = ">=2.9.2" },
375
+ { name = "codeocean", specifier = ">=0.8.0,<0.9.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.9.4"
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/06/f2/dc2450e566eeccf92d89a00c3e813234ad58e2ba1e31d11467a09ac4f3b9/mcp-1.9.4.tar.gz", hash = "sha256:cfb0bcd1a9535b42edaef89947b9e18a8feb49362e1cc059d6e7fc636f2cb09f", size = 333294, upload-time = "2025-06-12T08:20:30.158Z" }
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/97/fc/80e655c955137393c443842ffcc4feccab5b12fa7cb8de9ced90f90e6998/mcp-1.9.4-py3-none-any.whl", hash = "sha256:7fcf36b62936adb8e63f89346bccca1268eeca9bf6dfb562ee10b1dfbda9dac0", size = 130232, upload-time = "2025-06-12T08:20:28.551Z" },
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"