Commit Graph

17 Commits

Author SHA1 Message Date
David Soria Parra
a79f51f55f style: Fix imports and line length formatting 2024-12-21 00:46:36 +00:00
David Soria Parra
15cd7df87f refactor: Update FastMCP examples to use new import path
Update all FastMCP examples to use mcp.server.fastmcp instead of fastmcp.
Add tests to verify example servers work correctly.

Changes:
- Update import paths in all example files
- Create test_examples.py to verify functionality
- Fix test assertions to match actual response format
2024-12-21 00:41:39 +00:00
David Soria Parra
fe75f43ee6 fix: Update test to match Pydantic's JSON schema output for model references with defaults
Pydantic now uses allOf to combine model references with default values in JSON schema output.
2024-12-21 00:41:39 +00:00
David Soria Parra
557e90d2e7 Integrate FastMCP
This commit integrates FastMCP, a high-level MCP server implementation originally written by Jeremiah Lowin,
into the official MCP SDK. It also updates dependencies and adds new dev dependencies.
It moves the existing SDK into a .lowlevel .
2024-12-21 00:41:38 +00:00
David Soria Parra
ec8c85edea run ruff 2024-11-11 20:42:46 +00:00
David Soria Parra
f5d82bd229 Remove helper types
The helper types in mcp.server.types got really confusioning during
implementation as they overlapped with mcp.types. I now believe it
is better if we stay more low level to the spec types.

To do this, we now only use mcp.types everywhere. We renamed mcp.server.types
to mcp.server.models and removed it to the absolute minimum.
2024-11-11 20:05:51 +00:00
David Soria Parra
ed87ae9f06 rename mcp_python to mcp 2024-11-11 12:40:32 +00:00
David Soria Parra
5497da0afd feat: add structured capability types
Replace generic capability dictionaries with structured types for prompts,
resources, tools, and roots. This improves type safety and makes capability
features like listChanged and subscribe more explicit in the protocol.
2024-11-07 14:49:40 +00:00
Justin Spahr-Summers
c7d8f11e0c Formatting 2024-11-06 12:35:32 +00:00
Nick Merrill
60e9c7a0d7 Add in-memory transport (#25)
## Goal

Support running an MCP server in the same process as the client, while preserving MCP abstractions.

## Details

1. **(core change)** Adds a new `memory` transport module that enables in-process client-server communication.
This includes:
   - `create_client_server_memory_streams()` to create bidirectional memory streams
   - `create_connected_server_and_client_session()` to establish an in-process client-server connection

3. (minor) Enhances error handling and timeout support:
   - Adds configurable read timeouts to sessions via `read_timeout_seconds` parameter
   - Improves exception handling in the server with a new `raise_exceptions` flag to control whether errors are returned to clients or raised directly
   - Ensures proper cleanup of request context tokens in error cases

4. (minor) Makes server improvements:
   - Adds built-in ping handler support
2024-11-05 15:42:41 -08:00
Justin Spahr-Summers
ffff3d9450 ruff --fix 2024-10-21 14:54:47 +01:00
Justin Spahr-Summers
eb1024c654 Update protocol version handling 2024-10-21 14:50:44 +01:00
David Soria Parra
fd68df6687 Format with ruff 2024-10-11 16:14:11 +01:00
David Soria Parra
cc342a05ad Allow passing initialization options to a session
We need a way for servers to pass initialization options to the session.
This is the beginning of this.
2024-10-11 16:06:54 +01:00
Justin Spahr-Summers
4040945cdf Exclude Nones 2024-10-02 21:58:33 +01:00
Justin Spahr-Summers
fed5304b09 Remove Python 3.12 syntax 2024-10-02 21:55:53 +01:00
David Soria Parra
4cbf815430 Initial import 2024-09-24 22:04:19 +01:00