Skip to content

Python: Clarify remote MCP setup in sample guide - #14379

Open
George Pickett (georgeatparallel) wants to merge 2 commits into
microsoft:mainfrom
georgeatparallel:docs/remote-mcp-setup
Open

Python: Clarify remote MCP setup in sample guide#14379
George Pickett (georgeatparallel) wants to merge 2 commits into
microsoft:mainfrom
georgeatparallel:docs/remote-mcp-setup

Conversation

@georgeatparallel

@georgeatparallel George Pickett (georgeatparallel) commented Sep 5, 2026

Copy link
Copy Markdown

Motivation and Context

The MCP sample guide names MCPStreamableHttpPlugin but 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_search and web_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.invoke without 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, and git diff --check also pass.

The repository was not built and the full test suite was not run. Runtime dependencies used prebuilt wheels except pybars4 and PyMeta3, 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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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).

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 89448fd. The prose now uses SSE consistently; MCPSsePlugin keeps its actual API spelling.

Comment thread python/samples/concepts/mcp/README.md Outdated
Comment on lines +38 to +40
kernel = Kernel()
functions = kernel.add_plugin(plugin)
print(sorted(functions.functions))

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants