Skip to content

Python: Introducing support for using a MCP server as a plugin #11334

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Apr 3, 2025

Conversation

eavanvalkenburg
Copy link
Member

@eavanvalkenburg eavanvalkenburg commented Apr 2, 2025

Motivation and Context

Adds MCP server configs and a function that turns the server into a plugin, with each tools of the server represented as a function.
Adds a sample showing how to use that with a Github MCP server.

Closes: #10785 and #11190

With special thanks to @nmoeller

Description

Contribution Checklist

@eavanvalkenburg eavanvalkenburg requested a review from a team as a code owner April 2, 2025 12:06
@markwallace-microsoft markwallace-microsoft added the python Pull requests for the Python Semantic Kernel label Apr 2, 2025
@markwallace-microsoft
Copy link
Member

markwallace-microsoft commented Apr 2, 2025

Python Test Coverage

Python Test Coverage Report •
FileStmtsMissCoverMissing
semantic_kernel/connectors
   mcp.py1744972%46, 58, 66–77, 88–90, 151–153, 164–165, 177–178, 180–184, 200–211, 215–225, 234–236, 292, 294, 344, 346, 348, 350, 391
semantic_kernel/functions
   kernel_plugin.py183697%396, 399, 412, 437, 458, 483
TOTAL22305276188% 

Python Unit Test Overview

Tests Skipped Failures Errors Time
3405 5 💤 0 ❌ 0 🔥 1m 33s ⏱️

moonbox3
moonbox3 previously approved these changes Apr 3, 2025
Copy link
Contributor

@moonbox3 moonbox3 left a comment

Choose a reason for hiding this comment

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

LGTM, a few small comments.

@moonbox3
Copy link
Contributor

moonbox3 commented Apr 3, 2025

Is this an extension of the python-mcp feature branch? #10778

@eavanvalkenburg
Copy link
Member Author

Is this an extension of the python-mcp feature branch? #10778

It replaces that branch, had some issues with it, was easier to redo from a fresh branch and PR

@eavanvalkenburg eavanvalkenburg force-pushed the mcp2 branch 2 times, most recently from b7ddadc to 52473f1 Compare April 3, 2025 12:43
alliscode
alliscode previously approved these changes Apr 3, 2025
TaoChenOSU
TaoChenOSU previously approved these changes Apr 3, 2025
@eavanvalkenburg eavanvalkenburg added this pull request to the merge queue Apr 3, 2025
@eavanvalkenburg eavanvalkenburg dismissed stale reviews from TaoChenOSU and alliscode via 6d7558e April 3, 2025 17:49
auto-merge was automatically disabled April 3, 2025 17:53

Pull Request is not mergeable

@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Apr 3, 2025
nmoeller and others added 7 commits April 3, 2025 19:56
With MCP getting more and more popular, i thought it's a cool idea to
have plugins loaded and executed remotely with Semantic Kernel.

What is included ?
- Sample on how to use a MCP Server with Semantic Kernel
- New Connector that can read Tools from the MCP Server
- The Connector creates a Plugin with the corresponding MCP Tools
- Connection can be done via stdio & sse

What is **not** included ?
- Loading of Resources, Prompts etc.
- Handling Authentication to the MCP Server

What needs to be done ?
- [x] Load MCP Tools as Plugins
- [x] Enhance Parameter Parsing between KernelParameters and MCP Tool
Parameters
- [x] Add Unit Tests
- [x] Add Integration Tests

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄

---------

Co-authored-by: Eduard van Valkenburg <[email protected]>
@eavanvalkenburg eavanvalkenburg added this pull request to the merge queue Apr 3, 2025
Merged via the queue into microsoft:main with commit f00dc80 Apr 3, 2025
28 checks passed
@eavanvalkenburg eavanvalkenburg deleted the mcp2 branch April 3, 2025 18:15
glorious-beard pushed a commit to glorious-beard/semantic-kernel that referenced this pull request Apr 6, 2025
…soft#11334)

### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
Adds MCP server configs and a function that turns the server into a
plugin, with each tools of the server represented as a function.
Adds a sample showing how to use that with a Github MCP server.

Closes: microsoft#10785 and microsoft#11190

With special thanks to @nmoeller 

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄

---------

Co-authored-by: Nico Möller <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation python Pull requests for the Python Semantic Kernel
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Port dotnet feature: Create MCP Sample
7 participants