Python: Clarify remote MCP setup in sample guide - #14379
Python: Clarify remote MCP setup in sample guide#14379George Pickett (georgeatparallel) wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
This is a low-risk, README-only clarification with only minor consistency/naming nits to consider.
Pull request overview
This PR updates the Python MCP sample guide to better explain connecting to a remote MCP server via the Streamable HTTP transport (without running a local server process), including a concrete usage snippet.
Changes:
- Updates the transport list to include Streamable HTTP.
- Adds a “Connecting to a remote Streamable HTTP server” section with an example using
MCPStreamableHttpPlugin(Parallel Search MCP) and brief usage notes.
File summaries
| File | Description |
|---|---|
| python/samples/concepts/mcp/README.md | Clarifies supported transports and adds a remote Streamable HTTP connection example/snippet. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| ## Server types | ||
|
|
||
| There are two types of servers, Stdio and Sse based. The sample shows how to use the Stdio based server, which get's run locally, in this case by using [npx](https://docs.npmjs.com/cli/v8/commands/npx). | ||
| The samples support Stdio, SSE, and Streamable HTTP transports. A Stdio server runs locally, for example by using [npx](https://docs.npmjs.com/cli/v8/commands/npx). |
There was a problem hiding this comment.
Fixed in 89448fd. The prose now uses SSE consistently; MCPSsePlugin keeps its actual API spelling.
| kernel = Kernel() | ||
| functions = kernel.add_plugin(plugin) | ||
| print(sorted(functions.functions)) |
There was a problem hiding this comment.
Fixed in 89448fd. The connection is now mcp_plugin and the KernelPlugin returned by add_plugin is plugin. The snippet compiles, and its AST is unchanged apart from those local names.
Motivation and Context
The MCP sample guide names
MCPStreamableHttpPluginbut does not show how to connect to a hosted server without starting a local process. This adds a short usage example with Parallel Search MCP using the existing client API.SK doesn't enable a search provider automatically: the Kernel starts with no plugins, and apps register web-search connectors explicitly. Of the existing Bing, Google, Brave, and Tavily connectors, Brave and Tavily appear on Artificial Analysis's leaderboard. These are API connectors, not bundled search MCP servers.
The scores are a good reason to make Parallel easier to try. In Artificial Analysis's Search API benchmark, checked September 4, Parallel advanced scores 74.8 overall, compared with 65.6 for Tavily basic and 64.6 for Brave web. The biggest gaps are in specific tasks: 80.6 vs. 62.3 on DeepSearchQA F1 against Brave web, and 76.5% vs. 58.5% on BrowseComp accuracy against Tavily basic. Enable the Brave web and Tavily basic rows in the leaderboard to see those comparisons.
Brave web matches the endpoint used here; AA does not report Tavily advanced. These are API results in AA's own search-agent harness, not a benchmark of this free MCP connection or SK agents. They support trying the integration, without promising the same scores here.
Description
The README shows anonymous connection and tool registration, links to the existing HTTP agent sample, and explains that agent credentials are separate from Parallel access. It also corrects the transport list to include Streamable HTTP.
The example exposes
web_searchandweb_fetch. When tools run, queries, requested URLs, and supplied context go to Parallel. Anonymous access is rate limited. Existing samples and runtime behavior are unchanged.I work at Parallel, which operates this service.
Validation: ran the exact README snippet with Semantic Kernel 1.44.1 and MCP 1.29.1, then invoked both tools through
Kernel.invokewithout Parallel credentials. Search returned 10 results and fetch returned one page. Tool discovery, registration, and context cleanup passed. The relevant installed MCP and Kernel source files match the inspected repository revision. Snippet syntax, public/relative links, andgit diff --checkalso pass.The repository was not built and the full test suite was not run. Runtime dependencies used prebuilt wheels except
pybars4andPyMeta3, whose published pure-Python sources were loaded directly without running their setup scripts. A wheels-only installation could not resolve those dependencies.Contribution Checklist
This is a README-only clarification of existing APIs under the trivial-change exception. Broad build/test checklist items remain unchecked because they were not run.