mcp-openapi-proxy 0.2.1__tar.gz → 0.3.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.
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/PKG-INFO +22 -10
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/README.md +21 -9
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/server_lowlevel.py +8 -5
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/PKG-INFO +22 -10
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/pyproject.toml +1 -1
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/LICENSE +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/__init__.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/handlers.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/logging_setup.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/openapi.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/server_fastmcp.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/types.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy/utils.py +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/SOURCES.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/dependency_links.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/entry_points.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/requires.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/mcp_openapi_proxy.egg-info/top_level.txt +0 -0
- {mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/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.0
|
|
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,27 @@ 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
|
-
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native |
|
|
179
|
-
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native |
|
|
180
|
-
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | ❌
|
|
181
|
-
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | ❌ |
|
|
182
|
-
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native |
|
|
183
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | ❌ |
|
|
184
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
185
|
-
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) |
|
|
186
|
-
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native |
|
|
178
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | unknown ‡ |
|
|
179
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: ❌ † |
|
|
180
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ † |
|
|
181
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | prompts: ❌ · resources: ✅ (`access_mcp_resource`) † |
|
|
182
|
+
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native | unknown ‡ |
|
|
183
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | prompts: ❌ · resources: ❌ (tools-only) † |
|
|
184
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
185
|
+
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) | unknown ‡ |
|
|
186
|
+
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native | unknown ‡ |
|
|
187
|
+
|
|
188
|
+
> **Prompts/resources column — read this.** The original 0.2.0 sweep ran while the
|
|
189
|
+
> server advertised prompts/resources **only when `ENABLE_PROMPTS`/`ENABLE_RESOURCES`
|
|
190
|
+
> were set — they defaulted OFF.** Per the MCP spec a client won't call
|
|
191
|
+
> `prompts/list`/`resources/list` unless the capability is advertised, so those early
|
|
192
|
+
> results measured the *server's* default, not the clients. **All prior prompt/resource
|
|
193
|
+
> findings are therefore voided.** This release defaults advertising **on**.
|
|
194
|
+
>
|
|
195
|
+
> - **† re-verified 2026-06-14** with advertising on, against the real client binary. Genuine, uneven: **tools** everywhere; **prompts→model** Qwen (slash) & Gemini (interactive only); **resources→model** Kilocode. Vibe is tools-only (confirmed in source).
|
|
196
|
+
> - **‡ unknown** — not yet re-tested under advertising-on (opencode not installed here; Letta needs a running server + gateway; Codex parked). Prior ❌ values are not carried forward.
|
|
197
|
+
>
|
|
198
|
+
> Tool-calling (the `Tool calls` column) was unaffected by the advertising default and stands as originally verified.
|
|
187
199
|
|
|
188
200
|
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
201
|
|
|
@@ -153,15 +153,27 @@ 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
|
-
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native |
|
|
157
|
-
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native |
|
|
158
|
-
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | ❌
|
|
159
|
-
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | ❌ |
|
|
160
|
-
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native |
|
|
161
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | ❌ |
|
|
162
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
163
|
-
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) |
|
|
164
|
-
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native |
|
|
156
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | unknown ‡ |
|
|
157
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: ❌ † |
|
|
158
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ † |
|
|
159
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | prompts: ❌ · resources: ✅ (`access_mcp_resource`) † |
|
|
160
|
+
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native | unknown ‡ |
|
|
161
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | prompts: ❌ · resources: ❌ (tools-only) † |
|
|
162
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
163
|
+
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) | unknown ‡ |
|
|
164
|
+
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native | unknown ‡ |
|
|
165
|
+
|
|
166
|
+
> **Prompts/resources column — read this.** The original 0.2.0 sweep ran while the
|
|
167
|
+
> server advertised prompts/resources **only when `ENABLE_PROMPTS`/`ENABLE_RESOURCES`
|
|
168
|
+
> were set — they defaulted OFF.** Per the MCP spec a client won't call
|
|
169
|
+
> `prompts/list`/`resources/list` unless the capability is advertised, so those early
|
|
170
|
+
> results measured the *server's* default, not the clients. **All prior prompt/resource
|
|
171
|
+
> findings are therefore voided.** This release defaults advertising **on**.
|
|
172
|
+
>
|
|
173
|
+
> - **† re-verified 2026-06-14** with advertising on, against the real client binary. Genuine, uneven: **tools** everywhere; **prompts→model** Qwen (slash) & Gemini (interactive only); **resources→model** Kilocode. Vibe is tools-only (confirmed in source).
|
|
174
|
+
> - **‡ unknown** — not yet re-tested under advertising-on (opencode not installed here; Letta needs a running server + gateway; Codex parked). Prior ❌ values are not carried forward.
|
|
175
|
+
>
|
|
176
|
+
> Tool-calling (the `Tool calls` column) was unaffected by the advertising default and stands as originally verified.
|
|
165
177
|
|
|
166
178
|
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
179
|
|
|
@@ -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.0
|
|
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,27 @@ 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
|
-
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native |
|
|
179
|
-
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native |
|
|
180
|
-
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | ❌
|
|
181
|
-
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | ❌ |
|
|
182
|
-
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native |
|
|
183
|
-
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | ❌ |
|
|
184
|
-
| agy | — | — | ❌ headless cannot enable MCP |
|
|
185
|
-
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) |
|
|
186
|
-
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native |
|
|
178
|
+
| Codex | `gpt-5-codex` (OpenAI API) | `codex exec -c mcp_servers.*` | ✅ native | unknown ‡ |
|
|
179
|
+
| Gemini | Google OAuth free tier (CLI default model) | project `.gemini/settings.json` `mcpServers` | ✅ native | prompts: interactive slash only · resources: ❌ † |
|
|
180
|
+
| Qwen | `agent` group via local LiteLLM gateway | project `.qwen/settings.json` | ✅ native | prompts: ✅ (slash `/summarize_spec`) · resources: ❌ † |
|
|
181
|
+
| Kilocode | `kilo-auto/free` | global `settings/mcp_settings.json`, clean workspace | ✅ native | prompts: ❌ · resources: ✅ (`access_mcp_resource`) † |
|
|
182
|
+
| opencode | `orchestration` group via local LiteLLM gateway | `~/.config/opencode/opencode.json` `mcp` | ✅ native | unknown ‡ |
|
|
183
|
+
| Vibe | `mistral-medium-3.5` | `~/.vibe/config.toml` `[[mcp_servers]]` | ✅ discovery + reads (writes flaky) | prompts: ❌ · resources: ❌ (tools-only) † |
|
|
184
|
+
| agy | — | — | ❌ headless cannot enable MCP | n/a |
|
|
185
|
+
| letta cloud | Letta Cloud default | streamable-HTTP MCP URL (`/mcp add --transport http` + bearer) | ✅ remote (stdio rejected) | unknown ‡ |
|
|
186
|
+
| letta (self-hosted ≤0.11.x) | `agent` group via local LiteLLM gateway | stdio via `PUT /v1/tools/mcp/servers` | ✅ native | unknown ‡ |
|
|
187
|
+
|
|
188
|
+
> **Prompts/resources column — read this.** The original 0.2.0 sweep ran while the
|
|
189
|
+
> server advertised prompts/resources **only when `ENABLE_PROMPTS`/`ENABLE_RESOURCES`
|
|
190
|
+
> were set — they defaulted OFF.** Per the MCP spec a client won't call
|
|
191
|
+
> `prompts/list`/`resources/list` unless the capability is advertised, so those early
|
|
192
|
+
> results measured the *server's* default, not the clients. **All prior prompt/resource
|
|
193
|
+
> findings are therefore voided.** This release defaults advertising **on**.
|
|
194
|
+
>
|
|
195
|
+
> - **† re-verified 2026-06-14** with advertising on, against the real client binary. Genuine, uneven: **tools** everywhere; **prompts→model** Qwen (slash) & Gemini (interactive only); **resources→model** Kilocode. Vibe is tools-only (confirmed in source).
|
|
196
|
+
> - **‡ unknown** — not yet re-tested under advertising-on (opencode not installed here; Letta needs a running server + gateway; Codex parked). Prior ❌ values are not carried forward.
|
|
197
|
+
>
|
|
198
|
+
> Tool-calling (the `Tool calls` column) was unaffected by the advertising default and stands as originally verified.
|
|
187
199
|
|
|
188
200
|
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
201
|
|
|
@@ -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.0"
|
|
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.0}/mcp_openapi_proxy.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{mcp_openapi_proxy-0.2.1 → mcp_openapi_proxy-0.3.0}/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.0}/mcp_openapi_proxy.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|