Skip to content

Python: Add initial MCP Connector Version #10778

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 13 commits into from
Apr 1, 2025

Conversation

nmoeller
Copy link
Contributor

@nmoeller nmoeller commented Mar 4, 2025

Motivation and Context

With MCP getting more and more popular, i thought it's a cool idea to have plugins loaded and executed remotely with Semantic Kernel.

Description

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 ?

  • Load MCP Tools as Plugins
  • Enhance Parameter Parsing between KernelParameters and MCP Tool Parameters
  • Add Unit Tests
  • Add Integration Tests

Contribution Checklist

@markwallace-microsoft markwallace-microsoft added the python Pull requests for the Python Semantic Kernel label Mar 4, 2025
@github-actions github-actions bot changed the title Add initial MCP Connector Version Python: Add initial MCP Connector Version Mar 4, 2025
@markwallace-microsoft
Copy link
Member

markwallace-microsoft commented Mar 4, 2025

Python Test Coverage

Python Test Coverage Report •
FileStmtsMissCoverMissing
semantic_kernel/connectors/mcp
   mcp_manager.py24292%37–38
semantic_kernel/functions
   kernel_plugin.py186697%420, 423, 436, 461, 482, 507
TOTAL21311245888% 

Python Unit Test Overview

Tests Skipped Failures Errors Time
3348 5 💤 0 ❌ 0 🔥 1m 42s ⏱️

@eavanvalkenburg
Copy link
Member

@markwallace-microsoft would be good to get your thought on this, compared to dotnet

@nmoeller nmoeller marked this pull request as ready for review March 24, 2025 17:11
@nmoeller nmoeller requested a review from a team as a code owner March 24, 2025 17:11
@qiqizjl
Copy link

qiqizjl commented Mar 31, 2025

This branch doesn't seem to handle parameter types of object and array?

@nmoeller
Copy link
Contributor Author

@qiqizjl Arrays should be supported, but Objects are not. I will look into this when i find some time.

@eavanvalkenburg eavanvalkenburg moved this to Community PRs in Semantic Kernel Mar 31, 2025
@eavanvalkenburg eavanvalkenburg self-assigned this Mar 31, 2025
@eavanvalkenburg eavanvalkenburg changed the base branch from main to python-mcp April 1, 2025 12:41
@eavanvalkenburg eavanvalkenburg enabled auto-merge (squash) April 1, 2025 12:41
@eavanvalkenburg eavanvalkenburg disabled auto-merge April 1, 2025 12:43
@eavanvalkenburg eavanvalkenburg merged commit 9eadb41 into microsoft:python-mcp Apr 1, 2025
2 checks passed
@github-project-automation github-project-automation bot moved this from Community PRs to Sprint: Done in Semantic Kernel Apr 1, 2025
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 2, 2025
### Motivation and Context

With MCP getting more and more popular, i thought it's a cool idea to
have plugins loaded and executed remotely with Semantic Kernel.

### Description

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 


### 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: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 2, 2025
### Motivation and Context

With MCP getting more and more popular, i thought it's a cool idea to
have plugins loaded and executed remotely with Semantic Kernel.

### Description

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 


### 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: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 2, 2025
### Motivation and Context

With MCP getting more and more popular, i thought it's a cool idea to
have plugins loaded and executed remotely with Semantic Kernel.

### Description

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 


### 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: Eduard van Valkenburg <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 3, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 3, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 3, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 3, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 3, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 4, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 4, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 7, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 8, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 9, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 10, 2025
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 <eavanvalkenburg@users.noreply.github.com>
eavanvalkenburg added a commit to eavanvalkenburg/semantic-kernel that referenced this pull request Apr 10, 2025
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 <eavanvalkenburg@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
python Pull requests for the Python Semantic Kernel
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants