FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-sdk/docs_src/asgi/tutorial003.py at main · modelcontextprotocol/python-sdk · GitHub
modelcontextprotocol
python-sdk
Repository navigation
Code
Issues
247
(247)
Pull requests
106
(106)
Actions
Projects
Security and quality
12
(12)
Insights
Expand file tree
Breadcrumbs
python-sdk
/
docs_src
/
asgi
/
tutorial003.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
39 lines (28 loc) · 932 Bytes
Breadcrumbs
python-sdk
/
docs_src
/
asgi
/
tutorial003.py
Copy path
File metadata and controls
39 lines (28 loc) · 932 Bytes
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from
collections
.
abc
import
AsyncIterator
from
contextlib
import
AsyncExitStack
,
asynccontextmanager
from
starlette
.
applications
import
Starlette
from
starlette
.
routing
import
Mount
from
mcp
.
server
import
MCPServer
notes
=
MCPServer
(
"Notes"
)
tasks
=
MCPServer
(
"Tasks"
)
@
notes
.
tool
()
def
add_note
(
text
:
str
)
->
str
:
"""Save a note."""
return
f"Saved:
{
text
}
"
@
tasks
.
tool
()
def
add_task
(
title
:
str
)
->
str
:
"""Create a task."""
return
f"Created:
{
title
}
"
@
asynccontextmanager
async
def
lifespan
(
app
:
Starlette
)
->
AsyncIterator
[
None
]:
async
with
AsyncExitStack
()
as
stack
:
await
stack
.
enter_async_context
(
notes
.
session_manager
.
run
())
await
stack
.
enter_async_context
(
tasks
.
session_manager
.
run
())
yield
app
=
Starlette
(
routes
=
[
Mount
(
"/notes"
,
app
=
notes
.
streamable_http_app
()),
Mount
(
"/tasks"
,
app
=
tasks
.
streamable_http_app
()),
],
lifespan
=
lifespan
,
)
Back
|
FazBrowse Home
|
New Git URL