mcp-openapi-proxy 0.2.1__tar.gz → 0.3.1__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.
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/PKG-INFO +27 -10
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/README.md +26 -9
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/server_lowlevel.py +8 -5
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/PKG-INFO +27 -10
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/pyproject.toml +1 -1
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/LICENSE +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/__init__.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/handlers.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/logging_setup.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/openapi.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/server_fastmcp.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/types.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy/utils.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/SOURCES.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/dependency_links.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/entry_points.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/requires.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/top_level.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-openapi-proxy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: MCP server for exposing OpenAPI specifications as MCP tools.
|
|
5
5
|
Author-email: Matthew Hand <11550632+matthewhand@users.noreply.github.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -175,15 +175,32 @@ The example configurations below were exercised against the live APIs, and the p
|
|
|
175
175
|
|
|
176
176
|
| Agent CLI | Model used (live test) | MCP attach mechanism | Tool calls | Prompts/Resources surfaced to model? |
|
|
177
177
|
|---|---|---|---|---|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (
|
|
184
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
185
|
-
| letta cloud | Letta Cloud
|
|
186
|
-
|
|
178
|
+
| **opencode** | (CLI default) | `~/.config/opencode/opencode.json` `mcp` | ✅ native | **prompts: ✅ (slash) · resources: ✅** — most complete ‖ |
|
|
179
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | prompts: ❌ (no prompt meta-tools) · resources: ✅ (`read_mcp_resource`) ‖ |
|
|
180
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json` | ✅ native | prompts: ❌ (no prompt mechanism) · resources: ✅ (`access_mcp_resource`) ‖ |
|
|
181
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native (live invoke auth-blocked) | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ (no client support) ‖ |
|
|
182
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: interactive `@` only (neither reaches the model headless) ‖ |
|
|
183
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads | prompts: ❌ · resources: ❌ (tools-only client) ‖ |
|
|
184
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
185
|
+
| letta (cloud / self-hosted) | Letta Cloud / `PUT /v1/tools/mcp/servers` | streamable-HTTP / stdio | ✅ (per prior sweep) | unknown — needs a running Letta server to test ‡ |
|
|
186
|
+
|
|
187
|
+
> **How to read the prompts/resources column.** MCP has three surfaces — tools, prompts,
|
|
188
|
+
> resources. **mcp-openapi-proxy serves all three, advertised by default since 0.3.0.**
|
|
189
|
+
> Whether they reach the model is up to the *client*, and that varies:
|
|
190
|
+
>
|
|
191
|
+
> - **‖ re-verified 2026-06-14 against the published 0.3.0 release** with **no** flags set
|
|
192
|
+
> (validating the default-on advertising), driving each **real client binary**.
|
|
193
|
+
> - **Tools** work on every client tested. **Prompts→model**: opencode & Qwen (slash
|
|
194
|
+
> commands); Gemini interactive-only. **Resources→model**: opencode, Codex, Kilocode.
|
|
195
|
+
> **opencode is the only client that surfaces all three.** Vibe is tools-only.
|
|
196
|
+
> - **‡ unknown** — Letta can't be exercised without standing up a Letta server + model;
|
|
197
|
+
> left untested rather than guessed.
|
|
198
|
+
> - Every cell on the proxy side was confirmed via a raw stdio handshake (`initialize`
|
|
199
|
+
> advertises tools+prompts+resources; `prompts/get` and `resources/read` return content).
|
|
200
|
+
> The remaining ❌ are **client-side** gaps, not proxy limitations.
|
|
201
|
+
>
|
|
202
|
+
> *(All pre-0.3.0 prompt/resource findings were voided — they were measured while
|
|
203
|
+
> advertising defaulted off, so they reflected the server default, not the clients.)*
|
|
187
204
|
|
|
188
205
|
Minimal sanitized configs per client (the no-auth Glama spec is used as the smallest working example; substitute your own spec URL and `$YOUR_KEY` as needed):
|
|
189
206
|
|
|
@@ -153,15 +153,32 @@ The example configurations below were exercised against the live APIs, and the p
|
|
|
153
153
|
|
|
154
154
|
| Agent CLI | Model used (live test) | MCP attach mechanism | Tool calls | Prompts/Resources surfaced to model? |
|
|
155
155
|
|---|---|---|---|---|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (
|
|
162
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
163
|
-
| letta cloud | Letta Cloud
|
|
164
|
-
|
|
156
|
+
| **opencode** | (CLI default) | `~/.config/opencode/opencode.json` `mcp` | ✅ native | **prompts: ✅ (slash) · resources: ✅** — most complete ‖ |
|
|
157
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | prompts: ❌ (no prompt meta-tools) · resources: ✅ (`read_mcp_resource`) ‖ |
|
|
158
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json` | ✅ native | prompts: ❌ (no prompt mechanism) · resources: ✅ (`access_mcp_resource`) ‖ |
|
|
159
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native (live invoke auth-blocked) | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ (no client support) ‖ |
|
|
160
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: interactive `@` only (neither reaches the model headless) ‖ |
|
|
161
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads | prompts: ❌ · resources: ❌ (tools-only client) ‖ |
|
|
162
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
163
|
+
| letta (cloud / self-hosted) | Letta Cloud / `PUT /v1/tools/mcp/servers` | streamable-HTTP / stdio | ✅ (per prior sweep) | unknown — needs a running Letta server to test ‡ |
|
|
164
|
+
|
|
165
|
+
> **How to read the prompts/resources column.** MCP has three surfaces — tools, prompts,
|
|
166
|
+
> resources. **mcp-openapi-proxy serves all three, advertised by default since 0.3.0.**
|
|
167
|
+
> Whether they reach the model is up to the *client*, and that varies:
|
|
168
|
+
>
|
|
169
|
+
> - **‖ re-verified 2026-06-14 against the published 0.3.0 release** with **no** flags set
|
|
170
|
+
> (validating the default-on advertising), driving each **real client binary**.
|
|
171
|
+
> - **Tools** work on every client tested. **Prompts→model**: opencode & Qwen (slash
|
|
172
|
+
> commands); Gemini interactive-only. **Resources→model**: opencode, Codex, Kilocode.
|
|
173
|
+
> **opencode is the only client that surfaces all three.** Vibe is tools-only.
|
|
174
|
+
> - **‡ unknown** — Letta can't be exercised without standing up a Letta server + model;
|
|
175
|
+
> left untested rather than guessed.
|
|
176
|
+
> - Every cell on the proxy side was confirmed via a raw stdio handshake (`initialize`
|
|
177
|
+
> advertises tools+prompts+resources; `prompts/get` and `resources/read` return content).
|
|
178
|
+
> The remaining ❌ are **client-side** gaps, not proxy limitations.
|
|
179
|
+
>
|
|
180
|
+
> *(All pre-0.3.0 prompt/resource findings were voided — they were measured while
|
|
181
|
+
> advertising defaulted off, so they reflected the server default, not the clients.)*
|
|
165
182
|
|
|
166
183
|
Minimal sanitized configs per client (the no-auth Glama spec is used as the smallest working example; substitute your own spec URL and `$YOUR_KEY` as needed):
|
|
167
184
|
|
|
@@ -14,8 +14,8 @@ Configuration is controlled via environment variables:
|
|
|
14
14
|
- CAPABILITIES_RESOURCES: Set to "true" to enable resources advertising (default: false).
|
|
15
15
|
- CAPABILITIES_PROMPTS: Set to "true" to enable prompts advertising (default: false).
|
|
16
16
|
- ENABLE_TOOLS: Set to "false" to disable tools functionality (default: true).
|
|
17
|
-
- ENABLE_RESOURCES: Set to "
|
|
18
|
-
- ENABLE_PROMPTS: Set to "
|
|
17
|
+
- ENABLE_RESOURCES: Set to "false" to disable resources functionality (default: true).
|
|
18
|
+
- ENABLE_PROMPTS: Set to "false" to disable prompts functionality (default: true).
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
import os
|
|
@@ -53,10 +53,13 @@ CAPABILITIES_TOOLS = os.getenv("CAPABILITIES_TOOLS", "false").lower() == "true"
|
|
|
53
53
|
CAPABILITIES_RESOURCES = os.getenv("CAPABILITIES_RESOURCES", "false").lower() == "true"
|
|
54
54
|
CAPABILITIES_PROMPTS = os.getenv("CAPABILITIES_PROMPTS", "false").lower() == "true"
|
|
55
55
|
|
|
56
|
-
#
|
|
56
|
+
# Feature enablement (all on by default). Advertising a capability is
|
|
57
|
+
# required for clients to even attempt prompts/list & resources/list;
|
|
58
|
+
# defaulting these OFF made prompts/resources invisible to every client
|
|
59
|
+
# despite being implemented. Set to "false" to opt out.
|
|
57
60
|
ENABLE_TOOLS = os.getenv("ENABLE_TOOLS", "true").lower() == "true"
|
|
58
|
-
ENABLE_RESOURCES = os.getenv("ENABLE_RESOURCES", "
|
|
59
|
-
ENABLE_PROMPTS = os.getenv("ENABLE_PROMPTS", "
|
|
61
|
+
ENABLE_RESOURCES = os.getenv("ENABLE_RESOURCES", "true").lower() == "true"
|
|
62
|
+
ENABLE_PROMPTS = os.getenv("ENABLE_PROMPTS", "true").lower() == "true"
|
|
60
63
|
|
|
61
64
|
# Resource and prompt DEFINITIONS are always present so the feature is
|
|
62
65
|
# deterministically testable. Whether they are EXPOSED to clients is gated
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-openapi-proxy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: MCP server for exposing OpenAPI specifications as MCP tools.
|
|
5
5
|
Author-email: Matthew Hand <11550632+matthewhand@users.noreply.github.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -175,15 +175,32 @@ The example configurations below were exercised against the live APIs, and the p
|
|
|
175
175
|
|
|
176
176
|
| Agent CLI | Model used (live test) | MCP attach mechanism | Tool calls | Prompts/Resources surfaced to model? |
|
|
177
177
|
|---|---|---|---|---|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (
|
|
184
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
185
|
-
| letta cloud | Letta Cloud
|
|
186
|
-
|
|
178
|
+
| **opencode** | (CLI default) | `~/.config/opencode/opencode.json` `mcp` | ✅ native | **prompts: ✅ (slash) · resources: ✅** — most complete ‖ |
|
|
179
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | prompts: ❌ (no prompt meta-tools) · resources: ✅ (`read_mcp_resource`) ‖ |
|
|
180
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json` | ✅ native | prompts: ❌ (no prompt mechanism) · resources: ✅ (`access_mcp_resource`) ‖ |
|
|
181
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native (live invoke auth-blocked) | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ (no client support) ‖ |
|
|
182
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: interactive `@` only (neither reaches the model headless) ‖ |
|
|
183
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads | prompts: ❌ · resources: ❌ (tools-only client) ‖ |
|
|
184
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
185
|
+
| letta (cloud / self-hosted) | Letta Cloud / `PUT /v1/tools/mcp/servers` | streamable-HTTP / stdio | ✅ (per prior sweep) | unknown — needs a running Letta server to test ‡ |
|
|
186
|
+
|
|
187
|
+
> **How to read the prompts/resources column.** MCP has three surfaces — tools, prompts,
|
|
188
|
+
> resources. **mcp-openapi-proxy serves all three, advertised by default since 0.3.0.**
|
|
189
|
+
> Whether they reach the model is up to the *client*, and that varies:
|
|
190
|
+
>
|
|
191
|
+
> - **‖ re-verified 2026-06-14 against the published 0.3.0 release** with **no** flags set
|
|
192
|
+
> (validating the default-on advertising), driving each **real client binary**.
|
|
193
|
+
> - **Tools** work on every client tested. **Prompts→model**: opencode & Qwen (slash
|
|
194
|
+
> commands); Gemini interactive-only. **Resources→model**: opencode, Codex, Kilocode.
|
|
195
|
+
> **opencode is the only client that surfaces all three.** Vibe is tools-only.
|
|
196
|
+
> - **‡ unknown** — Letta can't be exercised without standing up a Letta server + model;
|
|
197
|
+
> left untested rather than guessed.
|
|
198
|
+
> - Every cell on the proxy side was confirmed via a raw stdio handshake (`initialize`
|
|
199
|
+
> advertises tools+prompts+resources; `prompts/get` and `resources/read` return content).
|
|
200
|
+
> The remaining ❌ are **client-side** gaps, not proxy limitations.
|
|
201
|
+
>
|
|
202
|
+
> *(All pre-0.3.0 prompt/resource findings were voided — they were measured while
|
|
203
|
+
> advertising defaulted off, so they reflected the server default, not the clients.)*
|
|
187
204
|
|
|
188
205
|
Minimal sanitized configs per client (the no-auth Glama spec is used as the smallest working example; substitute your own spec URL and `$YOUR_KEY` as needed):
|
|
189
206
|
|
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mcp-openapi-proxy"
|
|
7
7
|
requires-python = ">=3.10"
|
|
8
|
-
version = "0.
|
|
8
|
+
version = "0.3.1"
|
|
9
9
|
description = "MCP server for exposing OpenAPI specifications as MCP tools."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
authors = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.1}/mcp_openapi_proxy.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|