Skip to content
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

[4/n] Add docs for MCP #324

Merged
merged 1 commit into from
Mar 25, 2025
Merged

[4/n] Add docs for MCP #324

merged 1 commit into from
Mar 25, 2025

Conversation

rm-openai
Copy link
Collaborator

@rm-openai rm-openai commented Mar 24, 2025

@rm-openai rm-openai changed the base branch from main to rm/pr322 March 24, 2025 22:06
rm-openai added a commit that referenced this pull request Mar 25, 2025
We don't really need mypy on 3.9 (unit tests would catch any real
issues), and it causes issues with the rest of this stack.


---
[//]: # (BEGIN SAPLING FOOTER)
* #324
* #322
* #321
* #320
* __->__ #319
rm-openai added a commit that referenced this pull request Mar 25, 2025
### Summary:
1. Add the MCP dep for python 3.10, since it doesn't support 3.9 and
below
2. Create MCPServer, which is the agents SDK representation of an MCP
server
3. Create implementations for HTTP-SSE and StdIO servers, directly
copying the [MCP SDK
example](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py)
4. Add a util to transform MCP tools into Agent SDK tools

Note: I added optional caching support to the servers. That way, if you
happen to know a server's tools don't change, you can just cache them.

### Test Plan:

Checks pass. I added tests at the end of the stack.

--- 

#324
#322
#321
-> #320
#319
rm-openai added a commit that referenced this pull request Mar 25, 2025
### Summary:
This enables users to **use** MCP inside the SDK.
1. You add a list of MCP servers to `Agent`, via `mcp_server=[...]`
2. When an agent runs, we look up its MCP tools and add them to the list
of tools.
3. When a tool call occurs, we call the relevant MCP server.

Notes:
1. There's some refactoring to make sure we send the full list of tools
to the Runner/Model etc.
2. Right now, you could have a locally defined tool that conflicts with
an MCP defined tool. I didn't add errors for that, will do in a
followup.

### Test Plan:
See unit tests. Also has an end to end example next PR.

---
[//]: # (BEGIN SAPLING FOOTER)
* #324
* #322
* __->__ #321
* #320
docs/mcp.md Outdated

## Using MCP servers

MCP servers can be added to Agents. The Agents SDK will automatically call `list_tools()` on the MCP servers each time the Agent is run. This makes the LLM aware of the MCP server's tools. When the LLM calls a tool from an MCP server, the SDK automatically calls `call_tool()` on that server.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
MCP servers can be added to Agents. The Agents SDK will automatically call `list_tools()` on the MCP servers each time the Agent is run. This makes the LLM aware of the MCP server's tools. When the LLM calls a tool from an MCP server, the SDK automatically calls `call_tool()` on that server.
MCP servers can be added to Agents. The Agents SDK wil call `list_tools()` on the MCP servers each time the Agent is run. This makes the LLM aware of the MCP server's tools. When the LLM calls a tool from an MCP server, the SD calls `call_tool()` on that server.

Just adding docs.
-
@rm-openai rm-openai merged commit 8a06e6c into rm/pr322 Mar 25, 2025
@rm-openai rm-openai deleted the rm/pr324 branch March 25, 2025 17:01
rm-openai added a commit that referenced this pull request Mar 25, 2025
### Summary:
Spins up a stdio server with some local files, then asks the model
questions.

### Test Plan:
Run the example, see it work.


---
[//]: # (BEGIN SAPLING FOOTER)
* #324
* __->__ #322
* #336
@rm-openai rm-openai mentioned this pull request Mar 25, 2025
rm-openai added a commit that referenced this pull request Mar 25, 2025
Just adding docs.

(Repeat of #324)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants