17349 lines
841 KiB
HTML
17349 lines
841 KiB
HTML
<!DOCTYPE html><html lang="en" class="no-js"><head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="MCP Server">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://modelcontextprotocol.github.io/python-sdk/api/">
|
|
|
|
|
|
<link rel="prev" href="../experimental/tasks-client/">
|
|
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.19">
|
|
|
|
|
|
|
|
<title>API Reference - MCP Server</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.7e37652d.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/_mkdocstrings.css">
|
|
|
|
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta property="og:type" content="website">
|
|
|
|
<meta property="og:title" content="API Reference - MCP Server">
|
|
|
|
<meta property="og:description" content="MCP Server">
|
|
|
|
<meta property="og:image" content="https://modelcontextprotocol.github.io/python-sdk/assets/images/social/api.png">
|
|
|
|
<meta property="og:image:type" content="image/png">
|
|
|
|
<meta property="og:image:width" content="1200">
|
|
|
|
<meta property="og:image:height" content="630">
|
|
|
|
<meta property="og:url" content="https://modelcontextprotocol.github.io/python-sdk/api/">
|
|
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
|
|
<meta name="twitter:title" content="API Reference - MCP Server">
|
|
|
|
<meta name="twitter:description" content="MCP Server">
|
|
|
|
<meta name="twitter:image" content="https://modelcontextprotocol.github.io/python-sdk/assets/images/social/api.png">
|
|
|
|
|
|
|
|
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
|
|
html.glightbox-open { overflow: initial; height: 100%; }
|
|
.gslide-title { margin-top: 0px; user-select: text; }
|
|
.gslide-desc { color: #666; user-select: text; }
|
|
.gslide-image img { background: white; }
|
|
.gscrollbar-fixer { padding-right: 15px; }
|
|
.gdesc-inner { font-size: 0.75rem; }
|
|
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
|
|
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
|
|
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
|
|
</style></head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="black">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#mcp" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href=".." title="MCP Server" class="md-header__button md-logo" aria-label="MCP Server" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
MCP Server
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
API Reference
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="black" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9z"></path></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="black" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5"></path></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="white" data-md-color-accent="white" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 2c3.87 0 7 3.13 7 7 0 2.38-1.19 4.47-3 5.74V17c0 .55-.45 1-1 1H6c-.55 0-1-.45-1-1v-2.26C3.19 13.47 2 11.38 2 9c0-3.87 3.13-7 7-7M6 21v-1h6v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1M9 4C6.24 4 4 6.24 4 9c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58 0-2.76-2.24-5-5-5m10 9h-2l-3.2 9h1.9l.7-2h3.2l.7 2h1.9zm-2.15 5.65L18 15l1.15 3.65z"></path></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-header__source">
|
|
<a href="https://github.com/modelcontextprotocol/python-sdk" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
modelcontextprotocol/python-sdk
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href=".." title="MCP Server" class="md-nav__button md-logo" aria-label="MCP Server" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
|
|
|
|
</a>
|
|
MCP Server
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
<a href="https://github.com/modelcontextprotocol/python-sdk" title="Go to repository" class="md-source" data-md-component="source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
modelcontextprotocol/python-sdk
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../installation/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Installation
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Documentation
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Documentation
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../server/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Building Servers
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../client/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Writing Clients
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../protocol/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Protocol Features
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../low-level-server/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Low-Level Server
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../authorization/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Authorization
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../testing/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Testing
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
|
|
|
|
|
|
<div class="md-nav__link md-nav__container">
|
|
<a href="../experimental/" class="md-nav__link ">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Experimental
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Experimental
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tasks
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_4_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Tasks
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../experimental/tasks/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../experimental/tasks-server/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Server Implementation
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../experimental/tasks-client/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Client Usage
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API Reference
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API Reference
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mcp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientSession
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientSession">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.get_server_capabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_server_capabilities
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_ping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_ping
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_progress_notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_progress_notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.set_logging_level" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
set_logging_level
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_resource_templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_resource_templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.read_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.subscribe_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
subscribe_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.unsubscribe_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
unsubscribe_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.call_tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
call_tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.get_prompt" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_prompt
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.complete" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
complete
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_roots_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_roots_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientSessionGroup
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientSessionGroup">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.__aexit__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__aexit__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.sessions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
sessions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.call_tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
call_tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.disconnect_from_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
disconnect_from_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.connect_with_session" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
connect_with_session
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.connect_to_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
connect_to_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
StdioServerParameters
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="StdioServerParameters">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.args" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
args
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.env" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
env
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.cwd" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
cwd
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.encoding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
encoding
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.encoding_error_handler" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
encoding_error_handler
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.stdio_client" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stdio_client
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ServerSession
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ServerSession">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.check_client_capability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
check_client_capability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_log_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_log_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_resource_updated" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_resource_updated
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.create_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.list_roots" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_roots
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit_form" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit_form
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit_url" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit_url
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_ping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_ping
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_progress_notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_progress_notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_resource_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_resource_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_tool_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_tool_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_prompt_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_prompt_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_elicit_complete" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_elicit_complete
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.stdio_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stdio_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.McpError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
McpError
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="McpError">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.McpError.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UrlElicitationRequiredError
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="UrlElicitationRequiredError">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.elicitations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicitations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.from_error" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
from_error
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CallToolRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CallToolRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientCapabilities
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientCapabilities">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.sampling" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
sampling
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.elicitation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicitation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.roots" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
roots
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.tasks" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tasks
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CompleteRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CompleteRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="CreateMessageResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.role" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
role
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.model" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
model
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.stopReason" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stopReason
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageResultWithTools
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="CreateMessageResultWithTools">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.role" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
role
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.model" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
model
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.stopReason" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stopReason
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.content_as_list" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content_as_list
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ErrorData
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ErrorData">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.code" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
code
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.data" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
data
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GetPromptRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GetPromptResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="GetPromptResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptResult.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Implementation
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Implementation">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation.websiteUrl" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
websiteUrl
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializedNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializedNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializeResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="InitializeResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult.protocolVersion" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
protocolVersion
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult.instructions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
instructions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCError
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCResponse" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCResponse
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListPromptsRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListPromptsRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListPromptsResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListPromptsResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListResourcesRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListResourcesRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListResourcesResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListResourcesResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListToolsResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListToolsResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.LoggingMessageNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
LoggingMessageNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PingRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PingRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ProgressNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ProgressNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PromptsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PromptsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="PromptsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PromptsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ReadResourceRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ReadResourceRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ReadResourceResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ReadResourceResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Resource
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Resource">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.uri" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
uri
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.mimeType" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mimeType
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.size" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
size
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ResourcesCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ResourcesCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability.subscribe" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
subscribe
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourceUpdatedNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ResourceUpdatedNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.RootsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
RootsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="RootsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.RootsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="SamplingCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability.context" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
context
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingContent
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingContextCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingContextCapability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingMessage
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="SamplingMessage">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.content_as_list" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content_as_list
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessageContentBlock" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingMessageContentBlock
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingToolsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingToolsCapability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ServerCapabilities
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ServerCapabilities">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.logging" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
logging
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.completions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
completions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.tasks" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tasks
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SetLevelRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SetLevelRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SubscribeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SubscribeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tool
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Tool">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.inputSchema" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
inputSchema
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.outputSchema" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
outputSchema
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.annotations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
annotations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolChoice" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolChoice
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolChoice">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolChoice.mode" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mode
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolResultContent
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolResultContent">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.toolUseId" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
toolUseId
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.structuredContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
structuredContent
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.isError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
isError
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolUseContent
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolUseContent">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.name" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
name
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.id" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
id
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.input" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
input
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UnsubscribeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UnsubscribeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mcp
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientSession
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientSession">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.get_server_capabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_server_capabilities
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_ping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_ping
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_progress_notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_progress_notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.set_logging_level" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
set_logging_level
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_resource_templates" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_resource_templates
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.read_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.subscribe_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
subscribe_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.unsubscribe_resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
unsubscribe_resource
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.call_tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
call_tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.get_prompt" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_prompt
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.complete" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
complete
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.list_tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSession.send_roots_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_roots_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientSessionGroup
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientSessionGroup">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.__aexit__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__aexit__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.sessions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
sessions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.call_tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
call_tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.disconnect_from_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
disconnect_from_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.connect_with_session" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
connect_with_session
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientSessionGroup.connect_to_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
connect_to_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
StdioServerParameters
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="StdioServerParameters">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.args" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
args
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.env" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
env
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.cwd" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
cwd
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.encoding" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
encoding
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.StdioServerParameters.encoding_error_handler" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
encoding_error_handler
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.stdio_client" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stdio_client
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ServerSession
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ServerSession">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.check_client_capability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
check_client_capability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_log_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_log_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_resource_updated" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_resource_updated
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.create_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.list_roots" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
list_roots
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit_form" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit_form
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.elicit_url" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicit_url
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_ping" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_ping
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_progress_notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_progress_notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_resource_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_resource_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_tool_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_tool_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_prompt_list_changed" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_prompt_list_changed
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_elicit_complete" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_elicit_complete
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerSession.send_message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
send_message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.stdio_server" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stdio_server
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.McpError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
McpError
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="McpError">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.McpError.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UrlElicitationRequiredError
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="UrlElicitationRequiredError">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.elicitations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicitations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UrlElicitationRequiredError.from_error" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
from_error
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CallToolRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CallToolRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ClientCapabilities
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ClientCapabilities">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.sampling" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
sampling
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.elicitation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
elicitation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.roots" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
roots
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ClientCapabilities.tasks" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tasks
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CompleteRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CompleteRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="CreateMessageResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.role" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
role
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.model" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
model
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResult.stopReason" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stopReason
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CreateMessageResultWithTools
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="CreateMessageResultWithTools">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.role" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
role
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.model" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
model
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.stopReason" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
stopReason
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.CreateMessageResultWithTools.content_as_list" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content_as_list
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ErrorData
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ErrorData">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.code" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
code
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.message" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
message
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ErrorData.data" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
data
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GetPromptRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GetPromptResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="GetPromptResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.GetPromptResult.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Implementation
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Implementation">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation.websiteUrl" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
websiteUrl
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Implementation.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializedNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializedNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
InitializeResult
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="InitializeResult">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult.protocolVersion" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
protocolVersion
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.InitializeResult.instructions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
instructions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCError
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.JSONRPCResponse" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JSONRPCResponse
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListPromptsRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListPromptsRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListPromptsResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListPromptsResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListResourcesRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListResourcesRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListResourcesResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListResourcesResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ListToolsResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListToolsResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.LoggingMessageNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
LoggingMessageNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Notification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Notification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PingRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PingRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ProgressNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ProgressNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PromptsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PromptsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="PromptsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.PromptsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ReadResourceRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ReadResourceRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ReadResourceResult" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ReadResourceResult
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Resource
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Resource">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.uri" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
uri
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.mimeType" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mimeType
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.size" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
size
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Resource.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ResourcesCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ResourcesCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability.subscribe" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
subscribe
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourcesCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ResourceUpdatedNotification" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ResourceUpdatedNotification
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.RootsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
RootsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="RootsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.RootsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="SamplingCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability.context" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
context
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingCapability.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingContent
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingContextCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingContextCapability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingMessage
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="SamplingMessage">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessage.content_as_list" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content_as_list
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingMessageContentBlock" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingMessageContentBlock
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SamplingToolsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SamplingToolsCapability
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ServerCapabilities
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ServerCapabilities">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.experimental" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
experimental
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.logging" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
logging
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.prompts" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
prompts
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.resources" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
resources
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tools
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.completions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
completions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ServerCapabilities.tasks" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
tasks
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SetLevelRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SetLevelRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.SubscribeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SubscribeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tool
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Tool">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.inputSchema" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
inputSchema
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.outputSchema" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
outputSchema
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.icons" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
icons
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.annotations" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
annotations
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.Tool.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolChoice" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolChoice
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolChoice">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolChoice.mode" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
mode
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolResultContent
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolResultContent">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.toolUseId" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
toolUseId
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.structuredContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
structuredContent
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.isError" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
isError
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolResultContent.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolsCapability" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolsCapability
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolsCapability">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolsCapability.listChanged" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
listChanged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ToolUseContent
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="ToolUseContent">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.name" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
name
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.id" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
id
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.input" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
input
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.ToolUseContent.meta" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
meta
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#mcp.UnsubscribeRequest" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UnsubscribeRequest
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1>API Reference</h1>
|
|
|
|
<div class="doc doc-object doc-module">
|
|
|
|
|
|
|
|
<a id="mcp"></a>
|
|
<div class="doc doc-contents first">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ClientSession" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ClientSession</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.shared.session.BaseSession">BaseSession</span>[<span title="mcp.types.ClientRequest">ClientRequest</span>, <span title="mcp.types.ClientNotification">ClientNotification</span>, <span title="mcp.types.ClientResult">ClientResult</span>, <span title="mcp.types.ServerRequest">ServerRequest</span>, <span title="mcp.types.ServerNotification">ServerNotification</span>]</code></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span>
|
|
<span class="normal">113</span>
|
|
<span class="normal">114</span>
|
|
<span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span>
|
|
<span class="normal">164</span>
|
|
<span class="normal">165</span>
|
|
<span class="normal">166</span>
|
|
<span class="normal">167</span>
|
|
<span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span>
|
|
<span class="normal">175</span>
|
|
<span class="normal">176</span>
|
|
<span class="normal">177</span>
|
|
<span class="normal">178</span>
|
|
<span class="normal">179</span>
|
|
<span class="normal">180</span>
|
|
<span class="normal">181</span>
|
|
<span class="normal">182</span>
|
|
<span class="normal">183</span>
|
|
<span class="normal">184</span>
|
|
<span class="normal">185</span>
|
|
<span class="normal">186</span>
|
|
<span class="normal">187</span>
|
|
<span class="normal">188</span>
|
|
<span class="normal">189</span>
|
|
<span class="normal">190</span>
|
|
<span class="normal">191</span>
|
|
<span class="normal">192</span>
|
|
<span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span>
|
|
<span class="normal">213</span>
|
|
<span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span>
|
|
<span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span>
|
|
<span class="normal">238</span>
|
|
<span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span>
|
|
<span class="normal">247</span>
|
|
<span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span>
|
|
<span class="normal">254</span>
|
|
<span class="normal">255</span>
|
|
<span class="normal">256</span>
|
|
<span class="normal">257</span>
|
|
<span class="normal">258</span>
|
|
<span class="normal">259</span>
|
|
<span class="normal">260</span>
|
|
<span class="normal">261</span>
|
|
<span class="normal">262</span>
|
|
<span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span>
|
|
<span class="normal">295</span>
|
|
<span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span>
|
|
<span class="normal">305</span>
|
|
<span class="normal">306</span>
|
|
<span class="normal">307</span>
|
|
<span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span>
|
|
<span class="normal">356</span>
|
|
<span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span>
|
|
<span class="normal">398</span>
|
|
<span class="normal">399</span>
|
|
<span class="normal">400</span>
|
|
<span class="normal">401</span>
|
|
<span class="normal">402</span>
|
|
<span class="normal">403</span>
|
|
<span class="normal">404</span>
|
|
<span class="normal">405</span>
|
|
<span class="normal">406</span>
|
|
<span class="normal">407</span>
|
|
<span class="normal">408</span>
|
|
<span class="normal">409</span>
|
|
<span class="normal">410</span>
|
|
<span class="normal">411</span>
|
|
<span class="normal">412</span>
|
|
<span class="normal">413</span>
|
|
<span class="normal">414</span>
|
|
<span class="normal">415</span>
|
|
<span class="normal">416</span>
|
|
<span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span>
|
|
<span class="normal">421</span>
|
|
<span class="normal">422</span>
|
|
<span class="normal">423</span>
|
|
<span class="normal">424</span>
|
|
<span class="normal">425</span>
|
|
<span class="normal">426</span>
|
|
<span class="normal">427</span>
|
|
<span class="normal">428</span>
|
|
<span class="normal">429</span>
|
|
<span class="normal">430</span>
|
|
<span class="normal">431</span>
|
|
<span class="normal">432</span>
|
|
<span class="normal">433</span>
|
|
<span class="normal">434</span>
|
|
<span class="normal">435</span>
|
|
<span class="normal">436</span>
|
|
<span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span>
|
|
<span class="normal">442</span>
|
|
<span class="normal">443</span>
|
|
<span class="normal">444</span>
|
|
<span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span>
|
|
<span class="normal">448</span>
|
|
<span class="normal">449</span>
|
|
<span class="normal">450</span>
|
|
<span class="normal">451</span>
|
|
<span class="normal">452</span>
|
|
<span class="normal">453</span>
|
|
<span class="normal">454</span>
|
|
<span class="normal">455</span>
|
|
<span class="normal">456</span>
|
|
<span class="normal">457</span>
|
|
<span class="normal">458</span>
|
|
<span class="normal">459</span>
|
|
<span class="normal">460</span>
|
|
<span class="normal">461</span>
|
|
<span class="normal">462</span>
|
|
<span class="normal">463</span>
|
|
<span class="normal">464</span>
|
|
<span class="normal">465</span>
|
|
<span class="normal">466</span>
|
|
<span class="normal">467</span>
|
|
<span class="normal">468</span>
|
|
<span class="normal">469</span>
|
|
<span class="normal">470</span>
|
|
<span class="normal">471</span>
|
|
<span class="normal">472</span>
|
|
<span class="normal">473</span>
|
|
<span class="normal">474</span>
|
|
<span class="normal">475</span>
|
|
<span class="normal">476</span>
|
|
<span class="normal">477</span>
|
|
<span class="normal">478</span>
|
|
<span class="normal">479</span>
|
|
<span class="normal">480</span>
|
|
<span class="normal">481</span>
|
|
<span class="normal">482</span>
|
|
<span class="normal">483</span>
|
|
<span class="normal">484</span>
|
|
<span class="normal">485</span>
|
|
<span class="normal">486</span>
|
|
<span class="normal">487</span>
|
|
<span class="normal">488</span>
|
|
<span class="normal">489</span>
|
|
<span class="normal">490</span>
|
|
<span class="normal">491</span>
|
|
<span class="normal">492</span>
|
|
<span class="normal">493</span>
|
|
<span class="normal">494</span>
|
|
<span class="normal">495</span>
|
|
<span class="normal">496</span>
|
|
<span class="normal">497</span>
|
|
<span class="normal">498</span>
|
|
<span class="normal">499</span>
|
|
<span class="normal">500</span>
|
|
<span class="normal">501</span>
|
|
<span class="normal">502</span>
|
|
<span class="normal">503</span>
|
|
<span class="normal">504</span>
|
|
<span class="normal">505</span>
|
|
<span class="normal">506</span>
|
|
<span class="normal">507</span>
|
|
<span class="normal">508</span>
|
|
<span class="normal">509</span>
|
|
<span class="normal">510</span>
|
|
<span class="normal">511</span>
|
|
<span class="normal">512</span>
|
|
<span class="normal">513</span>
|
|
<span class="normal">514</span>
|
|
<span class="normal">515</span>
|
|
<span class="normal">516</span>
|
|
<span class="normal">517</span>
|
|
<span class="normal">518</span>
|
|
<span class="normal">519</span>
|
|
<span class="normal">520</span>
|
|
<span class="normal">521</span>
|
|
<span class="normal">522</span>
|
|
<span class="normal">523</span>
|
|
<span class="normal">524</span>
|
|
<span class="normal">525</span>
|
|
<span class="normal">526</span>
|
|
<span class="normal">527</span>
|
|
<span class="normal">528</span>
|
|
<span class="normal">529</span>
|
|
<span class="normal">530</span>
|
|
<span class="normal">531</span>
|
|
<span class="normal">532</span>
|
|
<span class="normal">533</span>
|
|
<span class="normal">534</span>
|
|
<span class="normal">535</span>
|
|
<span class="normal">536</span>
|
|
<span class="normal">537</span>
|
|
<span class="normal">538</span>
|
|
<span class="normal">539</span>
|
|
<span class="normal">540</span>
|
|
<span class="normal">541</span>
|
|
<span class="normal">542</span>
|
|
<span class="normal">543</span>
|
|
<span class="normal">544</span>
|
|
<span class="normal">545</span>
|
|
<span class="normal">546</span>
|
|
<span class="normal">547</span>
|
|
<span class="normal">548</span>
|
|
<span class="normal">549</span>
|
|
<span class="normal">550</span>
|
|
<span class="normal">551</span>
|
|
<span class="normal">552</span>
|
|
<span class="normal">553</span>
|
|
<span class="normal">554</span>
|
|
<span class="normal">555</span>
|
|
<span class="normal">556</span>
|
|
<span class="normal">557</span>
|
|
<span class="normal">558</span>
|
|
<span class="normal">559</span>
|
|
<span class="normal">560</span>
|
|
<span class="normal">561</span>
|
|
<span class="normal">562</span>
|
|
<span class="normal">563</span>
|
|
<span class="normal">564</span>
|
|
<span class="normal">565</span>
|
|
<span class="normal">566</span>
|
|
<span class="normal">567</span>
|
|
<span class="normal">568</span>
|
|
<span class="normal">569</span>
|
|
<span class="normal">570</span>
|
|
<span class="normal">571</span>
|
|
<span class="normal">572</span>
|
|
<span class="normal">573</span>
|
|
<span class="normal">574</span>
|
|
<span class="normal">575</span>
|
|
<span class="normal">576</span>
|
|
<span class="normal">577</span>
|
|
<span class="normal">578</span>
|
|
<span class="normal">579</span>
|
|
<span class="normal">580</span>
|
|
<span class="normal">581</span>
|
|
<span class="normal">582</span>
|
|
<span class="normal">583</span>
|
|
<span class="normal">584</span>
|
|
<span class="normal">585</span>
|
|
<span class="normal">586</span>
|
|
<span class="normal">587</span>
|
|
<span class="normal">588</span>
|
|
<span class="normal">589</span>
|
|
<span class="normal">590</span>
|
|
<span class="normal">591</span>
|
|
<span class="normal">592</span>
|
|
<span class="normal">593</span>
|
|
<span class="normal">594</span>
|
|
<span class="normal">595</span>
|
|
<span class="normal">596</span>
|
|
<span class="normal">597</span>
|
|
<span class="normal">598</span>
|
|
<span class="normal">599</span>
|
|
<span class="normal">600</span>
|
|
<span class="normal">601</span>
|
|
<span class="normal">602</span>
|
|
<span class="normal">603</span>
|
|
<span class="normal">604</span>
|
|
<span class="normal">605</span>
|
|
<span class="normal">606</span>
|
|
<span class="normal">607</span>
|
|
<span class="normal">608</span>
|
|
<span class="normal">609</span>
|
|
<span class="normal">610</span>
|
|
<span class="normal">611</span>
|
|
<span class="normal">612</span>
|
|
<span class="normal">613</span>
|
|
<span class="normal">614</span>
|
|
<span class="normal">615</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ClientSession</span><span class="p">(</span>
|
|
<span class="n">BaseSession</span><span class="p">[</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientResult</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="p">):</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">read_stream</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">],</span>
|
|
<span class="n">write_stream</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">],</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">sampling_callback</span><span class="p">:</span> <span class="n">SamplingFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">elicitation_callback</span><span class="p">:</span> <span class="n">ElicitationFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">list_roots_callback</span><span class="p">:</span> <span class="n">ListRootsFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">logging_callback</span><span class="p">:</span> <span class="n">LoggingFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message_handler</span><span class="p">:</span> <span class="n">MessageHandlerFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">client_info</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">sampling_capabilities</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">SamplingCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">experimental_task_handlers</span><span class="p">:</span> <span class="n">ExperimentalTaskHandlers</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="n">read_stream</span><span class="p">,</span>
|
|
<span class="n">write_stream</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="o">=</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_client_info</span> <span class="o">=</span> <span class="n">client_info</span> <span class="ow">or</span> <span class="n">DEFAULT_CLIENT_INFO</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_sampling_callback</span> <span class="o">=</span> <span class="n">sampling_callback</span> <span class="ow">or</span> <span class="n">_default_sampling_callback</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_sampling_capabilities</span> <span class="o">=</span> <span class="n">sampling_capabilities</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_elicitation_callback</span> <span class="o">=</span> <span class="n">elicitation_callback</span> <span class="ow">or</span> <span class="n">_default_elicitation_callback</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_list_roots_callback</span> <span class="o">=</span> <span class="n">list_roots_callback</span> <span class="ow">or</span> <span class="n">_default_list_roots_callback</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_logging_callback</span> <span class="o">=</span> <span class="n">logging_callback</span> <span class="ow">or</span> <span class="n">_default_logging_callback</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_message_handler</span> <span class="o">=</span> <span class="n">message_handler</span> <span class="ow">or</span> <span class="n">_default_message_handler</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_server_capabilities</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerCapabilities</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span><span class="p">:</span> <span class="n">ExperimentalClientFeatures</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Experimental: Task handlers (use defaults if not provided)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span> <span class="o">=</span> <span class="n">experimental_task_handlers</span> <span class="ow">or</span> <span class="n">ExperimentalTaskHandlers</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">InitializeResult</span><span class="p">:</span>
|
|
<span class="n">sampling</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sampling_capabilities</span> <span class="ow">or</span> <span class="n">types</span><span class="o">.</span><span class="n">SamplingCapability</span><span class="p">())</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sampling_callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">_default_sampling_callback</span>
|
|
<span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
<span class="n">elicitation</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitationCapability</span><span class="p">(</span>
|
|
<span class="n">form</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">FormElicitationCapability</span><span class="p">(),</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">UrlElicitationCapability</span><span class="p">(),</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_elicitation_callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">_default_elicitation_callback</span>
|
|
<span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
<span class="n">roots</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="c1"># TODO: Should this be based on whether we</span>
|
|
<span class="c1"># _will_ send notifications, or only whether</span>
|
|
<span class="c1"># they're supported?</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">RootsCapability</span><span class="p">(</span><span class="n">listChanged</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_list_roots_callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">_default_list_roots_callback</span>
|
|
<span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">InitializeRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">InitializeRequestParams</span><span class="p">(</span>
|
|
<span class="n">protocolVersion</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">LATEST_PROTOCOL_VERSION</span><span class="p">,</span>
|
|
<span class="n">capabilities</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ClientCapabilities</span><span class="p">(</span>
|
|
<span class="n">sampling</span><span class="o">=</span><span class="n">sampling</span><span class="p">,</span>
|
|
<span class="n">elicitation</span><span class="o">=</span><span class="n">elicitation</span><span class="p">,</span>
|
|
<span class="n">experimental</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">roots</span><span class="o">=</span><span class="n">roots</span><span class="p">,</span>
|
|
<span class="n">tasks</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span><span class="o">.</span><span class="n">build_capability</span><span class="p">(),</span>
|
|
<span class="p">),</span>
|
|
<span class="n">clientInfo</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_client_info</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">InitializeResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">protocolVersion</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">SUPPORTED_PROTOCOL_VERSIONS</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported protocol version from the server: </span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">protocolVersion</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_server_capabilities</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">capabilities</span>
|
|
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">InitializedNotification</span><span class="p">()))</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">get_server_capabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ServerCapabilities</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Return the server capabilities received during initialization.</span>
|
|
|
|
<span class="sd"> Returns None if the session has not been initialized yet.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_server_capabilities</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">experimental</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ExperimentalClientFeatures</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Experimental APIs for tasks and other features.</span>
|
|
|
|
<span class="sd"> WARNING: These APIs are experimental and may change without notice.</span>
|
|
|
|
<span class="sd"> Example:</span>
|
|
<span class="sd"> status = await session.experimental.get_task(task_id)</span>
|
|
<span class="sd"> result = await session.experimental.get_task_result(task_id, CallToolResult)</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span> <span class="o">=</span> <span class="n">ExperimentalClientFeatures</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_ping</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a ping request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a progress notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ProgressNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ProgressNotificationParams</span><span class="p">(</span>
|
|
<span class="n">progressToken</span><span class="o">=</span><span class="n">progress_token</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="o">=</span><span class="n">total</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">set_logging_level</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">LoggingLevel</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a logging/setLevel request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">SetLevelRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">SetLevelRequestParams</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="nd">@deprecated</span><span class="p">(</span><span class="s2">"Use list_resources(params=PaginatedRequestParams(...)) instead"</span><span class="p">)</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resources</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resources</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resources</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resources</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListResourcesRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="nd">@deprecated</span><span class="p">(</span><span class="s2">"Use list_resource_templates(params=PaginatedRequestParams(...)) instead"</span><span class="p">)</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resource_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resource_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/templates/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">read_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ReadResourceResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/read request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ReadResourceRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ReadResourceRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ReadResourceResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">subscribe_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/subscribe request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">SubscribeRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">SubscribeRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">unsubscribe_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/unsubscribe request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">UnsubscribeRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">UnsubscribeRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tools/call request with optional progress callback support."""</span>
|
|
|
|
<span class="n">_meta</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestParams</span><span class="o">.</span><span class="n">Meta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">_meta</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestParams</span><span class="o">.</span><span class="n">Meta</span><span class="p">(</span><span class="o">**</span><span class="n">meta</span><span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CallToolRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CallToolRequestParams</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">arguments</span><span class="o">=</span><span class="n">arguments</span><span class="p">,</span> <span class="n">_meta</span><span class="o">=</span><span class="n">_meta</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">,</span>
|
|
<span class="n">request_read_timeout_seconds</span><span class="o">=</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="o">=</span><span class="n">progress_callback</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="o">.</span><span class="n">isError</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_validate_tool_result</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_validate_tool_result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">result</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Validate the structured content of a tool result against its output schema."""</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="p">:</span>
|
|
<span class="c1"># refresh output schema cache</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_tools</span><span class="p">()</span>
|
|
|
|
<span class="n">output_schema</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="p">:</span>
|
|
<span class="n">output_schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Tool </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> not listed by server, cannot validate any structured content"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">output_schema</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="kn">from</span><span class="w"> </span><span class="nn">jsonschema</span><span class="w"> </span><span class="kn">import</span> <span class="n">SchemaError</span><span class="p">,</span> <span class="n">ValidationError</span><span class="p">,</span> <span class="n">validate</span>
|
|
|
|
<span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">structuredContent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Tool </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> has an output schema but did not return structured content"</span>
|
|
<span class="p">)</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">validate</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">structuredContent</span><span class="p">,</span> <span class="n">output_schema</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid structured content returned by tool </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">except</span> <span class="n">SchemaError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid schema for tool </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># pragma: no cover</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="nd">@deprecated</span><span class="p">(</span><span class="s2">"Use list_prompts(params=PaginatedRequestParams(...)) instead"</span><span class="p">)</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_prompts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_prompts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_prompts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_prompts</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompts/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListPromptsRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_prompt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">GetPromptResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompts/get request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">GetPromptRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">GetPromptRequestParams</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">arguments</span><span class="o">=</span><span class="n">arguments</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">GetPromptResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">complete</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">ref</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ResourceTemplateReference</span> <span class="o">|</span> <span class="n">types</span><span class="o">.</span><span class="n">PromptReference</span><span class="p">,</span>
|
|
<span class="n">argument</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
|
|
<span class="n">context_arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CompleteResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a completion/complete request."""</span>
|
|
<span class="n">context</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">context_arguments</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">context</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">CompletionContext</span><span class="p">(</span><span class="n">arguments</span><span class="o">=</span><span class="n">context_arguments</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CompleteRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CompleteRequestParams</span><span class="p">(</span>
|
|
<span class="n">ref</span><span class="o">=</span><span class="n">ref</span><span class="p">,</span>
|
|
<span class="n">argument</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CompletionArgument</span><span class="p">(</span><span class="o">**</span><span class="n">argument</span><span class="p">),</span>
|
|
<span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CompleteResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="nd">@deprecated</span><span class="p">(</span><span class="s2">"Use list_tools(params=PaginatedRequestParams(...)) instead"</span><span class="p">)</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_tools</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_tools</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_tools</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_tools</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tools/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListToolsRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Cache tool output schemas for future validation</span>
|
|
<span class="c1"># Note: don't clear the cache, as we may be using a cursor</span>
|
|
<span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">tools</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="p">[</span><span class="n">tool</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tool</span><span class="o">.</span><span class="n">outputSchema</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_roots_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a roots/list_changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">RootsListChangedNotification</span><span class="p">()))</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_received_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">responder</span><span class="p">:</span> <span class="n">RequestResponder</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientResult</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ctx</span> <span class="o">=</span> <span class="n">RequestContext</span><span class="p">[</span><span class="n">ClientSession</span><span class="p">,</span> <span class="n">Any</span><span class="p">](</span>
|
|
<span class="n">request_id</span><span class="o">=</span><span class="n">responder</span><span class="o">.</span><span class="n">request_id</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="o">=</span><span class="n">responder</span><span class="o">.</span><span class="n">request_meta</span><span class="p">,</span>
|
|
<span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">lifespan_context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Delegate to experimental task handler if applicable</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span><span class="o">.</span><span class="n">handles_request</span><span class="p">(</span><span class="n">responder</span><span class="o">.</span><span class="n">request</span><span class="p">):</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span><span class="o">.</span><span class="n">handle_request</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">responder</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Core request handling</span>
|
|
<span class="k">match</span> <span class="n">responder</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">root</span><span class="p">:</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="c1"># Check if this is a task-augmented request</span>
|
|
<span class="k">if</span> <span class="n">params</span><span class="o">.</span><span class="n">task</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span><span class="o">.</span><span class="n">augmented_sampling</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">params</span><span class="o">.</span><span class="n">task</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sampling_callback</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
|
|
<span class="n">client_response</span> <span class="o">=</span> <span class="n">ClientResponse</span><span class="o">.</span><span class="n">validate_python</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">responder</span><span class="o">.</span><span class="n">respond</span><span class="p">(</span><span class="n">client_response</span><span class="p">)</span>
|
|
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="c1"># Check if this is a task-augmented request</span>
|
|
<span class="k">if</span> <span class="n">params</span><span class="o">.</span><span class="n">task</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_task_handlers</span><span class="o">.</span><span class="n">augmented_elicitation</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">params</span><span class="o">.</span><span class="n">task</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_elicitation_callback</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
|
|
<span class="n">client_response</span> <span class="o">=</span> <span class="n">ClientResponse</span><span class="o">.</span><span class="n">validate_python</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">responder</span><span class="o">.</span><span class="n">respond</span><span class="p">(</span><span class="n">client_response</span><span class="p">)</span>
|
|
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">ListRootsRequest</span><span class="p">():</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_list_roots_callback</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
|
<span class="n">client_response</span> <span class="o">=</span> <span class="n">ClientResponse</span><span class="o">.</span><span class="n">validate_python</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">responder</span><span class="o">.</span><span class="n">respond</span><span class="p">(</span><span class="n">client_response</span><span class="p">)</span>
|
|
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">():</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="n">responder</span><span class="o">.</span><span class="n">respond</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ClientResult</span><span class="p">(</span><span class="n">root</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">()))</span>
|
|
|
|
<span class="k">case</span><span class="w"> </span><span class="k">_</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">pass</span> <span class="c1"># Task requests handled above by _task_handlers</span>
|
|
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_handle_incoming</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">req</span><span class="p">:</span> <span class="n">RequestResponder</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientResult</span><span class="p">]</span> <span class="o">|</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Handle incoming messages by forwarding to the message handler."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_message_handler</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_received_notification</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">notification</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Handle notifications from the server."""</span>
|
|
<span class="c1"># Process specific notification types</span>
|
|
<span class="k">match</span> <span class="n">notification</span><span class="o">.</span><span class="n">root</span><span class="p">:</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">LoggingMessageNotification</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_logging_callback</span><span class="p">(</span><span class="n">params</span><span class="p">)</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitCompleteNotification</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="c1"># Handle elicitation completion notification</span>
|
|
<span class="c1"># Clients MAY use this to retry requests or update UI</span>
|
|
<span class="c1"># The notification contains the elicitationId of the completed elicitation</span>
|
|
<span class="k">pass</span>
|
|
<span class="k">case</span><span class="w"> </span><span class="k">_</span><span class="p">:</span>
|
|
<span class="k">pass</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.get_server_capabilities" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">get_server_capabilities</span>
|
|
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">get_server_capabilities</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ServerCapabilities (mcp.types.ServerCapabilities)" href="#mcp.ServerCapabilities">ServerCapabilities</a></span> <span class="o">|</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Return the server capabilities received during initialization.</p>
|
|
<p>Returns None if the session has not been initialized yet.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">get_server_capabilities</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ServerCapabilities</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Return the server capabilities received during initialization.</span>
|
|
|
|
<span class="sd"> Returns None if the session has not been initialized yet.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_server_capabilities</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientSession.experimental" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">experimental</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">experimental</span><span class="p">:</span> <span class="n"><span title="mcp.client.experimental.ExperimentalClientFeatures">ExperimentalClientFeatures</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Experimental APIs for tasks and other features.</p>
|
|
<p>WARNING: These APIs are experimental and may change without notice.</p>
|
|
|
|
|
|
<details class="example" open>
|
|
<summary>Example</summary>
|
|
<p>status = await session.experimental.get_task(task_id)
|
|
result = await session.experimental.get_task_result(task_id, CallToolResult)</p>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.send_ping" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_ping</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_ping</span><span class="p">()</span> <span class="o">-></span> <span class="n"><span title="mcp.types.EmptyResult">EmptyResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a ping request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_ping</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a ping request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.send_progress_notification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_progress_notification</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a progress notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span>
|
|
<span class="normal">238</span>
|
|
<span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a progress notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ProgressNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ProgressNotificationParams</span><span class="p">(</span>
|
|
<span class="n">progressToken</span><span class="o">=</span><span class="n">progress_token</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="o">=</span><span class="n">total</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.set_logging_level" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">set_logging_level</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">set_logging_level</span><span class="p">(</span><span class="n">level</span><span class="p">:</span> <span class="n"><span title="mcp.types.LoggingLevel">LoggingLevel</span></span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.EmptyResult">EmptyResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a logging/setLevel request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span>
|
|
<span class="normal">254</span>
|
|
<span class="normal">255</span>
|
|
<span class="normal">256</span>
|
|
<span class="normal">257</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">set_logging_level</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">LoggingLevel</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a logging/setLevel request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">SetLevelRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">SetLevelRequestParams</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.list_resources" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">list_resources</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resources</span><span class="p">(</span><span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListResourcesResult (mcp.types.ListResourcesResult)" href="#mcp.ListResourcesResult">ListResourcesResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resources</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListResourcesResult (mcp.types.ListResourcesResult)" href="#mcp.ListResourcesResult">ListResourcesResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resources</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListResourcesResult (mcp.types.ListResourcesResult)" href="#mcp.ListResourcesResult">ListResourcesResult</a></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resources</span><span class="p">(</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListResourcesResult (mcp.types.ListResourcesResult)" href="#mcp.ListResourcesResult">ListResourcesResult</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resources/list request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>cursor</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Simple cursor string for pagination (deprecated, use params instead)</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>params</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Full pagination parameters including cursor and any future fields</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resources</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListResourcesRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListResourcesResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.list_resource_templates" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">list_resource_templates</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ListResourceTemplatesResult">ListResourceTemplatesResult</span></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ListResourceTemplatesResult">ListResourceTemplatesResult</span></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resource_templates</span><span class="p">()</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ListResourceTemplatesResult">ListResourceTemplatesResult</span></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ListResourceTemplatesResult">ListResourceTemplatesResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resources/templates/list request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>cursor</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Simple cursor string for pagination (deprecated, use params instead)</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>params</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Full pagination parameters including cursor and any future fields</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_resource_templates</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/templates/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListResourceTemplatesResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.read_resource" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">read_resource</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">read_resource</span><span class="p">(</span><span class="n">uri</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.AnyUrl" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.AnyUrl">AnyUrl</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ReadResourceResult (mcp.types.ReadResourceResult)" href="#mcp.ReadResourceResult">ReadResourceResult</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resources/read request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">read_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ReadResourceResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/read request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ReadResourceRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ReadResourceRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ReadResourceResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.subscribe_resource" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">subscribe_resource</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">subscribe_resource</span><span class="p">(</span><span class="n">uri</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.AnyUrl" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.AnyUrl">AnyUrl</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.EmptyResult">EmptyResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resources/subscribe request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">subscribe_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/subscribe request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">SubscribeRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">SubscribeRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.unsubscribe_resource" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">unsubscribe_resource</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">unsubscribe_resource</span><span class="p">(</span><span class="n">uri</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.AnyUrl" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.AnyUrl">AnyUrl</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.EmptyResult">EmptyResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resources/unsubscribe request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">unsubscribe_resource</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resources/unsubscribe request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">UnsubscribeRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">UnsubscribeRequestParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.call_tool" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">call_tool</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="datetime.timedelta" href="https://docs.python.org/3/library/datetime.html#datetime.timedelta">timedelta</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n"><span title="mcp.shared.session.ProgressFnT">ProgressFnT</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.CallToolResult">CallToolResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a tools/call request with optional progress callback support.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tools/call request with optional progress callback support."""</span>
|
|
|
|
<span class="n">_meta</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestParams</span><span class="o">.</span><span class="n">Meta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">_meta</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestParams</span><span class="o">.</span><span class="n">Meta</span><span class="p">(</span><span class="o">**</span><span class="n">meta</span><span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CallToolRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CallToolRequestParams</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">arguments</span><span class="o">=</span><span class="n">arguments</span><span class="p">,</span> <span class="n">_meta</span><span class="o">=</span><span class="n">_meta</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">,</span>
|
|
<span class="n">request_read_timeout_seconds</span><span class="o">=</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="o">=</span><span class="n">progress_callback</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="o">.</span><span class="n">isError</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_validate_tool_result</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.list_prompts" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">list_prompts</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_prompts</span><span class="p">(</span><span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListPromptsResult (mcp.types.ListPromptsResult)" href="#mcp.ListPromptsResult">ListPromptsResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_prompts</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListPromptsResult (mcp.types.ListPromptsResult)" href="#mcp.ListPromptsResult">ListPromptsResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_prompts</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListPromptsResult (mcp.types.ListPromptsResult)" href="#mcp.ListPromptsResult">ListPromptsResult</a></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_prompts</span><span class="p">(</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListPromptsResult (mcp.types.ListPromptsResult)" href="#mcp.ListPromptsResult">ListPromptsResult</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a prompts/list request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>cursor</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Simple cursor string for pagination (deprecated, use params instead)</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>params</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Full pagination parameters including cursor and any future fields</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">435</span>
|
|
<span class="normal">436</span>
|
|
<span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span>
|
|
<span class="normal">442</span>
|
|
<span class="normal">443</span>
|
|
<span class="normal">444</span>
|
|
<span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span>
|
|
<span class="normal">448</span>
|
|
<span class="normal">449</span>
|
|
<span class="normal">450</span>
|
|
<span class="normal">451</span>
|
|
<span class="normal">452</span>
|
|
<span class="normal">453</span>
|
|
<span class="normal">454</span>
|
|
<span class="normal">455</span>
|
|
<span class="normal">456</span>
|
|
<span class="normal">457</span>
|
|
<span class="normal">458</span>
|
|
<span class="normal">459</span>
|
|
<span class="normal">460</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_prompts</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompts/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListPromptsRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListPromptsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.get_prompt" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">get_prompt</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">get_prompt</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n">arguments</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="GetPromptResult (mcp.types.GetPromptResult)" href="#mcp.GetPromptResult">GetPromptResult</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a prompts/get request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">462</span>
|
|
<span class="normal">463</span>
|
|
<span class="normal">464</span>
|
|
<span class="normal">465</span>
|
|
<span class="normal">466</span>
|
|
<span class="normal">467</span>
|
|
<span class="normal">468</span>
|
|
<span class="normal">469</span>
|
|
<span class="normal">470</span>
|
|
<span class="normal">471</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_prompt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">GetPromptResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompts/get request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">GetPromptRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">GetPromptRequestParams</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">arguments</span><span class="o">=</span><span class="n">arguments</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">GetPromptResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.complete" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">complete</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">complete</span><span class="p">(</span>
|
|
<span class="n">ref</span><span class="p">:</span> <span class="n"><span title="mcp.types.ResourceTemplateReference">ResourceTemplateReference</span></span> <span class="o">|</span> <span class="n"><span title="mcp.types.PromptReference">PromptReference</span></span><span class="p">,</span>
|
|
<span class="n">argument</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">],</span>
|
|
<span class="n">context_arguments</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.CompleteResult">CompleteResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a completion/complete request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">473</span>
|
|
<span class="normal">474</span>
|
|
<span class="normal">475</span>
|
|
<span class="normal">476</span>
|
|
<span class="normal">477</span>
|
|
<span class="normal">478</span>
|
|
<span class="normal">479</span>
|
|
<span class="normal">480</span>
|
|
<span class="normal">481</span>
|
|
<span class="normal">482</span>
|
|
<span class="normal">483</span>
|
|
<span class="normal">484</span>
|
|
<span class="normal">485</span>
|
|
<span class="normal">486</span>
|
|
<span class="normal">487</span>
|
|
<span class="normal">488</span>
|
|
<span class="normal">489</span>
|
|
<span class="normal">490</span>
|
|
<span class="normal">491</span>
|
|
<span class="normal">492</span>
|
|
<span class="normal">493</span>
|
|
<span class="normal">494</span>
|
|
<span class="normal">495</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">complete</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">ref</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ResourceTemplateReference</span> <span class="o">|</span> <span class="n">types</span><span class="o">.</span><span class="n">PromptReference</span><span class="p">,</span>
|
|
<span class="n">argument</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
|
|
<span class="n">context_arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CompleteResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a completion/complete request."""</span>
|
|
<span class="n">context</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">context_arguments</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">context</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">CompletionContext</span><span class="p">(</span><span class="n">arguments</span><span class="o">=</span><span class="n">context_arguments</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CompleteRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CompleteRequestParams</span><span class="p">(</span>
|
|
<span class="n">ref</span><span class="o">=</span><span class="n">ref</span><span class="p">,</span>
|
|
<span class="n">argument</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CompletionArgument</span><span class="p">(</span><span class="o">**</span><span class="n">argument</span><span class="p">),</span>
|
|
<span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CompleteResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.list_tools" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">list_tools</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_tools</span><span class="p">(</span><span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListToolsResult (mcp.types.ListToolsResult)" href="#mcp.ListToolsResult">ListToolsResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_tools</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListToolsResult (mcp.types.ListToolsResult)" href="#mcp.ListToolsResult">ListToolsResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_tools</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListToolsResult (mcp.types.ListToolsResult)" href="#mcp.ListToolsResult">ListToolsResult</a></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_tools</span><span class="p">(</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n"><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ListToolsResult (mcp.types.ListToolsResult)" href="#mcp.ListToolsResult">ListToolsResult</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a tools/list request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>cursor</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Simple cursor string for pagination (deprecated, use params instead)</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>params</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.PaginatedRequestParams">PaginatedRequestParams</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Full pagination parameters including cursor and any future fields</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">507</span>
|
|
<span class="normal">508</span>
|
|
<span class="normal">509</span>
|
|
<span class="normal">510</span>
|
|
<span class="normal">511</span>
|
|
<span class="normal">512</span>
|
|
<span class="normal">513</span>
|
|
<span class="normal">514</span>
|
|
<span class="normal">515</span>
|
|
<span class="normal">516</span>
|
|
<span class="normal">517</span>
|
|
<span class="normal">518</span>
|
|
<span class="normal">519</span>
|
|
<span class="normal">520</span>
|
|
<span class="normal">521</span>
|
|
<span class="normal">522</span>
|
|
<span class="normal">523</span>
|
|
<span class="normal">524</span>
|
|
<span class="normal">525</span>
|
|
<span class="normal">526</span>
|
|
<span class="normal">527</span>
|
|
<span class="normal">528</span>
|
|
<span class="normal">529</span>
|
|
<span class="normal">530</span>
|
|
<span class="normal">531</span>
|
|
<span class="normal">532</span>
|
|
<span class="normal">533</span>
|
|
<span class="normal">534</span>
|
|
<span class="normal">535</span>
|
|
<span class="normal">536</span>
|
|
<span class="normal">537</span>
|
|
<span class="normal">538</span>
|
|
<span class="normal">539</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_tools</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tools/list request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> cursor: Simple cursor string for pagination (deprecated, use params instead)</span>
|
|
<span class="sd"> params: Full pagination parameters including cursor and any future fields</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Cannot specify both cursor and params"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">params</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">elif</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">PaginatedRequestParams</span><span class="p">(</span><span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">request_params</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListToolsRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">request_params</span><span class="p">)),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListToolsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Cache tool output schemas for future validation</span>
|
|
<span class="c1"># Note: don't clear the cache, as we may be using a cursor</span>
|
|
<span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">tools</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_output_schemas</span><span class="p">[</span><span class="n">tool</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tool</span><span class="o">.</span><span class="n">outputSchema</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSession.send_roots_list_changed" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_roots_list_changed</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_roots_list_changed</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a roots/list_changed notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">541</span>
|
|
<span class="normal">542</span>
|
|
<span class="normal">543</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_roots_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a roots/list_changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">RootsListChangedNotification</span><span class="p">()))</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ClientSessionGroup" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ClientSessionGroup</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
|
|
<p>Client for managing connections to multiple MCP servers.</p>
|
|
<p>This class is responsible for encapsulating management of server connections.
|
|
It aggregates tools, resources, and prompts from all connected servers.</p>
|
|
<p>For auxiliary handlers, such as resource subscription, this is delegated to
|
|
the client and can be accessed via the session.</p>
|
|
|
|
|
|
<details class="example-usage" open>
|
|
<summary>Example Usage</summary>
|
|
<p>name_fn = lambda name, server_info: f"{(server_info.name)}_{name}"
|
|
async with ClientSessionGroup(component_name_hook=name_fn) as group:
|
|
for server_param in server_params:
|
|
await group.connect_to_server(server_param)
|
|
...</p>
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span>
|
|
<span class="normal">101</span>
|
|
<span class="normal">102</span>
|
|
<span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span>
|
|
<span class="normal">113</span>
|
|
<span class="normal">114</span>
|
|
<span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span>
|
|
<span class="normal">164</span>
|
|
<span class="normal">165</span>
|
|
<span class="normal">166</span>
|
|
<span class="normal">167</span>
|
|
<span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span>
|
|
<span class="normal">175</span>
|
|
<span class="normal">176</span>
|
|
<span class="normal">177</span>
|
|
<span class="normal">178</span>
|
|
<span class="normal">179</span>
|
|
<span class="normal">180</span>
|
|
<span class="normal">181</span>
|
|
<span class="normal">182</span>
|
|
<span class="normal">183</span>
|
|
<span class="normal">184</span>
|
|
<span class="normal">185</span>
|
|
<span class="normal">186</span>
|
|
<span class="normal">187</span>
|
|
<span class="normal">188</span>
|
|
<span class="normal">189</span>
|
|
<span class="normal">190</span>
|
|
<span class="normal">191</span>
|
|
<span class="normal">192</span>
|
|
<span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span>
|
|
<span class="normal">213</span>
|
|
<span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span>
|
|
<span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span>
|
|
<span class="normal">238</span>
|
|
<span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span>
|
|
<span class="normal">247</span>
|
|
<span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span>
|
|
<span class="normal">254</span>
|
|
<span class="normal">255</span>
|
|
<span class="normal">256</span>
|
|
<span class="normal">257</span>
|
|
<span class="normal">258</span>
|
|
<span class="normal">259</span>
|
|
<span class="normal">260</span>
|
|
<span class="normal">261</span>
|
|
<span class="normal">262</span>
|
|
<span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span>
|
|
<span class="normal">295</span>
|
|
<span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span>
|
|
<span class="normal">305</span>
|
|
<span class="normal">306</span>
|
|
<span class="normal">307</span>
|
|
<span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span>
|
|
<span class="normal">356</span>
|
|
<span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span>
|
|
<span class="normal">398</span>
|
|
<span class="normal">399</span>
|
|
<span class="normal">400</span>
|
|
<span class="normal">401</span>
|
|
<span class="normal">402</span>
|
|
<span class="normal">403</span>
|
|
<span class="normal">404</span>
|
|
<span class="normal">405</span>
|
|
<span class="normal">406</span>
|
|
<span class="normal">407</span>
|
|
<span class="normal">408</span>
|
|
<span class="normal">409</span>
|
|
<span class="normal">410</span>
|
|
<span class="normal">411</span>
|
|
<span class="normal">412</span>
|
|
<span class="normal">413</span>
|
|
<span class="normal">414</span>
|
|
<span class="normal">415</span>
|
|
<span class="normal">416</span>
|
|
<span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span>
|
|
<span class="normal">421</span>
|
|
<span class="normal">422</span>
|
|
<span class="normal">423</span>
|
|
<span class="normal">424</span>
|
|
<span class="normal">425</span>
|
|
<span class="normal">426</span>
|
|
<span class="normal">427</span>
|
|
<span class="normal">428</span>
|
|
<span class="normal">429</span>
|
|
<span class="normal">430</span>
|
|
<span class="normal">431</span>
|
|
<span class="normal">432</span>
|
|
<span class="normal">433</span>
|
|
<span class="normal">434</span>
|
|
<span class="normal">435</span>
|
|
<span class="normal">436</span>
|
|
<span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span>
|
|
<span class="normal">442</span>
|
|
<span class="normal">443</span>
|
|
<span class="normal">444</span>
|
|
<span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ClientSessionGroup</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Client for managing connections to multiple MCP servers.</span>
|
|
|
|
<span class="sd"> This class is responsible for encapsulating management of server connections.</span>
|
|
<span class="sd"> It aggregates tools, resources, and prompts from all connected servers.</span>
|
|
|
|
<span class="sd"> For auxiliary handlers, such as resource subscription, this is delegated to</span>
|
|
<span class="sd"> the client and can be accessed via the session.</span>
|
|
|
|
<span class="sd"> Example Usage:</span>
|
|
<span class="sd"> name_fn = lambda name, server_info: f"{(server_info.name)}_{name}"</span>
|
|
<span class="sd"> async with ClientSessionGroup(component_name_hook=name_fn) as group:</span>
|
|
<span class="sd"> for server_param in server_params:</span>
|
|
<span class="sd"> await group.connect_to_server(server_param)</span>
|
|
<span class="sd"> ...</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">class</span><span class="w"> </span><span class="nc">_ComponentNames</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Used for reverse index to find components."""</span>
|
|
|
|
<span class="n">prompts</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
<span class="n">resources</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
|
|
|
<span class="c1"># Standard MCP components.</span>
|
|
<span class="n">_prompts</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Prompt</span><span class="p">]</span>
|
|
<span class="n">_resources</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Resource</span><span class="p">]</span>
|
|
<span class="n">_tools</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Client-server connection management.</span>
|
|
<span class="n">_sessions</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">,</span> <span class="n">_ComponentNames</span><span class="p">]</span>
|
|
<span class="n">_tool_to_session</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">]</span>
|
|
<span class="n">_exit_stack</span><span class="p">:</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span>
|
|
<span class="n">_session_exit_stacks</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">,</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Optional fn consuming (component_name, serverInfo) for custom names.</span>
|
|
<span class="c1"># This is provide a means to mitigate naming conflicts across servers.</span>
|
|
<span class="c1"># Example: (tool_name, serverInfo) => "{result.serverInfo.name}.{tool_name}"</span>
|
|
<span class="n">_ComponentNameHook</span><span class="p">:</span> <span class="n">TypeAlias</span> <span class="o">=</span> <span class="n">Callable</span><span class="p">[[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">],</span> <span class="nb">str</span><span class="p">]</span>
|
|
<span class="n">_component_name_hook</span><span class="p">:</span> <span class="n">_ComponentNameHook</span> <span class="o">|</span> <span class="kc">None</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">exit_stack</span><span class="p">:</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">component_name_hook</span><span class="p">:</span> <span class="n">_ComponentNameHook</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Initializes the MCP client."""</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tools</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_resources</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span> <span class="o">=</span> <span class="p">{}</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="k">if</span> <span class="n">exit_stack</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span> <span class="o">=</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span> <span class="o">=</span> <span class="n">exit_stack</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_component_name_hook</span> <span class="o">=</span> <span class="n">component_name_hook</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="fm">__aenter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Self</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="c1"># Enter the exit stack only if we created it ourselves</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span><span class="o">.</span><span class="fm">__aenter__</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="bp">self</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="fm">__aexit__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">_exc_type</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_val</span><span class="p">:</span> <span class="ne">BaseException</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_tb</span><span class="p">:</span> <span class="n">TracebackType</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Closes session exit stacks and main exit stack upon completion."""</span>
|
|
|
|
<span class="c1"># Only close the main exit stack if we created it</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
|
|
<span class="c1"># Concurrently close session stacks.</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_task_group</span><span class="p">()</span> <span class="k">as</span> <span class="n">tg</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">exit_stack</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">exit_stack</span><span class="o">.</span><span class="n">aclose</span><span class="p">)</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">sessions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the list of sessions being managed."""</span>
|
|
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="c1"># pragma: no cover</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">prompts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Prompt</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the prompts as a dictionary of names to prompts."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">resources</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Resource</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the resources as a dictionary of names to resources."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">tools</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the tools as a dictionary of names to tools."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="nd">@deprecated</span><span class="p">(</span><span class="s2">"The 'args' parameter is deprecated. Use 'arguments' instead."</span><span class="p">)</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span> <span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Executes a tool given its name and arguments."""</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="n">session_tool_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tools</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">name</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">call_tool</span><span class="p">(</span>
|
|
<span class="n">session_tool_name</span><span class="p">,</span>
|
|
<span class="n">arguments</span> <span class="k">if</span> <span class="n">args</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">args</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="o">=</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="o">=</span><span class="n">progress_callback</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="o">=</span><span class="n">meta</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">disconnect_from_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Disconnects from a single MCP server."""</span>
|
|
|
|
<span class="n">session_known_for_components</span> <span class="o">=</span> <span class="n">session</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span>
|
|
<span class="n">session_known_for_stack</span> <span class="o">=</span> <span class="n">session</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">session_known_for_components</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">session_known_for_stack</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">McpError</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">INVALID_PARAMS</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="s2">"Provided session is not managed or already disconnected."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">session_known_for_components</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">component_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">session</span><span class="p">)</span> <span class="c1"># Pop from _sessions tracking</span>
|
|
|
|
<span class="c1"># Remove prompts associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">prompts</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="c1"># Remove resources associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">resources</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="c1"># Remove tools associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">tools</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Clean up the session's resources via its dedicated exit stack</span>
|
|
<span class="k">if</span> <span class="n">session_known_for_stack</span><span class="p">:</span>
|
|
<span class="n">session_stack_to_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">session</span><span class="p">)</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">session_stack_to_close</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span> <span class="c1"># pragma: no cover</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">connect_with_session</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span> <span class="n">server_info</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Connects to a single MCP server."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_aggregate_components</span><span class="p">(</span><span class="n">server_info</span><span class="p">,</span> <span class="n">session</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">session</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">connect_to_server</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">server_params</span><span class="p">:</span> <span class="n">ServerParameters</span><span class="p">,</span>
|
|
<span class="n">session_params</span><span class="p">:</span> <span class="n">ClientSessionParameters</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Connects to a single MCP server."""</span>
|
|
<span class="n">server_info</span><span class="p">,</span> <span class="n">session</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_establish_session</span><span class="p">(</span><span class="n">server_params</span><span class="p">,</span> <span class="n">session_params</span> <span class="ow">or</span> <span class="n">ClientSessionParameters</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect_with_session</span><span class="p">(</span><span class="n">server_info</span><span class="p">,</span> <span class="n">session</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_establish_session</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">server_params</span><span class="p">:</span> <span class="n">ServerParameters</span><span class="p">,</span>
|
|
<span class="n">session_params</span><span class="p">:</span> <span class="n">ClientSessionParameters</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">,</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Establish a client session to an MCP server."""</span>
|
|
|
|
<span class="n">session_stack</span> <span class="o">=</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span><span class="p">()</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="c1"># Create read and write streams that facilitate io with the server.</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">server_params</span><span class="p">,</span> <span class="n">StdioServerParameters</span><span class="p">):</span>
|
|
<span class="n">client</span> <span class="o">=</span> <span class="n">mcp</span><span class="o">.</span><span class="n">stdio_client</span><span class="p">(</span><span class="n">server_params</span><span class="p">)</span>
|
|
<span class="n">read</span><span class="p">,</span> <span class="n">write</span> <span class="o">=</span> <span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">server_params</span><span class="p">,</span> <span class="n">SseServerParameters</span><span class="p">):</span>
|
|
<span class="n">client</span> <span class="o">=</span> <span class="n">sse_client</span><span class="p">(</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">url</span><span class="p">,</span>
|
|
<span class="n">headers</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
|
|
<span class="n">timeout</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">timeout</span><span class="p">,</span>
|
|
<span class="n">sse_read_timeout</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">sse_read_timeout</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">read</span><span class="p">,</span> <span class="n">write</span> <span class="o">=</span> <span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">httpx_client</span> <span class="o">=</span> <span class="n">create_mcp_http_client</span><span class="p">(</span>
|
|
<span class="n">headers</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span>
|
|
<span class="n">timeout</span><span class="o">=</span><span class="n">httpx</span><span class="o">.</span><span class="n">Timeout</span><span class="p">(</span>
|
|
<span class="n">server_params</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">total_seconds</span><span class="p">(),</span>
|
|
<span class="n">read</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">sse_read_timeout</span><span class="o">.</span><span class="n">total_seconds</span><span class="p">(),</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span><span class="n">httpx_client</span><span class="p">)</span>
|
|
|
|
<span class="n">client</span> <span class="o">=</span> <span class="n">streamable_http_client</span><span class="p">(</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">url</span><span class="p">,</span>
|
|
<span class="n">http_client</span><span class="o">=</span><span class="n">httpx_client</span><span class="p">,</span>
|
|
<span class="n">terminate_on_close</span><span class="o">=</span><span class="n">server_params</span><span class="o">.</span><span class="n">terminate_on_close</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">read</span><span class="p">,</span> <span class="n">write</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
|
|
|
|
<span class="n">session</span> <span class="o">=</span> <span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span>
|
|
<span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">(</span>
|
|
<span class="n">read</span><span class="p">,</span>
|
|
<span class="n">write</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="n">sampling_callback</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">sampling_callback</span><span class="p">,</span>
|
|
<span class="n">elicitation_callback</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">elicitation_callback</span><span class="p">,</span>
|
|
<span class="n">list_roots_callback</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">list_roots_callback</span><span class="p">,</span>
|
|
<span class="n">logging_callback</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">logging_callback</span><span class="p">,</span>
|
|
<span class="n">message_handler</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">message_handler</span><span class="p">,</span>
|
|
<span class="n">client_info</span><span class="o">=</span><span class="n">session_params</span><span class="o">.</span><span class="n">client_info</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">initialize</span><span class="p">()</span>
|
|
|
|
<span class="c1"># Session successfully initialized.</span>
|
|
<span class="c1"># Store its stack and register the stack with the main group stack.</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="p">[</span><span class="n">session</span><span class="p">]</span> <span class="o">=</span> <span class="n">session_stack</span>
|
|
<span class="c1"># session_stack itself becomes a resource managed by the</span>
|
|
<span class="c1"># main _exit_stack.</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span><span class="o">.</span><span class="n">enter_async_context</span><span class="p">(</span><span class="n">session_stack</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">serverInfo</span><span class="p">,</span> <span class="n">session</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="c1"># If anything during this setup fails, ensure the session-specific</span>
|
|
<span class="c1"># stack is closed.</span>
|
|
<span class="k">await</span> <span class="n">session_stack</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">raise</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_aggregate_components</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_info</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Aggregates prompts, resources, and tools from a given session."""</span>
|
|
|
|
<span class="c1"># Create a reverse index so we can find all prompts, resources, and</span>
|
|
<span class="c1"># tools belonging to this session. Used for removing components from</span>
|
|
<span class="c1"># the session group via self.disconnect_from_server.</span>
|
|
<span class="n">component_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ComponentNames</span><span class="p">()</span>
|
|
|
|
<span class="c1"># Temporary components dicts. We do not want to modify the aggregate</span>
|
|
<span class="c1"># lists in case of an intermediate failure.</span>
|
|
<span class="n">prompts_temp</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Prompt</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">resources_temp</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Resource</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">tools_temp</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">tool_to_session_temp</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
|
|
<span class="c1"># Query the server for its prompts and aggregate to list.</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">prompts</span> <span class="o">=</span> <span class="p">(</span><span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">list_prompts</span><span class="p">())</span><span class="o">.</span><span class="n">prompts</span>
|
|
<span class="k">for</span> <span class="n">prompt</span> <span class="ow">in</span> <span class="n">prompts</span><span class="p">:</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_component_name</span><span class="p">(</span><span class="n">prompt</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">server_info</span><span class="p">)</span>
|
|
<span class="n">prompts_temp</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">prompt</span>
|
|
<span class="n">component_names</span><span class="o">.</span><span class="n">prompts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">McpError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not fetch prompts: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Query the server for its resources and aggregate to list.</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">resources</span> <span class="o">=</span> <span class="p">(</span><span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">list_resources</span><span class="p">())</span><span class="o">.</span><span class="n">resources</span>
|
|
<span class="k">for</span> <span class="n">resource</span> <span class="ow">in</span> <span class="n">resources</span><span class="p">:</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_component_name</span><span class="p">(</span><span class="n">resource</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">server_info</span><span class="p">)</span>
|
|
<span class="n">resources_temp</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">resource</span>
|
|
<span class="n">component_names</span><span class="o">.</span><span class="n">resources</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">McpError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not fetch resources: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Query the server for its tools and aggregate to list.</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">tools</span> <span class="o">=</span> <span class="p">(</span><span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">list_tools</span><span class="p">())</span><span class="o">.</span><span class="n">tools</span>
|
|
<span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">tools</span><span class="p">:</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_component_name</span><span class="p">(</span><span class="n">tool</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">server_info</span><span class="p">)</span>
|
|
<span class="n">tools_temp</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tool</span>
|
|
<span class="n">tool_to_session_temp</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">session</span>
|
|
<span class="n">component_names</span><span class="o">.</span><span class="n">tools</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">McpError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not fetch tools: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Clean up exit stack for session if we couldn't retrieve anything</span>
|
|
<span class="c1"># from the server.</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">((</span><span class="n">prompts_temp</span><span class="p">,</span> <span class="n">resources_temp</span><span class="p">,</span> <span class="n">tools_temp</span><span class="p">)):</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="p">[</span><span class="n">session</span><span class="p">]</span> <span class="c1"># pragma: no cover</span>
|
|
|
|
<span class="c1"># Check for duplicates.</span>
|
|
<span class="n">matching_prompts</span> <span class="o">=</span> <span class="n">prompts_temp</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="o">&</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">matching_prompts</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">McpError</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">INVALID_PARAMS</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">matching_prompts</span><span class="si">}</span><span class="s2"> already exist in group prompts."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">matching_resources</span> <span class="o">=</span> <span class="n">resources_temp</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="o">&</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">matching_resources</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">McpError</span><span class="p">(</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">INVALID_PARAMS</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">matching_resources</span><span class="si">}</span><span class="s2"> already exist in group resources."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">matching_tools</span> <span class="o">=</span> <span class="n">tools_temp</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="o">&</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">matching_tools</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">McpError</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">INVALID_PARAMS</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">matching_tools</span><span class="si">}</span><span class="s2"> already exist in group tools."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Aggregate components.</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span><span class="p">[</span><span class="n">session</span><span class="p">]</span> <span class="o">=</span> <span class="n">component_names</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">prompts_temp</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">resources_temp</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">tools_temp</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">tool_to_session_temp</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">_component_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">server_info</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_component_name_hook</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_component_name_hook</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">server_info</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">name</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.__init__" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">__init__</span>
|
|
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">__init__</span><span class="p">(</span>
|
|
<span class="n">exit_stack</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="contextlib.AsyncExitStack" href="https://docs.python.org/3/library/contextlib.html#contextlib.AsyncExitStack">AsyncExitStack</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">component_name_hook</span><span class="p">:</span> <span class="n"><span title="_ComponentNameHook">_ComponentNameHook</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Initializes the MCP client.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">exit_stack</span><span class="p">:</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">component_name_hook</span><span class="p">:</span> <span class="n">_ComponentNameHook</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Initializes the MCP client."""</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tools</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_resources</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span> <span class="o">=</span> <span class="p">{}</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="k">if</span> <span class="n">exit_stack</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span> <span class="o">=</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">AsyncExitStack</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span> <span class="o">=</span> <span class="n">exit_stack</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_component_name_hook</span> <span class="o">=</span> <span class="n">component_name_hook</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.__aexit__" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">__aexit__</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">__aexit__</span><span class="p">(</span>
|
|
<span class="n">_exc_type</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#type">type</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_val</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_tb</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="types.TracebackType" href="https://docs.python.org/3/library/types.html#types.TracebackType">TracebackType</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Closes session exit stacks and main exit stack upon completion.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span>
|
|
<span class="normal">164</span>
|
|
<span class="normal">165</span>
|
|
<span class="normal">166</span>
|
|
<span class="normal">167</span>
|
|
<span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="fm">__aexit__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">_exc_type</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_val</span><span class="p">:</span> <span class="ne">BaseException</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">_exc_tb</span><span class="p">:</span> <span class="n">TracebackType</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Closes session exit stacks and main exit stack upon completion."""</span>
|
|
|
|
<span class="c1"># Only close the main exit stack if we created it</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_owns_exit_stack</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
|
|
<span class="c1"># Concurrently close session stacks.</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_task_group</span><span class="p">()</span> <span class="k">as</span> <span class="n">tg</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">exit_stack</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">exit_stack</span><span class="o">.</span><span class="n">aclose</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.sessions" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">sessions</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">sessions</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="ClientSession (mcp.ClientSession)" href="#mcp.ClientSession">ClientSession</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the list of sessions being managed.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.prompts" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">prompts</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">prompts</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><span title="mcp.types.Prompt">Prompt</span></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the prompts as a dictionary of names to prompts.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.resources" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">resources</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">resources</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-internal" title="Resource (mcp.types.Resource)" href="#mcp.Resource">Resource</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the resources as a dictionary of names to resources.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.tools" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">tools</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">tools</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-internal" title="Tool (mcp.types.Tool)" href="#mcp.Tool">Tool</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the tools as a dictionary of names to tools.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.call_tool" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">call_tool</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">],</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="datetime.timedelta" href="https://docs.python.org/3/library/datetime.html#datetime.timedelta">timedelta</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n"><span title="mcp.shared.session.ProgressFnT">ProgressFnT</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.CallToolResult">CallToolResult</span></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">],</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="datetime.timedelta" href="https://docs.python.org/3/library/datetime.html#datetime.timedelta">timedelta</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n"><span title="mcp.shared.session.ProgressFnT">ProgressFnT</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.CallToolResult">CallToolResult</span></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="datetime.timedelta" href="https://docs.python.org/3/library/datetime.html#datetime.timedelta">timedelta</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n"><span title="mcp.shared.session.ProgressFnT">ProgressFnT</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.CallToolResult">CallToolResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Executes a tool given its name and arguments.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span>
|
|
<span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">call_tool</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">arguments</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="p">:</span> <span class="n">timedelta</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="p">:</span> <span class="n">ProgressFnT</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CallToolResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Executes a tool given its name and arguments."""</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="n">session_tool_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tools</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">name</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="n">session</span><span class="o">.</span><span class="n">call_tool</span><span class="p">(</span>
|
|
<span class="n">session_tool_name</span><span class="p">,</span>
|
|
<span class="n">arguments</span> <span class="k">if</span> <span class="n">args</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">args</span><span class="p">,</span>
|
|
<span class="n">read_timeout_seconds</span><span class="o">=</span><span class="n">read_timeout_seconds</span><span class="p">,</span>
|
|
<span class="n">progress_callback</span><span class="o">=</span><span class="n">progress_callback</span><span class="p">,</span>
|
|
<span class="n">meta</span><span class="o">=</span><span class="n">meta</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.disconnect_from_server" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">disconnect_from_server</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">disconnect_from_server</span><span class="p">(</span><span class="n">session</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ClientSession (mcp.ClientSession)" href="#mcp.ClientSession">ClientSession</a></span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Disconnects from a single MCP server.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span>
|
|
<span class="normal">247</span>
|
|
<span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span>
|
|
<span class="normal">254</span>
|
|
<span class="normal">255</span>
|
|
<span class="normal">256</span>
|
|
<span class="normal">257</span>
|
|
<span class="normal">258</span>
|
|
<span class="normal">259</span>
|
|
<span class="normal">260</span>
|
|
<span class="normal">261</span>
|
|
<span class="normal">262</span>
|
|
<span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">disconnect_from_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Disconnects from a single MCP server."""</span>
|
|
|
|
<span class="n">session_known_for_components</span> <span class="o">=</span> <span class="n">session</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span>
|
|
<span class="n">session_known_for_stack</span> <span class="o">=</span> <span class="n">session</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">session_known_for_components</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">session_known_for_stack</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">McpError</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">INVALID_PARAMS</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="s2">"Provided session is not managed or already disconnected."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">session_known_for_components</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">component_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sessions</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">session</span><span class="p">)</span> <span class="c1"># Pop from _sessions tracking</span>
|
|
|
|
<span class="c1"># Remove prompts associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">prompts</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prompts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="c1"># Remove resources associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">resources</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="c1"># Remove tools associated with the session.</span>
|
|
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">component_names</span><span class="o">.</span><span class="n">tools</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tools</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tool_to_session</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Clean up the session's resources via its dedicated exit stack</span>
|
|
<span class="k">if</span> <span class="n">session_known_for_stack</span><span class="p">:</span>
|
|
<span class="n">session_stack_to_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session_exit_stacks</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">session</span><span class="p">)</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">session_stack_to_close</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span> <span class="c1"># pragma: no cover</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.connect_with_session" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">connect_with_session</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">connect_with_session</span><span class="p">(</span>
|
|
<span class="n">server_info</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="Implementation (mcp.types.Implementation)" href="#mcp.Implementation">Implementation</a></span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ClientSession (mcp.ClientSession)" href="#mcp.ClientSession">ClientSession</a></span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ClientSession (mcp.ClientSession)" href="#mcp.ClientSession">ClientSession</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Connects to a single MCP server.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">connect_with_session</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span> <span class="n">server_info</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">,</span> <span class="n">session</span><span class="p">:</span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Connects to a single MCP server."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_aggregate_components</span><span class="p">(</span><span class="n">server_info</span><span class="p">,</span> <span class="n">session</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">session</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ClientSessionGroup.connect_to_server" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">connect_to_server</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">connect_to_server</span><span class="p">(</span>
|
|
<span class="n">server_params</span><span class="p">:</span> <span class="n"><span title="mcp.client.session_group.ServerParameters">ServerParameters</span></span><span class="p">,</span>
|
|
<span class="n">session_params</span><span class="p">:</span> <span class="n"><span title="mcp.client.session_group.ClientSessionParameters">ClientSessionParameters</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="ClientSession (mcp.ClientSession)" href="#mcp.ClientSession">ClientSession</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Connects to a single MCP server.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/session_group.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">connect_to_server</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">server_params</span><span class="p">:</span> <span class="n">ServerParameters</span><span class="p">,</span>
|
|
<span class="n">session_params</span><span class="p">:</span> <span class="n">ClientSessionParameters</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">mcp</span><span class="o">.</span><span class="n">ClientSession</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Connects to a single MCP server."""</span>
|
|
<span class="n">server_info</span><span class="p">,</span> <span class="n">session</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_establish_session</span><span class="p">(</span><span class="n">server_params</span><span class="p">,</span> <span class="n">session_params</span> <span class="ow">or</span> <span class="n">ClientSessionParameters</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect_with_session</span><span class="p">(</span><span class="n">server_info</span><span class="p">,</span> <span class="n">session</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.StdioServerParameters" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">StdioServerParameters</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/stdio/__init__.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 72</span>
|
|
<span class="normal"> 73</span>
|
|
<span class="normal"> 74</span>
|
|
<span class="normal"> 75</span>
|
|
<span class="normal"> 76</span>
|
|
<span class="normal"> 77</span>
|
|
<span class="normal"> 78</span>
|
|
<span class="normal"> 79</span>
|
|
<span class="normal"> 80</span>
|
|
<span class="normal"> 81</span>
|
|
<span class="normal"> 82</span>
|
|
<span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span>
|
|
<span class="normal">101</span>
|
|
<span class="normal">102</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">StdioServerParameters</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="n">command</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""The executable to run to start the server."""</span>
|
|
|
|
<span class="n">args</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">default_factory</span><span class="o">=</span><span class="nb">list</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""Command line arguments to pass to the executable."""</span>
|
|
|
|
<span class="n">env</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> The environment to use when spawning the process.</span>
|
|
|
|
<span class="sd"> If not specified, the result of get_default_environment() will be used.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">cwd</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""The working directory to use when spawning the process."""</span>
|
|
|
|
<span class="n">encoding</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"utf-8"</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> The text encoding used when sending/receiving messages to the server</span>
|
|
|
|
<span class="sd"> defaults to utf-8</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">encoding_error_handler</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"strict"</span><span class="p">,</span> <span class="s2">"ignore"</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"strict"</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> The text encoding error handler.</span>
|
|
|
|
<span class="sd"> See https://docs.python.org/3/library/codecs.html#codec-base-classes for</span>
|
|
<span class="sd"> explanations of possible values</span>
|
|
<span class="sd"> """</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.command" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">command</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">command</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The executable to run to start the server.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.args" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">args</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">args</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span><span class="n"><span title="pydantic.Field(default_factory)">default_factory</span></span><span class="o">=</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Command line arguments to pass to the executable.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.env" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">env</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">env</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The environment to use when spawning the process.</p>
|
|
<p>If not specified, the result of get_default_environment() will be used.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.cwd" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">cwd</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">cwd</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" title="pathlib.Path" href="https://docs.python.org/3/library/pathlib.html#pathlib.Path">Path</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The working directory to use when spawning the process.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.encoding" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">encoding</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">encoding</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">=</span> <span class="s1">'utf-8'</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The text encoding used when sending/receiving messages to the server</p>
|
|
<p>defaults to utf-8</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.StdioServerParameters.encoding_error_handler" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">encoding_error_handler</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">encoding_error_handler</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a></span><span class="p">[</span>
|
|
<span class="s2">"strict"</span><span class="p">,</span> <span class="s2">"ignore"</span><span class="p">,</span> <span class="s2">"replace"</span>
|
|
<span class="p">]</span> <span class="o">=</span> <span class="s2">"strict"</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The text encoding error handler.</p>
|
|
<p>See https://docs.python.org/3/library/codecs.html#codec-base-classes for
|
|
explanations of possible values</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="mcp.stdio_client" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">stdio_client</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">stdio_client</span><span class="p">(</span>
|
|
<span class="n">server</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="StdioServerParameters (mcp.client.stdio.StdioServerParameters)" href="#mcp.StdioServerParameters">StdioServerParameters</a></span><span class="p">,</span> <span class="n">errlog</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.TextIO" href="https://docs.python.org/3/library/typing.html#typing.TextIO">TextIO</a></span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="sys.stderr" href="https://docs.python.org/3/library/sys.html#sys.stderr">stderr</a></span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Client transport for stdio: this will connect to a server by spawning a
|
|
process and communicating with it over stdin/stdout.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/client/stdio/__init__.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span>
|
|
<span class="normal">113</span>
|
|
<span class="normal">114</span>
|
|
<span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span>
|
|
<span class="normal">164</span>
|
|
<span class="normal">165</span>
|
|
<span class="normal">166</span>
|
|
<span class="normal">167</span>
|
|
<span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span>
|
|
<span class="normal">175</span>
|
|
<span class="normal">176</span>
|
|
<span class="normal">177</span>
|
|
<span class="normal">178</span>
|
|
<span class="normal">179</span>
|
|
<span class="normal">180</span>
|
|
<span class="normal">181</span>
|
|
<span class="normal">182</span>
|
|
<span class="normal">183</span>
|
|
<span class="normal">184</span>
|
|
<span class="normal">185</span>
|
|
<span class="normal">186</span>
|
|
<span class="normal">187</span>
|
|
<span class="normal">188</span>
|
|
<span class="normal">189</span>
|
|
<span class="normal">190</span>
|
|
<span class="normal">191</span>
|
|
<span class="normal">192</span>
|
|
<span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span>
|
|
<span class="normal">213</span>
|
|
<span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@asynccontextmanager</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdio_client</span><span class="p">(</span><span class="n">server</span><span class="p">:</span> <span class="n">StdioServerParameters</span><span class="p">,</span> <span class="n">errlog</span><span class="p">:</span> <span class="n">TextIO</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Client transport for stdio: this will connect to a server by spawning a</span>
|
|
<span class="sd"> process and communicating with it over stdin/stdout.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">read_stream</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">]</span>
|
|
<span class="n">read_stream_writer</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">]</span>
|
|
|
|
<span class="n">write_stream</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">]</span>
|
|
<span class="n">write_stream_reader</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">]</span>
|
|
|
|
<span class="n">read_stream_writer</span><span class="p">,</span> <span class="n">read_stream</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_memory_object_stream</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="n">write_stream</span><span class="p">,</span> <span class="n">write_stream_reader</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_memory_object_stream</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">command</span> <span class="o">=</span> <span class="n">_get_executable_command</span><span class="p">(</span><span class="n">server</span><span class="o">.</span><span class="n">command</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Open process with stderr piped for capture</span>
|
|
<span class="n">process</span> <span class="o">=</span> <span class="k">await</span> <span class="n">_create_platform_compatible_process</span><span class="p">(</span>
|
|
<span class="n">command</span><span class="o">=</span><span class="n">command</span><span class="p">,</span>
|
|
<span class="n">args</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
|
|
<span class="n">env</span><span class="o">=</span><span class="p">({</span><span class="o">**</span><span class="n">get_default_environment</span><span class="p">(),</span> <span class="o">**</span><span class="n">server</span><span class="o">.</span><span class="n">env</span><span class="p">}</span> <span class="k">if</span> <span class="n">server</span><span class="o">.</span><span class="n">env</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">get_default_environment</span><span class="p">()),</span>
|
|
<span class="n">errlog</span><span class="o">=</span><span class="n">errlog</span><span class="p">,</span>
|
|
<span class="n">cwd</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">cwd</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">OSError</span><span class="p">:</span>
|
|
<span class="c1"># Clean up streams if process creation fails</span>
|
|
<span class="k">await</span> <span class="n">read_stream</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">write_stream</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">write_stream_reader</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">raise</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdout_reader</span><span class="p">():</span>
|
|
<span class="k">assert</span> <span class="n">process</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="s2">"Opened process is missing stdout"</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">read_stream_writer</span><span class="p">:</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="s2">""</span>
|
|
<span class="k">async</span> <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">TextReceiveStream</span><span class="p">(</span>
|
|
<span class="n">process</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span>
|
|
<span class="n">encoding</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">encoding</span><span class="p">,</span>
|
|
<span class="n">errors</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">encoding_error_handler</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="n">lines</span> <span class="o">=</span> <span class="p">(</span><span class="n">buffer</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="n">lines</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
|
|
|
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">message</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCMessage</span><span class="o">.</span><span class="n">model_validate_json</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s2">"Failed to parse JSONRPC message from server"</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
|
|
<span class="k">continue</span>
|
|
|
|
<span class="n">session_message</span> <span class="o">=</span> <span class="n">SessionMessage</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">session_message</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">anyio</span><span class="o">.</span><span class="n">ClosedResourceError</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">anyio</span><span class="o">.</span><span class="n">lowlevel</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdin_writer</span><span class="p">():</span>
|
|
<span class="k">assert</span> <span class="n">process</span><span class="o">.</span><span class="n">stdin</span><span class="p">,</span> <span class="s2">"Opened process is missing stdin"</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">write_stream_reader</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">for</span> <span class="n">session_message</span> <span class="ow">in</span> <span class="n">write_stream_reader</span><span class="p">:</span>
|
|
<span class="n">json</span> <span class="o">=</span> <span class="n">session_message</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">model_dump_json</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">process</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">send</span><span class="p">(</span>
|
|
<span class="p">(</span><span class="n">json</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
|
|
<span class="n">encoding</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">encoding</span><span class="p">,</span>
|
|
<span class="n">errors</span><span class="o">=</span><span class="n">server</span><span class="o">.</span><span class="n">encoding_error_handler</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">anyio</span><span class="o">.</span><span class="n">ClosedResourceError</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">anyio</span><span class="o">.</span><span class="n">lowlevel</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">with</span> <span class="p">(</span>
|
|
<span class="n">anyio</span><span class="o">.</span><span class="n">create_task_group</span><span class="p">()</span> <span class="k">as</span> <span class="n">tg</span><span class="p">,</span>
|
|
<span class="n">process</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">stdout_reader</span><span class="p">)</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">stdin_writer</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">yield</span> <span class="n">read_stream</span><span class="p">,</span> <span class="n">write_stream</span>
|
|
<span class="k">finally</span><span class="p">:</span>
|
|
<span class="c1"># MCP spec: stdio shutdown sequence</span>
|
|
<span class="c1"># 1. Close input stream to server</span>
|
|
<span class="c1"># 2. Wait for server to exit, or send SIGTERM if it doesn't exit in time</span>
|
|
<span class="c1"># 3. Send SIGKILL if still not exited</span>
|
|
<span class="k">if</span> <span class="n">process</span><span class="o">.</span><span class="n">stdin</span><span class="p">:</span> <span class="c1"># pragma: no branch</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="n">process</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="c1"># stdin might already be closed, which is fine</span>
|
|
<span class="k">pass</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="c1"># Give the process time to exit gracefully after stdin closes</span>
|
|
<span class="k">with</span> <span class="n">anyio</span><span class="o">.</span><span class="n">fail_after</span><span class="p">(</span><span class="n">PROCESS_TERMINATION_TIMEOUT</span><span class="p">):</span>
|
|
<span class="k">await</span> <span class="n">process</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="ne">TimeoutError</span><span class="p">:</span>
|
|
<span class="c1"># Process didn't exit from stdin closure, use platform-specific termination</span>
|
|
<span class="c1"># which handles SIGTERM -> SIGKILL escalation</span>
|
|
<span class="k">await</span> <span class="n">_terminate_process_tree</span><span class="p">(</span><span class="n">process</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ProcessLookupError</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="c1"># Process already exited, which is fine</span>
|
|
<span class="k">pass</span>
|
|
<span class="k">await</span> <span class="n">read_stream</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">write_stream</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
<span class="k">await</span> <span class="n">write_stream_reader</span><span class="o">.</span><span class="n">aclose</span><span class="p">()</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ServerSession" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ServerSession</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.shared.session.BaseSession">BaseSession</span>[<span title="mcp.types.ServerRequest">ServerRequest</span>, <span title="mcp.types.ServerNotification">ServerNotification</span>, <span title="mcp.types.ServerResult">ServerResult</span>, <span title="mcp.types.ClientRequest">ClientRequest</span>, <span title="mcp.types.ClientNotification">ClientNotification</span>]</code></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 75</span>
|
|
<span class="normal"> 76</span>
|
|
<span class="normal"> 77</span>
|
|
<span class="normal"> 78</span>
|
|
<span class="normal"> 79</span>
|
|
<span class="normal"> 80</span>
|
|
<span class="normal"> 81</span>
|
|
<span class="normal"> 82</span>
|
|
<span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span>
|
|
<span class="normal">101</span>
|
|
<span class="normal">102</span>
|
|
<span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span>
|
|
<span class="normal">113</span>
|
|
<span class="normal">114</span>
|
|
<span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span>
|
|
<span class="normal">164</span>
|
|
<span class="normal">165</span>
|
|
<span class="normal">166</span>
|
|
<span class="normal">167</span>
|
|
<span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span>
|
|
<span class="normal">175</span>
|
|
<span class="normal">176</span>
|
|
<span class="normal">177</span>
|
|
<span class="normal">178</span>
|
|
<span class="normal">179</span>
|
|
<span class="normal">180</span>
|
|
<span class="normal">181</span>
|
|
<span class="normal">182</span>
|
|
<span class="normal">183</span>
|
|
<span class="normal">184</span>
|
|
<span class="normal">185</span>
|
|
<span class="normal">186</span>
|
|
<span class="normal">187</span>
|
|
<span class="normal">188</span>
|
|
<span class="normal">189</span>
|
|
<span class="normal">190</span>
|
|
<span class="normal">191</span>
|
|
<span class="normal">192</span>
|
|
<span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span>
|
|
<span class="normal">213</span>
|
|
<span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span>
|
|
<span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span>
|
|
<span class="normal">238</span>
|
|
<span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span>
|
|
<span class="normal">247</span>
|
|
<span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span>
|
|
<span class="normal">254</span>
|
|
<span class="normal">255</span>
|
|
<span class="normal">256</span>
|
|
<span class="normal">257</span>
|
|
<span class="normal">258</span>
|
|
<span class="normal">259</span>
|
|
<span class="normal">260</span>
|
|
<span class="normal">261</span>
|
|
<span class="normal">262</span>
|
|
<span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span>
|
|
<span class="normal">295</span>
|
|
<span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span>
|
|
<span class="normal">305</span>
|
|
<span class="normal">306</span>
|
|
<span class="normal">307</span>
|
|
<span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span>
|
|
<span class="normal">356</span>
|
|
<span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span>
|
|
<span class="normal">398</span>
|
|
<span class="normal">399</span>
|
|
<span class="normal">400</span>
|
|
<span class="normal">401</span>
|
|
<span class="normal">402</span>
|
|
<span class="normal">403</span>
|
|
<span class="normal">404</span>
|
|
<span class="normal">405</span>
|
|
<span class="normal">406</span>
|
|
<span class="normal">407</span>
|
|
<span class="normal">408</span>
|
|
<span class="normal">409</span>
|
|
<span class="normal">410</span>
|
|
<span class="normal">411</span>
|
|
<span class="normal">412</span>
|
|
<span class="normal">413</span>
|
|
<span class="normal">414</span>
|
|
<span class="normal">415</span>
|
|
<span class="normal">416</span>
|
|
<span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span>
|
|
<span class="normal">421</span>
|
|
<span class="normal">422</span>
|
|
<span class="normal">423</span>
|
|
<span class="normal">424</span>
|
|
<span class="normal">425</span>
|
|
<span class="normal">426</span>
|
|
<span class="normal">427</span>
|
|
<span class="normal">428</span>
|
|
<span class="normal">429</span>
|
|
<span class="normal">430</span>
|
|
<span class="normal">431</span>
|
|
<span class="normal">432</span>
|
|
<span class="normal">433</span>
|
|
<span class="normal">434</span>
|
|
<span class="normal">435</span>
|
|
<span class="normal">436</span>
|
|
<span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span>
|
|
<span class="normal">442</span>
|
|
<span class="normal">443</span>
|
|
<span class="normal">444</span>
|
|
<span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span>
|
|
<span class="normal">448</span>
|
|
<span class="normal">449</span>
|
|
<span class="normal">450</span>
|
|
<span class="normal">451</span>
|
|
<span class="normal">452</span>
|
|
<span class="normal">453</span>
|
|
<span class="normal">454</span>
|
|
<span class="normal">455</span>
|
|
<span class="normal">456</span>
|
|
<span class="normal">457</span>
|
|
<span class="normal">458</span>
|
|
<span class="normal">459</span>
|
|
<span class="normal">460</span>
|
|
<span class="normal">461</span>
|
|
<span class="normal">462</span>
|
|
<span class="normal">463</span>
|
|
<span class="normal">464</span>
|
|
<span class="normal">465</span>
|
|
<span class="normal">466</span>
|
|
<span class="normal">467</span>
|
|
<span class="normal">468</span>
|
|
<span class="normal">469</span>
|
|
<span class="normal">470</span>
|
|
<span class="normal">471</span>
|
|
<span class="normal">472</span>
|
|
<span class="normal">473</span>
|
|
<span class="normal">474</span>
|
|
<span class="normal">475</span>
|
|
<span class="normal">476</span>
|
|
<span class="normal">477</span>
|
|
<span class="normal">478</span>
|
|
<span class="normal">479</span>
|
|
<span class="normal">480</span>
|
|
<span class="normal">481</span>
|
|
<span class="normal">482</span>
|
|
<span class="normal">483</span>
|
|
<span class="normal">484</span>
|
|
<span class="normal">485</span>
|
|
<span class="normal">486</span>
|
|
<span class="normal">487</span>
|
|
<span class="normal">488</span>
|
|
<span class="normal">489</span>
|
|
<span class="normal">490</span>
|
|
<span class="normal">491</span>
|
|
<span class="normal">492</span>
|
|
<span class="normal">493</span>
|
|
<span class="normal">494</span>
|
|
<span class="normal">495</span>
|
|
<span class="normal">496</span>
|
|
<span class="normal">497</span>
|
|
<span class="normal">498</span>
|
|
<span class="normal">499</span>
|
|
<span class="normal">500</span>
|
|
<span class="normal">501</span>
|
|
<span class="normal">502</span>
|
|
<span class="normal">503</span>
|
|
<span class="normal">504</span>
|
|
<span class="normal">505</span>
|
|
<span class="normal">506</span>
|
|
<span class="normal">507</span>
|
|
<span class="normal">508</span>
|
|
<span class="normal">509</span>
|
|
<span class="normal">510</span>
|
|
<span class="normal">511</span>
|
|
<span class="normal">512</span>
|
|
<span class="normal">513</span>
|
|
<span class="normal">514</span>
|
|
<span class="normal">515</span>
|
|
<span class="normal">516</span>
|
|
<span class="normal">517</span>
|
|
<span class="normal">518</span>
|
|
<span class="normal">519</span>
|
|
<span class="normal">520</span>
|
|
<span class="normal">521</span>
|
|
<span class="normal">522</span>
|
|
<span class="normal">523</span>
|
|
<span class="normal">524</span>
|
|
<span class="normal">525</span>
|
|
<span class="normal">526</span>
|
|
<span class="normal">527</span>
|
|
<span class="normal">528</span>
|
|
<span class="normal">529</span>
|
|
<span class="normal">530</span>
|
|
<span class="normal">531</span>
|
|
<span class="normal">532</span>
|
|
<span class="normal">533</span>
|
|
<span class="normal">534</span>
|
|
<span class="normal">535</span>
|
|
<span class="normal">536</span>
|
|
<span class="normal">537</span>
|
|
<span class="normal">538</span>
|
|
<span class="normal">539</span>
|
|
<span class="normal">540</span>
|
|
<span class="normal">541</span>
|
|
<span class="normal">542</span>
|
|
<span class="normal">543</span>
|
|
<span class="normal">544</span>
|
|
<span class="normal">545</span>
|
|
<span class="normal">546</span>
|
|
<span class="normal">547</span>
|
|
<span class="normal">548</span>
|
|
<span class="normal">549</span>
|
|
<span class="normal">550</span>
|
|
<span class="normal">551</span>
|
|
<span class="normal">552</span>
|
|
<span class="normal">553</span>
|
|
<span class="normal">554</span>
|
|
<span class="normal">555</span>
|
|
<span class="normal">556</span>
|
|
<span class="normal">557</span>
|
|
<span class="normal">558</span>
|
|
<span class="normal">559</span>
|
|
<span class="normal">560</span>
|
|
<span class="normal">561</span>
|
|
<span class="normal">562</span>
|
|
<span class="normal">563</span>
|
|
<span class="normal">564</span>
|
|
<span class="normal">565</span>
|
|
<span class="normal">566</span>
|
|
<span class="normal">567</span>
|
|
<span class="normal">568</span>
|
|
<span class="normal">569</span>
|
|
<span class="normal">570</span>
|
|
<span class="normal">571</span>
|
|
<span class="normal">572</span>
|
|
<span class="normal">573</span>
|
|
<span class="normal">574</span>
|
|
<span class="normal">575</span>
|
|
<span class="normal">576</span>
|
|
<span class="normal">577</span>
|
|
<span class="normal">578</span>
|
|
<span class="normal">579</span>
|
|
<span class="normal">580</span>
|
|
<span class="normal">581</span>
|
|
<span class="normal">582</span>
|
|
<span class="normal">583</span>
|
|
<span class="normal">584</span>
|
|
<span class="normal">585</span>
|
|
<span class="normal">586</span>
|
|
<span class="normal">587</span>
|
|
<span class="normal">588</span>
|
|
<span class="normal">589</span>
|
|
<span class="normal">590</span>
|
|
<span class="normal">591</span>
|
|
<span class="normal">592</span>
|
|
<span class="normal">593</span>
|
|
<span class="normal">594</span>
|
|
<span class="normal">595</span>
|
|
<span class="normal">596</span>
|
|
<span class="normal">597</span>
|
|
<span class="normal">598</span>
|
|
<span class="normal">599</span>
|
|
<span class="normal">600</span>
|
|
<span class="normal">601</span>
|
|
<span class="normal">602</span>
|
|
<span class="normal">603</span>
|
|
<span class="normal">604</span>
|
|
<span class="normal">605</span>
|
|
<span class="normal">606</span>
|
|
<span class="normal">607</span>
|
|
<span class="normal">608</span>
|
|
<span class="normal">609</span>
|
|
<span class="normal">610</span>
|
|
<span class="normal">611</span>
|
|
<span class="normal">612</span>
|
|
<span class="normal">613</span>
|
|
<span class="normal">614</span>
|
|
<span class="normal">615</span>
|
|
<span class="normal">616</span>
|
|
<span class="normal">617</span>
|
|
<span class="normal">618</span>
|
|
<span class="normal">619</span>
|
|
<span class="normal">620</span>
|
|
<span class="normal">621</span>
|
|
<span class="normal">622</span>
|
|
<span class="normal">623</span>
|
|
<span class="normal">624</span>
|
|
<span class="normal">625</span>
|
|
<span class="normal">626</span>
|
|
<span class="normal">627</span>
|
|
<span class="normal">628</span>
|
|
<span class="normal">629</span>
|
|
<span class="normal">630</span>
|
|
<span class="normal">631</span>
|
|
<span class="normal">632</span>
|
|
<span class="normal">633</span>
|
|
<span class="normal">634</span>
|
|
<span class="normal">635</span>
|
|
<span class="normal">636</span>
|
|
<span class="normal">637</span>
|
|
<span class="normal">638</span>
|
|
<span class="normal">639</span>
|
|
<span class="normal">640</span>
|
|
<span class="normal">641</span>
|
|
<span class="normal">642</span>
|
|
<span class="normal">643</span>
|
|
<span class="normal">644</span>
|
|
<span class="normal">645</span>
|
|
<span class="normal">646</span>
|
|
<span class="normal">647</span>
|
|
<span class="normal">648</span>
|
|
<span class="normal">649</span>
|
|
<span class="normal">650</span>
|
|
<span class="normal">651</span>
|
|
<span class="normal">652</span>
|
|
<span class="normal">653</span>
|
|
<span class="normal">654</span>
|
|
<span class="normal">655</span>
|
|
<span class="normal">656</span>
|
|
<span class="normal">657</span>
|
|
<span class="normal">658</span>
|
|
<span class="normal">659</span>
|
|
<span class="normal">660</span>
|
|
<span class="normal">661</span>
|
|
<span class="normal">662</span>
|
|
<span class="normal">663</span>
|
|
<span class="normal">664</span>
|
|
<span class="normal">665</span>
|
|
<span class="normal">666</span>
|
|
<span class="normal">667</span>
|
|
<span class="normal">668</span>
|
|
<span class="normal">669</span>
|
|
<span class="normal">670</span>
|
|
<span class="normal">671</span>
|
|
<span class="normal">672</span>
|
|
<span class="normal">673</span>
|
|
<span class="normal">674</span>
|
|
<span class="normal">675</span>
|
|
<span class="normal">676</span>
|
|
<span class="normal">677</span>
|
|
<span class="normal">678</span>
|
|
<span class="normal">679</span>
|
|
<span class="normal">680</span>
|
|
<span class="normal">681</span>
|
|
<span class="normal">682</span>
|
|
<span class="normal">683</span>
|
|
<span class="normal">684</span>
|
|
<span class="normal">685</span>
|
|
<span class="normal">686</span>
|
|
<span class="normal">687</span>
|
|
<span class="normal">688</span>
|
|
<span class="normal">689</span>
|
|
<span class="normal">690</span>
|
|
<span class="normal">691</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ServerSession</span><span class="p">(</span>
|
|
<span class="n">BaseSession</span><span class="p">[</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerResult</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">,</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="p">):</span>
|
|
<span class="n">_initialized</span><span class="p">:</span> <span class="n">InitializationState</span> <span class="o">=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">NotInitialized</span>
|
|
<span class="n">_client_params</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">InitializeRequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">_experimental_features</span><span class="p">:</span> <span class="n">ExperimentalServerSessionFeatures</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">read_stream</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">],</span>
|
|
<span class="n">write_stream</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">],</span>
|
|
<span class="n">init_options</span><span class="p">:</span> <span class="n">InitializationOptions</span><span class="p">,</span>
|
|
<span class="n">stateless</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">read_stream</span><span class="p">,</span> <span class="n">write_stream</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">InitializationState</span><span class="o">.</span><span class="n">Initialized</span> <span class="k">if</span> <span class="n">stateless</span> <span class="k">else</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">NotInitialized</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span> <span class="o">=</span> <span class="n">init_options</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_writer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_reader</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_memory_object_stream</span><span class="p">[</span>
|
|
<span class="n">ServerRequestResponder</span>
|
|
<span class="p">](</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_exit_stack</span><span class="o">.</span><span class="n">push_async_callback</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_reader</span><span class="o">.</span><span class="n">aclose</span><span class="p">())</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">client_params</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">InitializeRequestParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="c1"># pragma: no cover</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">experimental</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ExperimentalServerSessionFeatures</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Experimental APIs for server→client task operations.</span>
|
|
|
|
<span class="sd"> WARNING: These APIs are experimental and may change without notice.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span> <span class="o">=</span> <span class="n">ExperimentalServerSessionFeatures</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_experimental_features</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">check_client_capability</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">capability</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientCapabilities</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Check if the client supports a specific capability."""</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="n">client_caps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span><span class="o">.</span><span class="n">capabilities</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">roots</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">roots</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">roots</span><span class="o">.</span><span class="n">listChanged</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">roots</span><span class="o">.</span><span class="n">listChanged</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">tools</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">tools</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">elicitation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">elicitation</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">for</span> <span class="n">exp_key</span><span class="p">,</span> <span class="n">exp_value</span> <span class="ow">in</span> <span class="n">capability</span><span class="o">.</span><span class="n">experimental</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="n">exp_key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">or</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span><span class="p">[</span><span class="n">exp_key</span><span class="p">]</span> <span class="o">!=</span> <span class="n">exp_value</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">tasks</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">tasks</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">check_tasks_capability</span><span class="p">(</span><span class="n">capability</span><span class="o">.</span><span class="n">tasks</span><span class="p">,</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">tasks</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_receive_loop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_writer</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">_receive_loop</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_received_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">responder</span><span class="p">:</span> <span class="n">RequestResponder</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">ClientRequest</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerResult</span><span class="p">]):</span>
|
|
<span class="k">match</span> <span class="n">responder</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">root</span><span class="p">:</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">InitializeRequest</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">):</span>
|
|
<span class="n">requested_version</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">protocolVersion</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">Initializing</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="k">with</span> <span class="n">responder</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="n">responder</span><span class="o">.</span><span class="n">respond</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerResult</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">InitializeResult</span><span class="p">(</span>
|
|
<span class="n">protocolVersion</span><span class="o">=</span><span class="n">requested_version</span>
|
|
<span class="k">if</span> <span class="n">requested_version</span> <span class="ow">in</span> <span class="n">SUPPORTED_PROTOCOL_VERSIONS</span>
|
|
<span class="k">else</span> <span class="n">types</span><span class="o">.</span><span class="n">LATEST_PROTOCOL_VERSION</span><span class="p">,</span>
|
|
<span class="n">capabilities</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">capabilities</span><span class="p">,</span>
|
|
<span class="n">serverInfo</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">Implementation</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">server_name</span><span class="p">,</span>
|
|
<span class="n">version</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">server_version</span><span class="p">,</span>
|
|
<span class="n">websiteUrl</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">website_url</span><span class="p">,</span>
|
|
<span class="n">icons</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">icons</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="n">instructions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_init_options</span><span class="o">.</span><span class="n">instructions</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">Initialized</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">():</span>
|
|
<span class="c1"># Ping requests are allowed at any time</span>
|
|
<span class="k">pass</span>
|
|
<span class="k">case</span><span class="w"> </span><span class="k">_</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">!=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">Initialized</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Received request before initialization was complete"</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_received_notification</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">notification</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientNotification</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># Need this to avoid ASYNC910</span>
|
|
<span class="k">await</span> <span class="n">anyio</span><span class="o">.</span><span class="n">lowlevel</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">()</span>
|
|
<span class="k">match</span> <span class="n">notification</span><span class="o">.</span><span class="n">root</span><span class="p">:</span>
|
|
<span class="k">case</span> <span class="n">types</span><span class="o">.</span><span class="n">InitializedNotification</span><span class="p">():</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">Initialized</span>
|
|
<span class="k">case</span><span class="w"> </span><span class="k">_</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_initialization_state</span> <span class="o">!=</span> <span class="n">InitializationState</span><span class="o">.</span><span class="n">Initialized</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Received notification before initialization was complete"</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_log_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">level</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">LoggingLevel</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span>
|
|
<span class="n">logger</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a log message notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">LoggingMessageNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">LoggingMessageNotificationParams</span><span class="p">(</span>
|
|
<span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
|
|
<span class="n">logger</span><span class="o">=</span><span class="n">logger</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_resource_updated</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resource updated notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ResourceUpdatedNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ResourceUpdatedNotificationParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">SamplingMessage</span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">IncludeContext</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ModelPreferences</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ToolChoice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Overload: Without tools, returns single content."""</span>
|
|
<span class="o">...</span>
|
|
|
|
<span class="nd">@overload</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">SamplingMessage</span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">IncludeContext</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ModelPreferences</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">],</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ToolChoice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResultWithTools</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Overload: With tools, returns array-capable content."""</span>
|
|
<span class="o">...</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">SamplingMessage</span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">IncludeContext</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ModelPreferences</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ToolChoice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResult</span> <span class="o">|</span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResultWithTools</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a sampling/create_message request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> messages: The conversation messages to send.</span>
|
|
<span class="sd"> max_tokens: Maximum number of tokens to generate.</span>
|
|
<span class="sd"> system_prompt: Optional system prompt.</span>
|
|
<span class="sd"> include_context: Optional context inclusion setting.</span>
|
|
<span class="sd"> Should only be set to "thisServer" or "allServers"</span>
|
|
<span class="sd"> if the client has sampling.context capability.</span>
|
|
<span class="sd"> temperature: Optional sampling temperature.</span>
|
|
<span class="sd"> stop_sequences: Optional stop sequences.</span>
|
|
<span class="sd"> metadata: Optional metadata to pass through to the LLM provider.</span>
|
|
<span class="sd"> model_preferences: Optional model selection preferences.</span>
|
|
<span class="sd"> tools: Optional list of tools the LLM can use during sampling.</span>
|
|
<span class="sd"> Requires client to have sampling.tools capability.</span>
|
|
<span class="sd"> tool_choice: Optional control over tool usage behavior.</span>
|
|
<span class="sd"> Requires client to have sampling.tools capability.</span>
|
|
<span class="sd"> related_request_id: Optional ID of a related request.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The sampling result from the client.</span>
|
|
|
|
<span class="sd"> Raises:</span>
|
|
<span class="sd"> McpError: If tools are provided but client doesn't support them.</span>
|
|
<span class="sd"> ValueError: If tool_use or tool_result message structure is invalid.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">client_caps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span><span class="o">.</span><span class="n">capabilities</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="n">validate_sampling_tools</span><span class="p">(</span><span class="n">client_caps</span><span class="p">,</span> <span class="n">tools</span><span class="p">,</span> <span class="n">tool_choice</span><span class="p">)</span>
|
|
<span class="n">validate_tool_use_result_messages</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span>
|
|
|
|
<span class="n">request</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequestParams</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span>
|
|
<span class="n">systemPrompt</span><span class="o">=</span><span class="n">system_prompt</span><span class="p">,</span>
|
|
<span class="n">includeContext</span><span class="o">=</span><span class="n">include_context</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">,</span>
|
|
<span class="n">maxTokens</span><span class="o">=</span><span class="n">max_tokens</span><span class="p">,</span>
|
|
<span class="n">stopSequences</span><span class="o">=</span><span class="n">stop_sequences</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">,</span>
|
|
<span class="n">modelPreferences</span><span class="o">=</span><span class="n">model_preferences</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span>
|
|
<span class="n">toolChoice</span><span class="o">=</span><span class="n">tool_choice</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">metadata_obj</span> <span class="o">=</span> <span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Use different result types based on whether tools are provided</span>
|
|
<span class="k">if</span> <span class="n">tools</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span>
|
|
<span class="n">result_type</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResultWithTools</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata_obj</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span>
|
|
<span class="n">result_type</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata_obj</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_roots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListRootsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a roots/list request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListRootsRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListRootsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestedSchema</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a form mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The message to present to the user</span>
|
|
<span class="sd"> requestedSchema: Schema defining the expected response structure</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response</span>
|
|
|
|
<span class="sd"> Note:</span>
|
|
<span class="sd"> This method is deprecated in favor of elicit_form(). It remains for</span>
|
|
<span class="sd"> backward compatibility but new code should use elicit_form().</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">elicit_form</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">requestedSchema</span><span class="p">,</span> <span class="n">related_request_id</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit_form</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestedSchema</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a form mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The message to present to the user</span>
|
|
<span class="sd"> requestedSchema: Schema defining the expected response structure</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response with form data</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestFormParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="o">=</span><span class="n">requestedSchema</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit_url</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a URL mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> This directs the user to an external URL for out-of-band interactions</span>
|
|
<span class="sd"> like OAuth flows, credential collection, or payment processing.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: Human-readable explanation of why the interaction is needed</span>
|
|
<span class="sd"> url: The URL the user should navigate to</span>
|
|
<span class="sd"> elicitation_id: Unique identifier for tracking this elicitation</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response indicating acceptance, decline, or cancellation</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestURLParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span>
|
|
<span class="n">elicitationId</span><span class="o">=</span><span class="n">elicitation_id</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_ping</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a ping request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a progress notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ProgressNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ProgressNotificationParams</span><span class="p">(</span>
|
|
<span class="n">progressToken</span><span class="o">=</span><span class="n">progress_token</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="o">=</span><span class="n">total</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_resource_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resource list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ResourceListChangedNotification</span><span class="p">()))</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_tool_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tool list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ToolListChangedNotification</span><span class="p">()))</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_prompt_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompt list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PromptListChangedNotification</span><span class="p">()))</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_elicit_complete</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send an elicitation completion notification.</span>
|
|
|
|
<span class="sd"> This should be sent when a URL mode elicitation has been completed</span>
|
|
<span class="sd"> out-of-band to inform the client that it may retry any requests</span>
|
|
<span class="sd"> that were waiting for this elicitation.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> elicitation_id: The unique identifier of the completed elicitation</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitCompleteNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitCompleteNotificationParams</span><span class="p">(</span><span class="n">elicitationId</span><span class="o">=</span><span class="n">elicitation_id</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">_build_elicit_form_request</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestedSchema</span><span class="p">,</span>
|
|
<span class="n">related_task_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">task</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">TaskMetadata</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Build a form mode elicitation request without sending it.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The message to present to the user</span>
|
|
<span class="sd"> requestedSchema: Schema defining the expected response structure</span>
|
|
<span class="sd"> related_task_id: If provided, adds io.modelcontextprotocol/related-task metadata</span>
|
|
<span class="sd"> task: If provided, makes this a task-augmented request</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> A JSONRPCRequest ready to be sent or queued</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestFormParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="o">=</span><span class="n">requestedSchema</span><span class="p">,</span>
|
|
<span class="n">task</span><span class="o">=</span><span class="n">task</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">params_data</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"json"</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Add related-task metadata if associated with a parent task</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># Defensive: model_dump() never includes _meta, but guard against future changes</span>
|
|
<span class="k">if</span> <span class="s2">"_meta"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">params_data</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">][</span><span class="n">RELATED_TASK_METADATA_KEY</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">RelatedTaskMetadata</span><span class="p">(</span>
|
|
<span class="n">taskId</span><span class="o">=</span><span class="n">related_task_id</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">request_id</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"task-</span><span class="si">{</span><span class="n">related_task_id</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="nb">id</span><span class="p">(</span><span class="n">params</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">related_task_id</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">(</span>
|
|
<span class="n">jsonrpc</span><span class="o">=</span><span class="s2">"2.0"</span><span class="p">,</span>
|
|
<span class="nb">id</span><span class="o">=</span><span class="n">request_id</span><span class="p">,</span>
|
|
<span class="n">method</span><span class="o">=</span><span class="s2">"elicitation/create"</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">params_data</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">_build_elicit_url_request</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">related_task_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Build a URL mode elicitation request without sending it.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: Human-readable explanation of why the interaction is needed</span>
|
|
<span class="sd"> url: The URL the user should navigate to</span>
|
|
<span class="sd"> elicitation_id: Unique identifier for tracking this elicitation</span>
|
|
<span class="sd"> related_task_id: If provided, adds io.modelcontextprotocol/related-task metadata</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> A JSONRPCRequest ready to be sent or queued</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestURLParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span>
|
|
<span class="n">elicitationId</span><span class="o">=</span><span class="n">elicitation_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">params_data</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"json"</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Add related-task metadata if associated with a parent task</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># Defensive: model_dump() never includes _meta, but guard against future changes</span>
|
|
<span class="k">if</span> <span class="s2">"_meta"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">params_data</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">][</span><span class="n">RELATED_TASK_METADATA_KEY</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">RelatedTaskMetadata</span><span class="p">(</span>
|
|
<span class="n">taskId</span><span class="o">=</span><span class="n">related_task_id</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">request_id</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"task-</span><span class="si">{</span><span class="n">related_task_id</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="nb">id</span><span class="p">(</span><span class="n">params</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">related_task_id</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">(</span>
|
|
<span class="n">jsonrpc</span><span class="o">=</span><span class="s2">"2.0"</span><span class="p">,</span>
|
|
<span class="nb">id</span><span class="o">=</span><span class="n">request_id</span><span class="p">,</span>
|
|
<span class="n">method</span><span class="o">=</span><span class="s2">"elicitation/create"</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">params_data</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">_build_create_message_request</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">SamplingMessage</span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">IncludeContext</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ModelPreferences</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ToolChoice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_task_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">task</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">TaskMetadata</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Build a sampling/createMessage request without sending it.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> messages: The conversation messages to send</span>
|
|
<span class="sd"> max_tokens: Maximum number of tokens to generate</span>
|
|
<span class="sd"> system_prompt: Optional system prompt</span>
|
|
<span class="sd"> include_context: Optional context inclusion setting</span>
|
|
<span class="sd"> temperature: Optional sampling temperature</span>
|
|
<span class="sd"> stop_sequences: Optional stop sequences</span>
|
|
<span class="sd"> metadata: Optional metadata to pass through to the LLM provider</span>
|
|
<span class="sd"> model_preferences: Optional model selection preferences</span>
|
|
<span class="sd"> tools: Optional list of tools the LLM can use during sampling</span>
|
|
<span class="sd"> tool_choice: Optional control over tool usage behavior</span>
|
|
<span class="sd"> related_task_id: If provided, adds io.modelcontextprotocol/related-task metadata</span>
|
|
<span class="sd"> task: If provided, makes this a task-augmented request</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> A JSONRPCRequest ready to be sent or queued</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequestParams</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span>
|
|
<span class="n">systemPrompt</span><span class="o">=</span><span class="n">system_prompt</span><span class="p">,</span>
|
|
<span class="n">includeContext</span><span class="o">=</span><span class="n">include_context</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">,</span>
|
|
<span class="n">maxTokens</span><span class="o">=</span><span class="n">max_tokens</span><span class="p">,</span>
|
|
<span class="n">stopSequences</span><span class="o">=</span><span class="n">stop_sequences</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">,</span>
|
|
<span class="n">modelPreferences</span><span class="o">=</span><span class="n">model_preferences</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span>
|
|
<span class="n">toolChoice</span><span class="o">=</span><span class="n">tool_choice</span><span class="p">,</span>
|
|
<span class="n">task</span><span class="o">=</span><span class="n">task</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">params_data</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"json"</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Add related-task metadata if associated with a parent task</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># Defensive: model_dump() never includes _meta, but guard against future changes</span>
|
|
<span class="k">if</span> <span class="s2">"_meta"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">params_data</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="n">params_data</span><span class="p">[</span><span class="s2">"_meta"</span><span class="p">][</span><span class="n">RELATED_TASK_METADATA_KEY</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">RelatedTaskMetadata</span><span class="p">(</span>
|
|
<span class="n">taskId</span><span class="o">=</span><span class="n">related_task_id</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">request_id</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"task-</span><span class="si">{</span><span class="n">related_task_id</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="nb">id</span><span class="p">(</span><span class="n">params</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">related_task_id</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span>
|
|
<span class="k">if</span> <span class="n">related_task_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_request_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCRequest</span><span class="p">(</span>
|
|
<span class="n">jsonrpc</span><span class="o">=</span><span class="s2">"2.0"</span><span class="p">,</span>
|
|
<span class="nb">id</span><span class="o">=</span><span class="n">request_id</span><span class="p">,</span>
|
|
<span class="n">method</span><span class="o">=</span><span class="s2">"sampling/createMessage"</span><span class="p">,</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">params_data</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="n">SessionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a raw session message.</span>
|
|
|
|
<span class="sd"> This is primarily used by TaskResultHandler to deliver queued messages</span>
|
|
<span class="sd"> (elicitation/sampling requests) to the client during task execution.</span>
|
|
|
|
<span class="sd"> WARNING: This is a low-level experimental method that may change without</span>
|
|
<span class="sd"> notice. Prefer using higher-level methods like send_notification() or</span>
|
|
<span class="sd"> send_request() for normal operations.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The session message to send</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_stream</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_handle_incoming</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">:</span> <span class="n">ServerRequestResponder</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_writer</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">incoming_messages</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">ServerRequestResponder</span><span class="p">]:</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_incoming_message_stream_reader</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerSession.experimental" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">experimental</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">experimental</span><span class="p">:</span> <span class="n"><span title="mcp.server.experimental.session_features.ExperimentalServerSessionFeatures">ExperimentalServerSessionFeatures</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Experimental APIs for server→client task operations.</p>
|
|
<p>WARNING: These APIs are experimental and may change without notice.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.check_client_capability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">check_client_capability</span>
|
|
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">check_client_capability</span><span class="p">(</span>
|
|
<span class="n">capability</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ClientCapabilities (mcp.types.ClientCapabilities)" href="#mcp.ClientCapabilities">ClientCapabilities</a></span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Check if the client supports a specific capability.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">check_client_capability</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">capability</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ClientCapabilities</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Check if the client supports a specific capability."""</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="n">client_caps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span><span class="o">.</span><span class="n">capabilities</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">roots</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">roots</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">roots</span><span class="o">.</span><span class="n">listChanged</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">roots</span><span class="o">.</span><span class="n">listChanged</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">tools</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">sampling</span><span class="o">.</span><span class="n">tools</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">elicitation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">elicitation</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">for</span> <span class="n">exp_key</span><span class="p">,</span> <span class="n">exp_value</span> <span class="ow">in</span> <span class="n">capability</span><span class="o">.</span><span class="n">experimental</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="n">exp_key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span> <span class="ow">or</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">experimental</span><span class="p">[</span><span class="n">exp_key</span><span class="p">]</span> <span class="o">!=</span> <span class="n">exp_value</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">if</span> <span class="n">capability</span><span class="o">.</span><span class="n">tasks</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">tasks</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">check_tasks_capability</span><span class="p">(</span><span class="n">capability</span><span class="o">.</span><span class="n">tasks</span><span class="p">,</span> <span class="n">client_caps</span><span class="o">.</span><span class="n">tasks</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_log_message" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_log_message</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_log_message</span><span class="p">(</span>
|
|
<span class="n">level</span><span class="p">:</span> <span class="n"><span title="mcp.types.LoggingLevel">LoggingLevel</span></span><span class="p">,</span>
|
|
<span class="n">data</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">,</span>
|
|
<span class="n">logger</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a log message notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span>
|
|
<span class="normal">213</span>
|
|
<span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_log_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">level</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">LoggingLevel</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span>
|
|
<span class="n">logger</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a log message notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">LoggingMessageNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">LoggingMessageNotificationParams</span><span class="p">(</span>
|
|
<span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
|
|
<span class="n">logger</span><span class="o">=</span><span class="n">logger</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_resource_updated" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_resource_updated</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_resource_updated</span><span class="p">(</span><span class="n">uri</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.AnyUrl" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.AnyUrl">AnyUrl</a></span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resource updated notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_resource_updated</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="n">AnyUrl</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resource updated notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ResourceUpdatedNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ResourceUpdatedNotificationParams</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="n">uri</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.create_message" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">create_message</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="doc-overloads">
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessage (mcp.types.SamplingMessage)" href="#mcp.SamplingMessage">SamplingMessage</a></span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n"><span title="mcp.types.IncludeContext">IncludeContext</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n"><span title="mcp.types.ModelPreferences">ModelPreferences</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolChoice (mcp.types.ToolChoice)" href="#mcp.ToolChoice">ToolChoice</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="CreateMessageResult (mcp.types.CreateMessageResult)" href="#mcp.CreateMessageResult">CreateMessageResult</a></span>
|
|
</code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessage (mcp.types.SamplingMessage)" href="#mcp.SamplingMessage">SamplingMessage</a></span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n"><span title="mcp.types.IncludeContext">IncludeContext</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n"><span title="mcp.types.ModelPreferences">ModelPreferences</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="Tool (mcp.types.Tool)" href="#mcp.Tool">Tool</a></span><span class="p">],</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolChoice (mcp.types.ToolChoice)" href="#mcp.ToolChoice">ToolChoice</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="CreateMessageResultWithTools (mcp.types.CreateMessageResultWithTools)" href="#mcp.CreateMessageResultWithTools">CreateMessageResultWithTools</a></span>
|
|
</code></pre></div> </div>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessage (mcp.types.SamplingMessage)" href="#mcp.SamplingMessage">SamplingMessage</a></span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n"><span title="mcp.types.IncludeContext">IncludeContext</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n"><span title="mcp.types.ModelPreferences">ModelPreferences</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="Tool (mcp.types.Tool)" href="#mcp.Tool">Tool</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolChoice (mcp.types.ToolChoice)" href="#mcp.ToolChoice">ToolChoice</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="CreateMessageResult (mcp.types.CreateMessageResult)" href="#mcp.CreateMessageResult">CreateMessageResult</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title="CreateMessageResultWithTools (mcp.types.CreateMessageResultWithTools)" href="#mcp.CreateMessageResultWithTools">CreateMessageResultWithTools</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a sampling/create_message request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>messages</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a>[<a class="autorefs autorefs-internal" title="SamplingMessage (mcp.types.SamplingMessage)" href="#mcp.SamplingMessage">SamplingMessage</a>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The conversation messages to send.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>max_tokens</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Maximum number of tokens to generate.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>system_prompt</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional system prompt.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>include_context</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.IncludeContext">IncludeContext</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional context inclusion setting.
|
|
Should only be set to "thisServer" or "allServers"
|
|
if the client has sampling.context capability.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>temperature</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional sampling temperature.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>stop_sequences</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>] | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional stop sequences.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>metadata</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>, <a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>] | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional metadata to pass through to the LLM provider.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>model_preferences</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.ModelPreferences">ModelPreferences</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional model selection preferences.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>tools</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a>[<a class="autorefs autorefs-internal" title="Tool (mcp.types.Tool)" href="#mcp.Tool">Tool</a>] | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional list of tools the LLM can use during sampling.
|
|
Requires client to have sampling.tools capability.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>tool_choice</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-internal" title="ToolChoice (mcp.types.ToolChoice)" href="#mcp.ToolChoice">ToolChoice</a> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional control over tool usage behavior.
|
|
Requires client to have sampling.tools capability.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>related_request_id</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.RequestId">RequestId</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional ID of a related request.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><a class="autorefs autorefs-internal" title="CreateMessageResult (mcp.types.CreateMessageResult)" href="#mcp.CreateMessageResult">CreateMessageResult</a> | <a class="autorefs autorefs-internal" title="CreateMessageResultWithTools (mcp.types.CreateMessageResultWithTools)" href="#mcp.CreateMessageResultWithTools">CreateMessageResultWithTools</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The sampling result from the client.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Raises:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><a class="autorefs autorefs-internal" title="McpError (mcp.shared.exceptions.McpError)" href="#mcp.McpError">McpError</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>If tools are provided but client doesn't support them.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#ValueError">ValueError</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>If tool_use or tool_result message structure is invalid.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span>
|
|
<span class="normal">295</span>
|
|
<span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span>
|
|
<span class="normal">305</span>
|
|
<span class="normal">306</span>
|
|
<span class="normal">307</span>
|
|
<span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_message</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">SamplingMessage</span><span class="p">],</span>
|
|
<span class="o">*</span><span class="p">,</span>
|
|
<span class="n">max_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">system_prompt</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">include_context</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">IncludeContext</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stop_sequences</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">model_preferences</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ModelPreferences</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">Tool</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">tool_choice</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ToolChoice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResult</span> <span class="o">|</span> <span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResultWithTools</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a sampling/create_message request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> messages: The conversation messages to send.</span>
|
|
<span class="sd"> max_tokens: Maximum number of tokens to generate.</span>
|
|
<span class="sd"> system_prompt: Optional system prompt.</span>
|
|
<span class="sd"> include_context: Optional context inclusion setting.</span>
|
|
<span class="sd"> Should only be set to "thisServer" or "allServers"</span>
|
|
<span class="sd"> if the client has sampling.context capability.</span>
|
|
<span class="sd"> temperature: Optional sampling temperature.</span>
|
|
<span class="sd"> stop_sequences: Optional stop sequences.</span>
|
|
<span class="sd"> metadata: Optional metadata to pass through to the LLM provider.</span>
|
|
<span class="sd"> model_preferences: Optional model selection preferences.</span>
|
|
<span class="sd"> tools: Optional list of tools the LLM can use during sampling.</span>
|
|
<span class="sd"> Requires client to have sampling.tools capability.</span>
|
|
<span class="sd"> tool_choice: Optional control over tool usage behavior.</span>
|
|
<span class="sd"> Requires client to have sampling.tools capability.</span>
|
|
<span class="sd"> related_request_id: Optional ID of a related request.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The sampling result from the client.</span>
|
|
|
|
<span class="sd"> Raises:</span>
|
|
<span class="sd"> McpError: If tools are provided but client doesn't support them.</span>
|
|
<span class="sd"> ValueError: If tool_use or tool_result message structure is invalid.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">client_caps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span><span class="o">.</span><span class="n">capabilities</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client_params</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="n">validate_sampling_tools</span><span class="p">(</span><span class="n">client_caps</span><span class="p">,</span> <span class="n">tools</span><span class="p">,</span> <span class="n">tool_choice</span><span class="p">)</span>
|
|
<span class="n">validate_tool_use_result_messages</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span>
|
|
|
|
<span class="n">request</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageRequestParams</span><span class="p">(</span>
|
|
<span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span>
|
|
<span class="n">systemPrompt</span><span class="o">=</span><span class="n">system_prompt</span><span class="p">,</span>
|
|
<span class="n">includeContext</span><span class="o">=</span><span class="n">include_context</span><span class="p">,</span>
|
|
<span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">,</span>
|
|
<span class="n">maxTokens</span><span class="o">=</span><span class="n">max_tokens</span><span class="p">,</span>
|
|
<span class="n">stopSequences</span><span class="o">=</span><span class="n">stop_sequences</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">,</span>
|
|
<span class="n">modelPreferences</span><span class="o">=</span><span class="n">model_preferences</span><span class="p">,</span>
|
|
<span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span>
|
|
<span class="n">toolChoice</span><span class="o">=</span><span class="n">tool_choice</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">metadata_obj</span> <span class="o">=</span> <span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Use different result types based on whether tools are provided</span>
|
|
<span class="k">if</span> <span class="n">tools</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span>
|
|
<span class="n">result_type</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResultWithTools</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata_obj</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">request</span><span class="o">=</span><span class="n">request</span><span class="p">,</span>
|
|
<span class="n">result_type</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">CreateMessageResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">metadata_obj</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.list_roots" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">list_roots</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">list_roots</span><span class="p">()</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ListRootsResult">ListRootsResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a roots/list request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_roots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ListRootsResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a roots/list request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ListRootsRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ListRootsResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.elicit" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">elicit</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">elicit</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n"><span title="mcp.types.ElicitRequestedSchema">ElicitRequestedSchema</span></span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ElicitResult">ElicitResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a form mode elicitation/create request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>message</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The message to present to the user</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>requestedSchema</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.ElicitRequestedSchema">ElicitRequestedSchema</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Schema defining the expected response structure</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>related_request_id</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.RequestId">RequestId</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional ID of the request that triggered this elicitation</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="mcp.types.ElicitResult">ElicitResult</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The client's response</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="note" open>
|
|
<summary>Note</summary>
|
|
<p>This method is deprecated in favor of elicit_form(). It remains for
|
|
backward compatibility but new code should use elicit_form().</p>
|
|
</details>
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestedSchema</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a form mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The message to present to the user</span>
|
|
<span class="sd"> requestedSchema: Schema defining the expected response structure</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response</span>
|
|
|
|
<span class="sd"> Note:</span>
|
|
<span class="sd"> This method is deprecated in favor of elicit_form(). It remains for</span>
|
|
<span class="sd"> backward compatibility but new code should use elicit_form().</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">elicit_form</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">requestedSchema</span><span class="p">,</span> <span class="n">related_request_id</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.elicit_form" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">elicit_form</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">elicit_form</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n"><span title="mcp.types.ElicitRequestedSchema">ElicitRequestedSchema</span></span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ElicitResult">ElicitResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a form mode elicitation/create request.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>message</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The message to present to the user</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>requestedSchema</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.ElicitRequestedSchema">ElicitRequestedSchema</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Schema defining the expected response structure</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>related_request_id</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.RequestId">RequestId</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional ID of the request that triggered this elicitation</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="mcp.types.ElicitResult">ElicitResult</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The client's response with form data</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span>
|
|
<span class="normal">398</span>
|
|
<span class="normal">399</span>
|
|
<span class="normal">400</span>
|
|
<span class="normal">401</span>
|
|
<span class="normal">402</span>
|
|
<span class="normal">403</span>
|
|
<span class="normal">404</span>
|
|
<span class="normal">405</span>
|
|
<span class="normal">406</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit_form</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestedSchema</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a form mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The message to present to the user</span>
|
|
<span class="sd"> requestedSchema: Schema defining the expected response structure</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response with form data</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestFormParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">requestedSchema</span><span class="o">=</span><span class="n">requestedSchema</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.elicit_url" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">elicit_url</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">elicit_url</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">url</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n"><span title="mcp.types.ElicitResult">ElicitResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a URL mode elicitation/create request.</p>
|
|
<p>This directs the user to an external URL for out-of-band interactions
|
|
like OAuth flows, credential collection, or payment processing.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>message</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Human-readable explanation of why the interaction is needed</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>url</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The URL the user should navigate to</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>elicitation_id</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Unique identifier for tracking this elicitation</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>related_request_id</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.RequestId">RequestId</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional ID of the request that triggered this elicitation</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="mcp.types.ElicitResult">ElicitResult</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The client's response indicating acceptance, decline, or cancellation</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">408</span>
|
|
<span class="normal">409</span>
|
|
<span class="normal">410</span>
|
|
<span class="normal">411</span>
|
|
<span class="normal">412</span>
|
|
<span class="normal">413</span>
|
|
<span class="normal">414</span>
|
|
<span class="normal">415</span>
|
|
<span class="normal">416</span>
|
|
<span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span>
|
|
<span class="normal">421</span>
|
|
<span class="normal">422</span>
|
|
<span class="normal">423</span>
|
|
<span class="normal">424</span>
|
|
<span class="normal">425</span>
|
|
<span class="normal">426</span>
|
|
<span class="normal">427</span>
|
|
<span class="normal">428</span>
|
|
<span class="normal">429</span>
|
|
<span class="normal">430</span>
|
|
<span class="normal">431</span>
|
|
<span class="normal">432</span>
|
|
<span class="normal">433</span>
|
|
<span class="normal">434</span>
|
|
<span class="normal">435</span>
|
|
<span class="normal">436</span>
|
|
<span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">elicit_url</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a URL mode elicitation/create request.</span>
|
|
|
|
<span class="sd"> This directs the user to an external URL for out-of-band interactions</span>
|
|
<span class="sd"> like OAuth flows, credential collection, or payment processing.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: Human-readable explanation of why the interaction is needed</span>
|
|
<span class="sd"> url: The URL the user should navigate to</span>
|
|
<span class="sd"> elicitation_id: Unique identifier for tracking this elicitation</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this elicitation</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> The client's response indicating acceptance, decline, or cancellation</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitRequest</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitRequestURLParams</span><span class="p">(</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span>
|
|
<span class="n">elicitationId</span><span class="o">=</span><span class="n">elicitation_id</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitResult</span><span class="p">,</span>
|
|
<span class="n">metadata</span><span class="o">=</span><span class="n">ServerMessageMetadata</span><span class="p">(</span><span class="n">related_request_id</span><span class="o">=</span><span class="n">related_request_id</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_ping" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_ping</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_ping</span><span class="p">()</span> <span class="o">-></span> <span class="n"><span title="mcp.types.EmptyResult">EmptyResult</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a ping request.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">443</span>
|
|
<span class="normal">444</span>
|
|
<span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span>
|
|
<span class="normal">448</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_ping</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a ping request."""</span>
|
|
<span class="k">return</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_request</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerRequest</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PingRequest</span><span class="p">()),</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">EmptyResult</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_progress_notification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_progress_notification</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#float">float</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a progress notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">450</span>
|
|
<span class="normal">451</span>
|
|
<span class="normal">452</span>
|
|
<span class="normal">453</span>
|
|
<span class="normal">454</span>
|
|
<span class="normal">455</span>
|
|
<span class="normal">456</span>
|
|
<span class="normal">457</span>
|
|
<span class="normal">458</span>
|
|
<span class="normal">459</span>
|
|
<span class="normal">460</span>
|
|
<span class="normal">461</span>
|
|
<span class="normal">462</span>
|
|
<span class="normal">463</span>
|
|
<span class="normal">464</span>
|
|
<span class="normal">465</span>
|
|
<span class="normal">466</span>
|
|
<span class="normal">467</span>
|
|
<span class="normal">468</span>
|
|
<span class="normal">469</span>
|
|
<span class="normal">470</span>
|
|
<span class="normal">471</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_progress_notification</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">progress_token</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a progress notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ProgressNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ProgressNotificationParams</span><span class="p">(</span>
|
|
<span class="n">progressToken</span><span class="o">=</span><span class="n">progress_token</span><span class="p">,</span>
|
|
<span class="n">progress</span><span class="o">=</span><span class="n">progress</span><span class="p">,</span>
|
|
<span class="n">total</span><span class="o">=</span><span class="n">total</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_resource_list_changed" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_resource_list_changed</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_resource_list_changed</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a resource list changed notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">473</span>
|
|
<span class="normal">474</span>
|
|
<span class="normal">475</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_resource_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a resource list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ResourceListChangedNotification</span><span class="p">()))</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_tool_list_changed" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_tool_list_changed</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_tool_list_changed</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a tool list changed notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">477</span>
|
|
<span class="normal">478</span>
|
|
<span class="normal">479</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_tool_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a tool list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ToolListChangedNotification</span><span class="p">()))</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_prompt_list_changed" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_prompt_list_changed</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_prompt_list_changed</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a prompt list changed notification.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">481</span>
|
|
<span class="normal">482</span>
|
|
<span class="normal">483</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_prompt_list_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="w"> </span><span class="sd">"""Send a prompt list changed notification."""</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">PromptListChangedNotification</span><span class="p">()))</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_elicit_complete" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_elicit_complete</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_elicit_complete</span><span class="p">(</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n"><span title="mcp.types.RequestId">RequestId</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send an elicitation completion notification.</p>
|
|
<p>This should be sent when a URL mode elicitation has been completed
|
|
out-of-band to inform the client that it may retry any requests
|
|
that were waiting for this elicitation.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>elicitation_id</code>
|
|
</td>
|
|
<td>
|
|
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The unique identifier of the completed elicitation</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>related_request_id</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.types.RequestId">RequestId</span> | None</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Optional ID of the request that triggered this</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">485</span>
|
|
<span class="normal">486</span>
|
|
<span class="normal">487</span>
|
|
<span class="normal">488</span>
|
|
<span class="normal">489</span>
|
|
<span class="normal">490</span>
|
|
<span class="normal">491</span>
|
|
<span class="normal">492</span>
|
|
<span class="normal">493</span>
|
|
<span class="normal">494</span>
|
|
<span class="normal">495</span>
|
|
<span class="normal">496</span>
|
|
<span class="normal">497</span>
|
|
<span class="normal">498</span>
|
|
<span class="normal">499</span>
|
|
<span class="normal">500</span>
|
|
<span class="normal">501</span>
|
|
<span class="normal">502</span>
|
|
<span class="normal">503</span>
|
|
<span class="normal">504</span>
|
|
<span class="normal">505</span>
|
|
<span class="normal">506</span>
|
|
<span class="normal">507</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_elicit_complete</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">elicitation_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">related_request_id</span><span class="p">:</span> <span class="n">types</span><span class="o">.</span><span class="n">RequestId</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send an elicitation completion notification.</span>
|
|
|
|
<span class="sd"> This should be sent when a URL mode elicitation has been completed</span>
|
|
<span class="sd"> out-of-band to inform the client that it may retry any requests</span>
|
|
<span class="sd"> that were waiting for this elicitation.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> elicitation_id: The unique identifier of the completed elicitation</span>
|
|
<span class="sd"> related_request_id: Optional ID of the request that triggered this</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_notification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ServerNotification</span><span class="p">(</span>
|
|
<span class="n">types</span><span class="o">.</span><span class="n">ElicitCompleteNotification</span><span class="p">(</span>
|
|
<span class="n">params</span><span class="o">=</span><span class="n">types</span><span class="o">.</span><span class="n">ElicitCompleteNotificationParams</span><span class="p">(</span><span class="n">elicitationId</span><span class="o">=</span><span class="n">elicitation_id</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="n">related_request_id</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.ServerSession.send_message" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">send_message</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">send_message</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="n"><span title="mcp.shared.message.SessionMessage">SessionMessage</span></span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Send a raw session message.</p>
|
|
<p>This is primarily used by TaskResultHandler to deliver queued messages
|
|
(elicitation/sampling requests) to the client during task execution.</p>
|
|
<p>WARNING: This is a low-level experimental method that may change without
|
|
notice. Prefer using higher-level methods like send_notification() or
|
|
send_request() for normal operations.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>message</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="mcp.shared.message.SessionMessage">SessionMessage</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>The session message to send</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/session.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">669</span>
|
|
<span class="normal">670</span>
|
|
<span class="normal">671</span>
|
|
<span class="normal">672</span>
|
|
<span class="normal">673</span>
|
|
<span class="normal">674</span>
|
|
<span class="normal">675</span>
|
|
<span class="normal">676</span>
|
|
<span class="normal">677</span>
|
|
<span class="normal">678</span>
|
|
<span class="normal">679</span>
|
|
<span class="normal">680</span>
|
|
<span class="normal">681</span>
|
|
<span class="normal">682</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">send_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="n">SessionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Send a raw session message.</span>
|
|
|
|
<span class="sd"> This is primarily used by TaskResultHandler to deliver queued messages</span>
|
|
<span class="sd"> (elicitation/sampling requests) to the client during task execution.</span>
|
|
|
|
<span class="sd"> WARNING: This is a low-level experimental method that may change without</span>
|
|
<span class="sd"> notice. Prefer using higher-level methods like send_notification() or</span>
|
|
<span class="sd"> send_request() for normal operations.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> message: The session message to send</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_stream</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="mcp.stdio_server" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">stdio_server</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">stdio_server</span><span class="p">(</span>
|
|
<span class="n">stdin</span><span class="p">:</span> <span class="n"><span title="anyio.AsyncFile">AsyncFile</span></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stdout</span><span class="p">:</span> <span class="n"><span title="anyio.AsyncFile">AsyncFile</span></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Server transport for stdio: this communicates with an MCP client by reading
|
|
from the current process' stdin and writing to stdout.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/server/stdio.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span>
|
|
<span class="normal">46</span>
|
|
<span class="normal">47</span>
|
|
<span class="normal">48</span>
|
|
<span class="normal">49</span>
|
|
<span class="normal">50</span>
|
|
<span class="normal">51</span>
|
|
<span class="normal">52</span>
|
|
<span class="normal">53</span>
|
|
<span class="normal">54</span>
|
|
<span class="normal">55</span>
|
|
<span class="normal">56</span>
|
|
<span class="normal">57</span>
|
|
<span class="normal">58</span>
|
|
<span class="normal">59</span>
|
|
<span class="normal">60</span>
|
|
<span class="normal">61</span>
|
|
<span class="normal">62</span>
|
|
<span class="normal">63</span>
|
|
<span class="normal">64</span>
|
|
<span class="normal">65</span>
|
|
<span class="normal">66</span>
|
|
<span class="normal">67</span>
|
|
<span class="normal">68</span>
|
|
<span class="normal">69</span>
|
|
<span class="normal">70</span>
|
|
<span class="normal">71</span>
|
|
<span class="normal">72</span>
|
|
<span class="normal">73</span>
|
|
<span class="normal">74</span>
|
|
<span class="normal">75</span>
|
|
<span class="normal">76</span>
|
|
<span class="normal">77</span>
|
|
<span class="normal">78</span>
|
|
<span class="normal">79</span>
|
|
<span class="normal">80</span>
|
|
<span class="normal">81</span>
|
|
<span class="normal">82</span>
|
|
<span class="normal">83</span>
|
|
<span class="normal">84</span>
|
|
<span class="normal">85</span>
|
|
<span class="normal">86</span>
|
|
<span class="normal">87</span>
|
|
<span class="normal">88</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@asynccontextmanager</span>
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdio_server</span><span class="p">(</span>
|
|
<span class="n">stdin</span><span class="p">:</span> <span class="n">anyio</span><span class="o">.</span><span class="n">AsyncFile</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">stdout</span><span class="p">:</span> <span class="n">anyio</span><span class="o">.</span><span class="n">AsyncFile</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Server transport for stdio: this communicates with an MCP client by reading</span>
|
|
<span class="sd"> from the current process' stdin and writing to stdout.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Purposely not using context managers for these, as we don't want to close</span>
|
|
<span class="c1"># standard process handles. Encoding of stdin/stdout as text streams on</span>
|
|
<span class="c1"># python is platform-dependent (Windows is particularly problematic), so we</span>
|
|
<span class="c1"># re-wrap the underlying binary stream to ensure UTF-8.</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">stdin</span><span class="p">:</span>
|
|
<span class="n">stdin</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">wrap_file</span><span class="p">(</span><span class="n">TextIOWrapper</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">buffer</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"utf-8"</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">stdout</span><span class="p">:</span>
|
|
<span class="n">stdout</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">wrap_file</span><span class="p">(</span><span class="n">TextIOWrapper</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">buffer</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"utf-8"</span><span class="p">))</span>
|
|
|
|
<span class="n">read_stream</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">]</span>
|
|
<span class="n">read_stream_writer</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span> <span class="o">|</span> <span class="ne">Exception</span><span class="p">]</span>
|
|
|
|
<span class="n">write_stream</span><span class="p">:</span> <span class="n">MemoryObjectSendStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">]</span>
|
|
<span class="n">write_stream_reader</span><span class="p">:</span> <span class="n">MemoryObjectReceiveStream</span><span class="p">[</span><span class="n">SessionMessage</span><span class="p">]</span>
|
|
|
|
<span class="n">read_stream_writer</span><span class="p">,</span> <span class="n">read_stream</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_memory_object_stream</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="n">write_stream</span><span class="p">,</span> <span class="n">write_stream_reader</span> <span class="o">=</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_memory_object_stream</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdin_reader</span><span class="p">():</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">read_stream_writer</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">stdin</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">message</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">JSONRPCMessage</span><span class="o">.</span><span class="n">model_validate_json</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
|
|
<span class="k">continue</span>
|
|
|
|
<span class="n">session_message</span> <span class="o">=</span> <span class="n">SessionMessage</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">read_stream_writer</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">session_message</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">anyio</span><span class="o">.</span><span class="n">ClosedResourceError</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">anyio</span><span class="o">.</span><span class="n">lowlevel</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stdout_writer</span><span class="p">():</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">write_stream_reader</span><span class="p">:</span>
|
|
<span class="k">async</span> <span class="k">for</span> <span class="n">session_message</span> <span class="ow">in</span> <span class="n">write_stream_reader</span><span class="p">:</span>
|
|
<span class="n">json</span> <span class="o">=</span> <span class="n">session_message</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">model_dump_json</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">json</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">await</span> <span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="n">anyio</span><span class="o">.</span><span class="n">ClosedResourceError</span><span class="p">:</span> <span class="c1"># pragma: no cover</span>
|
|
<span class="k">await</span> <span class="n">anyio</span><span class="o">.</span><span class="n">lowlevel</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">()</span>
|
|
|
|
<span class="k">async</span> <span class="k">with</span> <span class="n">anyio</span><span class="o">.</span><span class="n">create_task_group</span><span class="p">()</span> <span class="k">as</span> <span class="n">tg</span><span class="p">:</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">stdin_reader</span><span class="p">)</span>
|
|
<span class="n">tg</span><span class="o">.</span><span class="n">start_soon</span><span class="p">(</span><span class="n">stdout_writer</span><span class="p">)</span>
|
|
<span class="k">yield</span> <span class="n">read_stream</span><span class="p">,</span> <span class="n">write_stream</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.McpError" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">McpError</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#Exception">Exception</a></code></p>
|
|
|
|
|
|
<p>Exception type raised when an error arrives over an MCP connection.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/shared/exceptions.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">McpError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Exception type raised when an error arrives over an MCP connection.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Initialize McpError."""</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">error</span> <span class="o">=</span> <span class="n">error</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.McpError.__init__" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">__init__</span>
|
|
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">__init__</span><span class="p">(</span><span class="n">error</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ErrorData (mcp.types.ErrorData)" href="#mcp.ErrorData">ErrorData</a></span><span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Initialize McpError.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/shared/exceptions.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Initialize McpError."""</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">error</span> <span class="o">=</span> <span class="n">error</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.UrlElicitationRequiredError" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">UrlElicitationRequiredError</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-internal" title="McpError (mcp.shared.exceptions.McpError)" href="#mcp.McpError">McpError</a></code></p>
|
|
|
|
|
|
<p>Specialized error for when a tool requires URL mode elicitation(s) before proceeding.</p>
|
|
<p>Servers can raise this error from tool handlers to indicate that the client
|
|
must complete one or more URL elicitations before the request can be processed.</p>
|
|
|
|
|
|
<details class="example" open>
|
|
<summary>Example</summary>
|
|
<p>raise UrlElicitationRequiredError([
|
|
ElicitRequestURLParams(
|
|
mode="url",
|
|
message="Authorization required for your files",
|
|
url="https://example.com/oauth/authorize",
|
|
elicitationId="auth-001"
|
|
)
|
|
])</p>
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/shared/exceptions.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span>
|
|
<span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span>
|
|
<span class="normal">46</span>
|
|
<span class="normal">47</span>
|
|
<span class="normal">48</span>
|
|
<span class="normal">49</span>
|
|
<span class="normal">50</span>
|
|
<span class="normal">51</span>
|
|
<span class="normal">52</span>
|
|
<span class="normal">53</span>
|
|
<span class="normal">54</span>
|
|
<span class="normal">55</span>
|
|
<span class="normal">56</span>
|
|
<span class="normal">57</span>
|
|
<span class="normal">58</span>
|
|
<span class="normal">59</span>
|
|
<span class="normal">60</span>
|
|
<span class="normal">61</span>
|
|
<span class="normal">62</span>
|
|
<span class="normal">63</span>
|
|
<span class="normal">64</span>
|
|
<span class="normal">65</span>
|
|
<span class="normal">66</span>
|
|
<span class="normal">67</span>
|
|
<span class="normal">68</span>
|
|
<span class="normal">69</span>
|
|
<span class="normal">70</span>
|
|
<span class="normal">71</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">UrlElicitationRequiredError</span><span class="p">(</span><span class="n">McpError</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Specialized error for when a tool requires URL mode elicitation(s) before proceeding.</span>
|
|
|
|
<span class="sd"> Servers can raise this error from tool handlers to indicate that the client</span>
|
|
<span class="sd"> must complete one or more URL elicitations before the request can be processed.</span>
|
|
|
|
<span class="sd"> Example:</span>
|
|
<span class="sd"> raise UrlElicitationRequiredError([</span>
|
|
<span class="sd"> ElicitRequestURLParams(</span>
|
|
<span class="sd"> mode="url",</span>
|
|
<span class="sd"> message="Authorization required for your files",</span>
|
|
<span class="sd"> url="https://example.com/oauth/authorize",</span>
|
|
<span class="sd"> elicitationId="auth-001"</span>
|
|
<span class="sd"> )</span>
|
|
<span class="sd"> ])</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">elicitations</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ElicitRequestURLParams</span><span class="p">],</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Initialize UrlElicitationRequiredError."""</span>
|
|
<span class="k">if</span> <span class="n">message</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"URL elicitation</span><span class="si">{</span><span class="s1">'s'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="n">elicitations</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> required"</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_elicitations</span> <span class="o">=</span> <span class="n">elicitations</span>
|
|
|
|
<span class="n">error</span> <span class="o">=</span> <span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">URL_ELICITATION_REQUIRED</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s2">"elicitations"</span><span class="p">:</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">elicitations</span><span class="p">]},</span>
|
|
<span class="p">)</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">elicitations</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="n">ElicitRequestURLParams</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""The list of URL elicitations required before the request can proceed."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_elicitations</span>
|
|
|
|
<span class="nd">@classmethod</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">from_error</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span><span class="p">)</span> <span class="o">-></span> <span class="n">UrlElicitationRequiredError</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Reconstruct from an ErrorData received over the wire."""</span>
|
|
<span class="k">if</span> <span class="n">error</span><span class="o">.</span><span class="n">code</span> <span class="o">!=</span> <span class="n">URL_ELICITATION_REQUIRED</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected error code </span><span class="si">{</span><span class="n">URL_ELICITATION_REQUIRED</span><span class="si">}</span><span class="s2">, got </span><span class="si">{</span><span class="n">error</span><span class="o">.</span><span class="n">code</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="n">data</span> <span class="o">=</span> <span class="n">cast</span><span class="p">(</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">error</span><span class="o">.</span><span class="n">data</span> <span class="ow">or</span> <span class="p">{})</span>
|
|
<span class="n">raw_elicitations</span> <span class="o">=</span> <span class="n">cast</span><span class="p">(</span><span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]],</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"elicitations"</span><span class="p">,</span> <span class="p">[]))</span>
|
|
<span class="n">elicitations</span> <span class="o">=</span> <span class="p">[</span><span class="n">ElicitRequestURLParams</span><span class="o">.</span><span class="n">model_validate</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">raw_elicitations</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">elicitations</span><span class="p">,</span> <span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.UrlElicitationRequiredError.__init__" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">__init__</span>
|
|
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">__init__</span><span class="p">(</span>
|
|
<span class="n">elicitations</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.ElicitRequestURLParams">ElicitRequestURLParams</span></span><span class="p">],</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Initialize UrlElicitationRequiredError.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/shared/exceptions.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span>
|
|
<span class="normal">46</span>
|
|
<span class="normal">47</span>
|
|
<span class="normal">48</span>
|
|
<span class="normal">49</span>
|
|
<span class="normal">50</span>
|
|
<span class="normal">51</span>
|
|
<span class="normal">52</span>
|
|
<span class="normal">53</span>
|
|
<span class="normal">54</span>
|
|
<span class="normal">55</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">elicitations</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ElicitRequestURLParams</span><span class="p">],</span>
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Initialize UrlElicitationRequiredError."""</span>
|
|
<span class="k">if</span> <span class="n">message</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"URL elicitation</span><span class="si">{</span><span class="s1">'s'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="n">elicitations</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> required"</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_elicitations</span> <span class="o">=</span> <span class="n">elicitations</span>
|
|
|
|
<span class="n">error</span> <span class="o">=</span> <span class="n">ErrorData</span><span class="p">(</span>
|
|
<span class="n">code</span><span class="o">=</span><span class="n">URL_ELICITATION_REQUIRED</span><span class="p">,</span>
|
|
<span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
|
|
<span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s2">"elicitations"</span><span class="p">:</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">model_dump</span><span class="p">(</span><span class="n">by_alias</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">elicitations</span><span class="p">]},</span>
|
|
<span class="p">)</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.UrlElicitationRequiredError.elicitations" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">elicitations</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">elicitations</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.ElicitRequestURLParams">ElicitRequestURLParams</span></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The list of URL elicitations required before the request can proceed.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="mcp.UrlElicitationRequiredError.from_error" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-function-name">from_error</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nf">from_error</span><span class="p">(</span><span class="n">error</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ErrorData (mcp.types.ErrorData)" href="#mcp.ErrorData">ErrorData</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title="UrlElicitationRequiredError (mcp.shared.exceptions.UrlElicitationRequiredError)" href="#mcp.UrlElicitationRequiredError">UrlElicitationRequiredError</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Reconstruct from an ErrorData received over the wire.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/shared/exceptions.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">62</span>
|
|
<span class="normal">63</span>
|
|
<span class="normal">64</span>
|
|
<span class="normal">65</span>
|
|
<span class="normal">66</span>
|
|
<span class="normal">67</span>
|
|
<span class="normal">68</span>
|
|
<span class="normal">69</span>
|
|
<span class="normal">70</span>
|
|
<span class="normal">71</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@classmethod</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">from_error</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span><span class="p">)</span> <span class="o">-></span> <span class="n">UrlElicitationRequiredError</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""Reconstruct from an ErrorData received over the wire."""</span>
|
|
<span class="k">if</span> <span class="n">error</span><span class="o">.</span><span class="n">code</span> <span class="o">!=</span> <span class="n">URL_ELICITATION_REQUIRED</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected error code </span><span class="si">{</span><span class="n">URL_ELICITATION_REQUIRED</span><span class="si">}</span><span class="s2">, got </span><span class="si">{</span><span class="n">error</span><span class="o">.</span><span class="n">code</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="n">data</span> <span class="o">=</span> <span class="n">cast</span><span class="p">(</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">error</span><span class="o">.</span><span class="n">data</span> <span class="ow">or</span> <span class="p">{})</span>
|
|
<span class="n">raw_elicitations</span> <span class="o">=</span> <span class="n">cast</span><span class="p">(</span><span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]],</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"elicitations"</span><span class="p">,</span> <span class="p">[]))</span>
|
|
<span class="n">elicitations</span> <span class="o">=</span> <span class="p">[</span><span class="n">ElicitRequestURLParams</span><span class="o">.</span><span class="n">model_validate</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">raw_elicitations</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">elicitations</span><span class="p">,</span> <span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.CallToolRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">CallToolRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.CallToolRequestParams">CallToolRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['tools/call']]</code></p>
|
|
|
|
|
|
<p>Used by the client to invoke a tool provided by the server.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1356</span>
|
|
<span class="normal">1357</span>
|
|
<span class="normal">1358</span>
|
|
<span class="normal">1359</span>
|
|
<span class="normal">1360</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">CallToolRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">CallToolRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"tools/call"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Used by the client to invoke a tool provided by the server."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"tools/call"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"tools/call"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">CallToolRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ClientCapabilities" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ClientCapabilities</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capabilities a client may support.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span>
|
|
<span class="normal">421</span>
|
|
<span class="normal">422</span>
|
|
<span class="normal">423</span>
|
|
<span class="normal">424</span>
|
|
<span class="normal">425</span>
|
|
<span class="normal">426</span>
|
|
<span class="normal">427</span>
|
|
<span class="normal">428</span>
|
|
<span class="normal">429</span>
|
|
<span class="normal">430</span>
|
|
<span class="normal">431</span>
|
|
<span class="normal">432</span>
|
|
<span class="normal">433</span>
|
|
<span class="normal">434</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ClientCapabilities</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capabilities a client may support."""</span>
|
|
|
|
<span class="n">experimental</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Experimental, non-standard capabilities that the client supports."""</span>
|
|
<span class="n">sampling</span><span class="p">:</span> <span class="n">SamplingCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Present if the client supports sampling from an LLM.</span>
|
|
<span class="sd"> Can contain fine-grained capabilities like context and tools support.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">elicitation</span><span class="p">:</span> <span class="n">ElicitationCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the client supports elicitation from the user."""</span>
|
|
<span class="n">roots</span><span class="p">:</span> <span class="n">RootsCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the client supports listing roots."""</span>
|
|
<span class="n">tasks</span><span class="p">:</span> <span class="n">ClientTasksCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the client supports task-augmented requests."""</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientCapabilities.experimental" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">experimental</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">experimental</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Experimental, non-standard capabilities that the client supports.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientCapabilities.sampling" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">sampling</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">sampling</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="SamplingCapability (mcp.types.SamplingCapability)" href="#mcp.SamplingCapability">SamplingCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports sampling from an LLM.
|
|
Can contain fine-grained capabilities like context and tools support.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientCapabilities.elicitation" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">elicitation</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">elicitation</span><span class="p">:</span> <span class="n"><span title="mcp.types.ElicitationCapability">ElicitationCapability</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports elicitation from the user.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientCapabilities.roots" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">roots</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">roots</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="RootsCapability (mcp.types.RootsCapability)" href="#mcp.RootsCapability">RootsCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports listing roots.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ClientCapabilities.tasks" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">tasks</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">tasks</span><span class="p">:</span> <span class="n"><span title="mcp.types.ClientTasksCapability">ClientTasksCapability</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports task-augmented requests.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.CompleteRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">CompleteRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.CompleteRequestParams">CompleteRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['completion/complete']]</code></p>
|
|
|
|
|
|
<p>A request from the client to the server, to ask for completion options.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1645</span>
|
|
<span class="normal">1646</span>
|
|
<span class="normal">1647</span>
|
|
<span class="normal">1648</span>
|
|
<span class="normal">1649</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">CompleteRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">CompleteRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"completion/complete"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""A request from the client to the server, to ask for completion options."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"completion/complete"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"completion/complete"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">CompleteRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.CreateMessageRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">CreateMessageRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.CreateMessageRequestParams">CreateMessageRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['sampling/createMessage']]</code></p>
|
|
|
|
|
|
<p>A request from the server to sample an LLM via the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1539</span>
|
|
<span class="normal">1540</span>
|
|
<span class="normal">1541</span>
|
|
<span class="normal">1542</span>
|
|
<span class="normal">1543</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">CreateMessageRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">CreateMessageRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"sampling/createMessage"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""A request from the server to sample an LLM via the client."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"sampling/createMessage"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"sampling/createMessage"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">CreateMessageRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.CreateMessageResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">CreateMessageResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Result">Result</span></code></p>
|
|
|
|
|
|
<p>The client's response to a sampling/create_message request from the server.</p>
|
|
<p>This is the backwards-compatible version that returns single content (no arrays).
|
|
Used when the request does not include tools.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1549</span>
|
|
<span class="normal">1550</span>
|
|
<span class="normal">1551</span>
|
|
<span class="normal">1552</span>
|
|
<span class="normal">1553</span>
|
|
<span class="normal">1554</span>
|
|
<span class="normal">1555</span>
|
|
<span class="normal">1556</span>
|
|
<span class="normal">1557</span>
|
|
<span class="normal">1558</span>
|
|
<span class="normal">1559</span>
|
|
<span class="normal">1560</span>
|
|
<span class="normal">1561</span>
|
|
<span class="normal">1562</span>
|
|
<span class="normal">1563</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">CreateMessageResult</span><span class="p">(</span><span class="n">Result</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The client's response to a sampling/create_message request from the server.</span>
|
|
|
|
<span class="sd"> This is the backwards-compatible version that returns single content (no arrays).</span>
|
|
<span class="sd"> Used when the request does not include tools.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">role</span><span class="p">:</span> <span class="n">Role</span>
|
|
<span class="w"> </span><span class="sd">"""The role of the message sender (typically 'assistant' for LLM responses)."""</span>
|
|
<span class="n">content</span><span class="p">:</span> <span class="n">SamplingContent</span>
|
|
<span class="w"> </span><span class="sd">"""Response content. Single content block (text, image, or audio)."""</span>
|
|
<span class="n">model</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""The name of the model that generated the message."""</span>
|
|
<span class="n">stopReason</span><span class="p">:</span> <span class="n">StopReason</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""The reason why sampling stopped, if known."""</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResult.role" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">role</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">role</span><span class="p">:</span> <span class="n"><span title="mcp.types.Role">Role</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The role of the message sender (typically 'assistant' for LLM responses).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResult.content" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="SamplingContent
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingContent)" href="#mcp.SamplingContent">SamplingContent</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Response content. Single content block (text, image, or audio).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResult.model" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">model</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">model</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The name of the model that generated the message.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResult.stopReason" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">stopReason</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">stopReason</span><span class="p">:</span> <span class="n"><span title="mcp.types.StopReason">StopReason</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The reason why sampling stopped, if known.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.CreateMessageResultWithTools" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">CreateMessageResultWithTools</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Result">Result</span></code></p>
|
|
|
|
|
|
<p>The client's response to a sampling/create_message request when tools were provided.</p>
|
|
<p>This version supports array content for tool use flows.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1566</span>
|
|
<span class="normal">1567</span>
|
|
<span class="normal">1568</span>
|
|
<span class="normal">1569</span>
|
|
<span class="normal">1570</span>
|
|
<span class="normal">1571</span>
|
|
<span class="normal">1572</span>
|
|
<span class="normal">1573</span>
|
|
<span class="normal">1574</span>
|
|
<span class="normal">1575</span>
|
|
<span class="normal">1576</span>
|
|
<span class="normal">1577</span>
|
|
<span class="normal">1578</span>
|
|
<span class="normal">1579</span>
|
|
<span class="normal">1580</span>
|
|
<span class="normal">1581</span>
|
|
<span class="normal">1582</span>
|
|
<span class="normal">1583</span>
|
|
<span class="normal">1584</span>
|
|
<span class="normal">1585</span>
|
|
<span class="normal">1586</span>
|
|
<span class="normal">1587</span>
|
|
<span class="normal">1588</span>
|
|
<span class="normal">1589</span>
|
|
<span class="normal">1590</span>
|
|
<span class="normal">1591</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">CreateMessageResultWithTools</span><span class="p">(</span><span class="n">Result</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The client's response to a sampling/create_message request when tools were provided.</span>
|
|
|
|
<span class="sd"> This version supports array content for tool use flows.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">role</span><span class="p">:</span> <span class="n">Role</span>
|
|
<span class="w"> </span><span class="sd">"""The role of the message sender (typically 'assistant' for LLM responses)."""</span>
|
|
<span class="n">content</span><span class="p">:</span> <span class="n">SamplingMessageContentBlock</span> <span class="o">|</span> <span class="nb">list</span><span class="p">[</span><span class="n">SamplingMessageContentBlock</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Response content. May be a single content block or an array.</span>
|
|
<span class="sd"> May include ToolUseContent if stopReason is 'toolUse'.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""The name of the model that generated the message."""</span>
|
|
<span class="n">stopReason</span><span class="p">:</span> <span class="n">StopReason</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> The reason why sampling stopped, if known.</span>
|
|
<span class="sd"> 'toolUse' indicates the model wants to use a tool.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">content_as_list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="n">SamplingMessageContentBlock</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the content as a list of content blocks, regardless of whether</span>
|
|
<span class="sd"> it was originally a single block or a list."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResultWithTools.role" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">role</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">role</span><span class="p">:</span> <span class="n"><span title="mcp.types.Role">Role</span></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The role of the message sender (typically 'assistant' for LLM responses).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResultWithTools.content" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content</span><span class="p">:</span> <span class="p">(</span>
|
|
<span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span>
|
|
<span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span><span class="p">]</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Response content. May be a single content block or an array.
|
|
May include ToolUseContent if stopReason is 'toolUse'.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResultWithTools.model" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">model</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">model</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The name of the model that generated the message.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResultWithTools.stopReason" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">stopReason</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">stopReason</span><span class="p">:</span> <span class="n"><span title="mcp.types.StopReason">StopReason</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The reason why sampling stopped, if known.
|
|
'toolUse' indicates the model wants to use a tool.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.CreateMessageResultWithTools.content_as_list" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content_as_list</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content_as_list</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the content as a list of content blocks, regardless of whether
|
|
it was originally a single block or a list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ErrorData" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ErrorData</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Error information for JSON-RPC error responses.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ErrorData</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Error information for JSON-RPC error responses."""</span>
|
|
|
|
<span class="n">code</span><span class="p">:</span> <span class="nb">int</span>
|
|
<span class="w"> </span><span class="sd">"""The error type that occurred."""</span>
|
|
|
|
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> A short description of the error. The message SHOULD be limited to a concise single</span>
|
|
<span class="sd"> sentence.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">data</span><span class="p">:</span> <span class="n">Any</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Additional information about the error. The value of this member is defined by the</span>
|
|
<span class="sd"> sender (e.g. detailed error information, nested errors etc.).</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ErrorData.code" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">code</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The error type that occurred.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ErrorData.message" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">message</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">message</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>A short description of the error. The message SHOULD be limited to a concise single
|
|
sentence.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ErrorData.data" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">data</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">data</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Additional information about the error. The value of this member is defined by the
|
|
sender (e.g. detailed error information, nested errors etc.).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.GetPromptRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">GetPromptRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.GetPromptRequestParams">GetPromptRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['prompts/get']]</code></p>
|
|
|
|
|
|
<p>Used by the client to get a prompt provided by the server.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1019</span>
|
|
<span class="normal">1020</span>
|
|
<span class="normal">1021</span>
|
|
<span class="normal">1022</span>
|
|
<span class="normal">1023</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">GetPromptRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">GetPromptRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"prompts/get"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Used by the client to get a prompt provided by the server."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"prompts/get"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"prompts/get"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">GetPromptRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.GetPromptResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">GetPromptResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Result">Result</span></code></p>
|
|
|
|
|
|
<p>The server's response to a prompts/get request from the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1221</span>
|
|
<span class="normal">1222</span>
|
|
<span class="normal">1223</span>
|
|
<span class="normal">1224</span>
|
|
<span class="normal">1225</span>
|
|
<span class="normal">1226</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">GetPromptResult</span><span class="p">(</span><span class="n">Result</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The server's response to a prompts/get request from the client."""</span>
|
|
|
|
<span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""An optional description for the prompt."""</span>
|
|
<span class="n">messages</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">PromptMessage</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.GetPromptResult.description" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">description</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">description</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional description for the prompt.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.Implementation" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">Implementation</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.BaseMetadata">BaseMetadata</span></code></p>
|
|
|
|
|
|
<p>Describes the name and version of an MCP implementation.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Implementation</span><span class="p">(</span><span class="n">BaseMetadata</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Describes the name and version of an MCP implementation."""</span>
|
|
|
|
<span class="n">version</span><span class="p">:</span> <span class="nb">str</span>
|
|
|
|
<span class="n">websiteUrl</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""An optional URL of the website for this implementation."""</span>
|
|
|
|
<span class="n">icons</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Icon</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""An optional list of icons for this implementation."""</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Implementation.websiteUrl" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">websiteUrl</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">websiteUrl</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional URL of the website for this implementation.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Implementation.icons" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">icons</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">icons</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.Icon">Icon</span></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional list of icons for this implementation.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.InitializedNotification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">InitializedNotification</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-internal" title="Notification (mcp.types.Notification)" href="#mcp.Notification">Notification</a>[<span title="mcp.types.NotificationParams">NotificationParams</span> | None, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['notifications/initialized']]</code></p>
|
|
|
|
|
|
<p>This notification is sent from the client to the server after initialization has
|
|
finished.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">702</span>
|
|
<span class="normal">703</span>
|
|
<span class="normal">704</span>
|
|
<span class="normal">705</span>
|
|
<span class="normal">706</span>
|
|
<span class="normal">707</span>
|
|
<span class="normal">708</span>
|
|
<span class="normal">709</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">InitializedNotification</span><span class="p">(</span><span class="n">Notification</span><span class="p">[</span><span class="n">NotificationParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/initialized"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> This notification is sent from the client to the server after initialization has</span>
|
|
<span class="sd"> finished.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/initialized"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"notifications/initialized"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">NotificationParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.InitializeRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">InitializeRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.InitializeRequestParams">InitializeRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['initialize']]</code></p>
|
|
|
|
|
|
<p>This request is sent from the client to the server when it first connects, asking it
|
|
to begin initialization.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">681</span>
|
|
<span class="normal">682</span>
|
|
<span class="normal">683</span>
|
|
<span class="normal">684</span>
|
|
<span class="normal">685</span>
|
|
<span class="normal">686</span>
|
|
<span class="normal">687</span>
|
|
<span class="normal">688</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">InitializeRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">InitializeRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"initialize"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> This request is sent from the client to the server when it first connects, asking it</span>
|
|
<span class="sd"> to begin initialization.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"initialize"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"initialize"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">InitializeRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.InitializeResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">InitializeResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Result">Result</span></code></p>
|
|
|
|
|
|
<p>After receiving an initialize request from the client, the server sends this.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">691</span>
|
|
<span class="normal">692</span>
|
|
<span class="normal">693</span>
|
|
<span class="normal">694</span>
|
|
<span class="normal">695</span>
|
|
<span class="normal">696</span>
|
|
<span class="normal">697</span>
|
|
<span class="normal">698</span>
|
|
<span class="normal">699</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">InitializeResult</span><span class="p">(</span><span class="n">Result</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""After receiving an initialize request from the client, the server sends this."""</span>
|
|
|
|
<span class="n">protocolVersion</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span>
|
|
<span class="w"> </span><span class="sd">"""The version of the Model Context Protocol that the server wants to use."""</span>
|
|
<span class="n">capabilities</span><span class="p">:</span> <span class="n">ServerCapabilities</span>
|
|
<span class="n">serverInfo</span><span class="p">:</span> <span class="n">Implementation</span>
|
|
<span class="n">instructions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Instructions describing how to use the server and its features."""</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.InitializeResult.protocolVersion" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">protocolVersion</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">protocolVersion</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The version of the Model Context Protocol that the server wants to use.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.InitializeResult.instructions" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">instructions</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">instructions</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Instructions describing how to use the server and its features.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.JSONRPCError" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">JSONRPCError</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>A response to a request that indicates an error occurred.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">214</span>
|
|
<span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">JSONRPCError</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""A response to a request that indicates an error occurred."""</span>
|
|
|
|
<span class="n">jsonrpc</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"2.0"</span><span class="p">]</span>
|
|
<span class="nb">id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">int</span>
|
|
<span class="n">error</span><span class="p">:</span> <span class="n">ErrorData</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.JSONRPCRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">JSONRPCRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>, <a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>] | None, <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>]</code></p>
|
|
|
|
|
|
<p>A request that expects a response.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">JSONRPCRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="nb">str</span><span class="p">]):</span>
|
|
<span class="w"> </span><span class="sd">"""A request that expects a response."""</span>
|
|
|
|
<span class="n">jsonrpc</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"2.0"</span><span class="p">]</span>
|
|
<span class="nb">id</span><span class="p">:</span> <span class="n">RequestId</span>
|
|
<span class="n">method</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.JSONRPCResponse" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">JSONRPCResponse</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>A successful (non-error) response to a request.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">168</span>
|
|
<span class="normal">169</span>
|
|
<span class="normal">170</span>
|
|
<span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">JSONRPCResponse</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""A successful (non-error) response to a request."""</span>
|
|
|
|
<span class="n">jsonrpc</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"2.0"</span><span class="p">]</span>
|
|
<span class="nb">id</span><span class="p">:</span> <span class="n">RequestId</span>
|
|
<span class="n">result</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ListPromptsRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ListPromptsRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.PaginatedRequest">PaginatedRequest</span>[<a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['prompts/list']]</code></p>
|
|
|
|
|
|
<p>Sent from the client to request a list of prompts and prompt templates.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">968</span>
|
|
<span class="normal">969</span>
|
|
<span class="normal">970</span>
|
|
<span class="normal">971</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ListPromptsRequest</span><span class="p">(</span><span class="n">PaginatedRequest</span><span class="p">[</span><span class="n">Literal</span><span class="p">[</span><span class="s2">"prompts/list"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Sent from the client to request a list of prompts and prompt templates."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"prompts/list"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"prompts/list"</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ListPromptsResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ListPromptsResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.PaginatedResult">PaginatedResult</span></code></p>
|
|
|
|
|
|
<p>The server's response to a prompts/list request from the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1003</span>
|
|
<span class="normal">1004</span>
|
|
<span class="normal">1005</span>
|
|
<span class="normal">1006</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ListPromptsResult</span><span class="p">(</span><span class="n">PaginatedResult</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The server's response to a prompts/list request from the client."""</span>
|
|
|
|
<span class="n">prompts</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Prompt</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ListResourcesRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ListResourcesRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.PaginatedRequest">PaginatedRequest</span>[<a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['resources/list']]</code></p>
|
|
|
|
|
|
<p>Sent from the client to request a list of resources the server has.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">755</span>
|
|
<span class="normal">756</span>
|
|
<span class="normal">757</span>
|
|
<span class="normal">758</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ListResourcesRequest</span><span class="p">(</span><span class="n">PaginatedRequest</span><span class="p">[</span><span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/list"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Sent from the client to request a list of resources the server has."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/list"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"resources/list"</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ListResourcesResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ListResourcesResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.PaginatedResult">PaginatedResult</span></code></p>
|
|
|
|
|
|
<p>The server's response to a resources/list request from the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">820</span>
|
|
<span class="normal">821</span>
|
|
<span class="normal">822</span>
|
|
<span class="normal">823</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ListResourcesResult</span><span class="p">(</span><span class="n">PaginatedResult</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The server's response to a resources/list request from the client."""</span>
|
|
|
|
<span class="n">resources</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Resource</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ListToolsResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ListToolsResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.PaginatedResult">PaginatedResult</span></code></p>
|
|
|
|
|
|
<p>The server's response to a tools/list request from the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1342</span>
|
|
<span class="normal">1343</span>
|
|
<span class="normal">1344</span>
|
|
<span class="normal">1345</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ListToolsResult</span><span class="p">(</span><span class="n">PaginatedResult</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The server's response to a tools/list request from the client."""</span>
|
|
|
|
<span class="n">tools</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Tool</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.LoggingMessageNotification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">LoggingMessageNotification</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-internal" title="Notification (mcp.types.Notification)" href="#mcp.Notification">Notification</a>[<span title="mcp.types.LoggingMessageNotificationParams">LoggingMessageNotificationParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['notifications/message']]</code></p>
|
|
|
|
|
|
<p>Notification of a log message passed from server to client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1415</span>
|
|
<span class="normal">1416</span>
|
|
<span class="normal">1417</span>
|
|
<span class="normal">1418</span>
|
|
<span class="normal">1419</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">LoggingMessageNotification</span><span class="p">(</span><span class="n">Notification</span><span class="p">[</span><span class="n">LoggingMessageNotificationParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/message"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Notification of a log message passed from server to client."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/message"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"notifications/message"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">LoggingMessageNotificationParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.Notification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">Notification</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code>, <code><a class="autorefs autorefs-external" title="typing.Generic" href="https://docs.python.org/3/library/typing.html#typing.Generic">Generic</a>[<span title="mcp.types.NotificationParamsT">NotificationParamsT</span>, <span title="mcp.types.MethodT">MethodT</span>]</code></p>
|
|
|
|
|
|
<p>Base class for JSON-RPC notifications.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Notification</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">,</span> <span class="n">Generic</span><span class="p">[</span><span class="n">NotificationParamsT</span><span class="p">,</span> <span class="n">MethodT</span><span class="p">]):</span>
|
|
<span class="w"> </span><span class="sd">"""Base class for JSON-RPC notifications."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">MethodT</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">NotificationParamsT</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.PingRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">PingRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.RequestParams">RequestParams</span> | None, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['ping']]</code></p>
|
|
|
|
|
|
<p>A ping, issued by either the server or the client, to check that the other party is
|
|
still alive.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">712</span>
|
|
<span class="normal">713</span>
|
|
<span class="normal">714</span>
|
|
<span class="normal">715</span>
|
|
<span class="normal">716</span>
|
|
<span class="normal">717</span>
|
|
<span class="normal">718</span>
|
|
<span class="normal">719</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">PingRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">RequestParams</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"ping"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> A ping, issued by either the server or the client, to check that the other party is</span>
|
|
<span class="sd"> still alive.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"ping"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"ping"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">RequestParams</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ProgressNotification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ProgressNotification</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-internal" title="Notification (mcp.types.Notification)" href="#mcp.Notification">Notification</a>[<span title="mcp.types.ProgressNotificationParams">ProgressNotificationParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['notifications/progress']]</code></p>
|
|
|
|
|
|
<p>An out-of-band notification used to inform the receiver of a progress update for a
|
|
long-running request.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">745</span>
|
|
<span class="normal">746</span>
|
|
<span class="normal">747</span>
|
|
<span class="normal">748</span>
|
|
<span class="normal">749</span>
|
|
<span class="normal">750</span>
|
|
<span class="normal">751</span>
|
|
<span class="normal">752</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ProgressNotification</span><span class="p">(</span><span class="n">Notification</span><span class="p">[</span><span class="n">ProgressNotificationParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/progress"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> An out-of-band notification used to inform the receiver of a progress update for a</span>
|
|
<span class="sd"> long-running request.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/progress"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"notifications/progress"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">ProgressNotificationParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.PromptsCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">PromptsCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability for prompts operations.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">437</span>
|
|
<span class="normal">438</span>
|
|
<span class="normal">439</span>
|
|
<span class="normal">440</span>
|
|
<span class="normal">441</span>
|
|
<span class="normal">442</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">PromptsCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capability for prompts operations."""</span>
|
|
|
|
<span class="n">listChanged</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether this server supports notifications for changes to the prompt list."""</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.PromptsCapability.listChanged" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">listChanged</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">listChanged</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether this server supports notifications for changes to the prompt list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ReadResourceRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ReadResourceRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.ReadResourceRequestParams">ReadResourceRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['resources/read']]</code></p>
|
|
|
|
|
|
<p>Sent from the client to the server, to read a specific resource URI.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">849</span>
|
|
<span class="normal">850</span>
|
|
<span class="normal">851</span>
|
|
<span class="normal">852</span>
|
|
<span class="normal">853</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ReadResourceRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">ReadResourceRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/read"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""Sent from the client to the server, to read a specific resource URI."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/read"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"resources/read"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">ReadResourceRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ReadResourceResult" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ReadResourceResult</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Result">Result</span></code></p>
|
|
|
|
|
|
<p>The server's response to a resources/read request from the client.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">888</span>
|
|
<span class="normal">889</span>
|
|
<span class="normal">890</span>
|
|
<span class="normal">891</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ReadResourceResult</span><span class="p">(</span><span class="n">Result</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""The server's response to a resources/read request from the client."""</span>
|
|
|
|
<span class="n">contents</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">TextResourceContents</span> <span class="o">|</span> <span class="n">BlobResourceContents</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.Resource" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">Resource</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.BaseMetadata">BaseMetadata</span></code></p>
|
|
|
|
|
|
<p>A known resource that the server is capable of reading.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">767</span>
|
|
<span class="normal">768</span>
|
|
<span class="normal">769</span>
|
|
<span class="normal">770</span>
|
|
<span class="normal">771</span>
|
|
<span class="normal">772</span>
|
|
<span class="normal">773</span>
|
|
<span class="normal">774</span>
|
|
<span class="normal">775</span>
|
|
<span class="normal">776</span>
|
|
<span class="normal">777</span>
|
|
<span class="normal">778</span>
|
|
<span class="normal">779</span>
|
|
<span class="normal">780</span>
|
|
<span class="normal">781</span>
|
|
<span class="normal">782</span>
|
|
<span class="normal">783</span>
|
|
<span class="normal">784</span>
|
|
<span class="normal">785</span>
|
|
<span class="normal">786</span>
|
|
<span class="normal">787</span>
|
|
<span class="normal">788</span>
|
|
<span class="normal">789</span>
|
|
<span class="normal">790</span>
|
|
<span class="normal">791</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Resource</span><span class="p">(</span><span class="n">BaseMetadata</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""A known resource that the server is capable of reading."""</span>
|
|
|
|
<span class="n">uri</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="n">AnyUrl</span><span class="p">,</span> <span class="n">UrlConstraints</span><span class="p">(</span><span class="n">host_required</span><span class="o">=</span><span class="kc">False</span><span class="p">)]</span>
|
|
<span class="w"> </span><span class="sd">"""The URI of this resource."""</span>
|
|
<span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""A description of what this resource represents."""</span>
|
|
<span class="n">mimeType</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""The MIME type of this resource, if known."""</span>
|
|
<span class="n">size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> The size of the raw resource content, in bytes (i.e., before base64 encoding</span>
|
|
<span class="sd"> or any tokenization), if known.</span>
|
|
|
|
<span class="sd"> This can be used by Hosts to display file sizes and estimate context window usage.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">icons</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Icon</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""An optional list of icons for this resource."""</span>
|
|
<span class="n">annotations</span><span class="p">:</span> <span class="n">Annotations</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)</span>
|
|
<span class="sd"> for notes on _meta usage.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.uri" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">uri</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">uri</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Annotated" href="https://docs.python.org/3/library/typing.html#typing.Annotated">Annotated</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" title="pydantic.networks.AnyUrl" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.AnyUrl">AnyUrl</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.networks.UrlConstraints" href="https://docs.pydantic.dev/latest/api/pydantic/networks/#pydantic.networks.UrlConstraints">UrlConstraints</a></span><span class="p">(</span><span class="n"><span title="pydantic.networks.UrlConstraints(host_required)">host_required</span></span><span class="o">=</span><span class="kc">False</span><span class="p">)]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The URI of this resource.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.description" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">description</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">description</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>A description of what this resource represents.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.mimeType" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">mimeType</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">mimeType</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The MIME type of this resource, if known.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.size" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">size</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">size</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The size of the raw resource content, in bytes (i.e., before base64 encoding
|
|
or any tokenization), if known.</p>
|
|
<p>This can be used by Hosts to display file sizes and estimate context window usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.icons" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">icons</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">icons</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.Icon">Icon</span></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional list of icons for this resource.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Resource.meta" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">meta</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span>
|
|
<span class="n"><span title="pydantic.Field(alias)">alias</span></span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n"><span title="pydantic.Field(default)">default</span></span><span class="o">=</span><span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>See <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields">MCP specification</a>
|
|
for notes on _meta usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ResourcesCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ResourcesCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability for resources operations.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">445</span>
|
|
<span class="normal">446</span>
|
|
<span class="normal">447</span>
|
|
<span class="normal">448</span>
|
|
<span class="normal">449</span>
|
|
<span class="normal">450</span>
|
|
<span class="normal">451</span>
|
|
<span class="normal">452</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ResourcesCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capability for resources operations."""</span>
|
|
|
|
<span class="n">subscribe</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether this server supports subscribing to resource updates."""</span>
|
|
<span class="n">listChanged</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether this server supports notifications for changes to the resource list."""</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ResourcesCapability.subscribe" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">subscribe</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">subscribe</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether this server supports subscribing to resource updates.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ResourcesCapability.listChanged" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">listChanged</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">listChanged</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether this server supports notifications for changes to the resource list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ResourceUpdatedNotification" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ResourceUpdatedNotification</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-internal" title="Notification (mcp.types.Notification)" href="#mcp.Notification">Notification</a>[<span title="mcp.types.ResourceUpdatedNotificationParams">ResourceUpdatedNotificationParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['notifications/resources/updated']]</code></p>
|
|
|
|
|
|
<p>A notification from the server to the client, informing it that a resource has
|
|
changed and may need to be read again.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">956</span>
|
|
<span class="normal">957</span>
|
|
<span class="normal">958</span>
|
|
<span class="normal">959</span>
|
|
<span class="normal">960</span>
|
|
<span class="normal">961</span>
|
|
<span class="normal">962</span>
|
|
<span class="normal">963</span>
|
|
<span class="normal">964</span>
|
|
<span class="normal">965</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ResourceUpdatedNotification</span><span class="p">(</span>
|
|
<span class="n">Notification</span><span class="p">[</span><span class="n">ResourceUpdatedNotificationParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/resources/updated"</span><span class="p">]]</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> A notification from the server to the client, informing it that a resource has</span>
|
|
<span class="sd"> changed and may need to be read again.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"notifications/resources/updated"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"notifications/resources/updated"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">ResourceUpdatedNotificationParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.RootsCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">RootsCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability for root operations.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">RootsCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capability for root operations."""</span>
|
|
|
|
<span class="n">listChanged</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether the client supports notifications for changes to the roots list."""</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.RootsCapability.listChanged" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">listChanged</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">listChanged</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether the client supports notifications for changes to the roots list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SamplingCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Sampling capability structure, allowing fine-grained capability advertisement.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SamplingCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Sampling capability structure, allowing fine-grained capability advertisement.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">context</span><span class="p">:</span> <span class="n">SamplingContextCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Present if the client supports non-'none' values for includeContext parameter.</span>
|
|
<span class="sd"> SOFT-DEPRECATED: New implementations should use tools parameter instead.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="n">SamplingToolsCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Present if the client supports tools and toolChoice parameters in sampling requests.</span>
|
|
<span class="sd"> Presence indicates full tool calling support during sampling.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.SamplingCapability.context" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">context</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">context</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="SamplingContextCapability (mcp.types.SamplingContextCapability)" href="#mcp.SamplingContextCapability">SamplingContextCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports non-'none' values for includeContext parameter.
|
|
SOFT-DEPRECATED: New implementations should use tools parameter instead.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.SamplingCapability.tools" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">tools</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">tools</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="SamplingToolsCapability (mcp.types.SamplingToolsCapability)" href="#mcp.SamplingToolsCapability">SamplingToolsCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the client supports tools and toolChoice parameters in sampling requests.
|
|
Presence indicates full tool calling support during sampling.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingContent" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">SamplingContent</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">SamplingContent</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.TypeAlias" href="https://docs.python.org/3/library/typing.html#typing.TypeAlias">TypeAlias</a></span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n"><span title="mcp.types.TextContent">TextContent</span></span> <span class="o">|</span> <span class="n"><span title="mcp.types.ImageContent">ImageContent</span></span> <span class="o">|</span> <span class="n"><span title="mcp.types.AudioContent">AudioContent</span></span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Basic content types for sampling responses (without tool use).
|
|
Used for backwards-compatible CreateMessageResult when tools are not used.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingContextCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SamplingContextCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability for context inclusion during sampling.</p>
|
|
<p>Indicates support for non-'none' values in the includeContext parameter.
|
|
SOFT-DEPRECATED: New implementations should use tools parameter instead.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span>
|
|
<span class="normal">290</span>
|
|
<span class="normal">291</span>
|
|
<span class="normal">292</span>
|
|
<span class="normal">293</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SamplingContextCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Capability for context inclusion during sampling.</span>
|
|
|
|
<span class="sd"> Indicates support for non-'none' values in the includeContext parameter.</span>
|
|
<span class="sd"> SOFT-DEPRECATED: New implementations should use tools parameter instead.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingMessage" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SamplingMessage</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Describes a message issued to or received from an LLM API.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1154</span>
|
|
<span class="normal">1155</span>
|
|
<span class="normal">1156</span>
|
|
<span class="normal">1157</span>
|
|
<span class="normal">1158</span>
|
|
<span class="normal">1159</span>
|
|
<span class="normal">1160</span>
|
|
<span class="normal">1161</span>
|
|
<span class="normal">1162</span>
|
|
<span class="normal">1163</span>
|
|
<span class="normal">1164</span>
|
|
<span class="normal">1165</span>
|
|
<span class="normal">1166</span>
|
|
<span class="normal">1167</span>
|
|
<span class="normal">1168</span>
|
|
<span class="normal">1169</span>
|
|
<span class="normal">1170</span>
|
|
<span class="normal">1171</span>
|
|
<span class="normal">1172</span>
|
|
<span class="normal">1173</span>
|
|
<span class="normal">1174</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SamplingMessage</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Describes a message issued to or received from an LLM API."""</span>
|
|
|
|
<span class="n">role</span><span class="p">:</span> <span class="n">Role</span>
|
|
<span class="n">content</span><span class="p">:</span> <span class="n">SamplingMessageContentBlock</span> <span class="o">|</span> <span class="nb">list</span><span class="p">[</span><span class="n">SamplingMessageContentBlock</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Message content. Can be a single content block or an array of content blocks</span>
|
|
<span class="sd"> for multi-modal messages and tool interactions.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)</span>
|
|
<span class="sd"> for notes on _meta usage.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
|
|
<span class="nd">@property</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">content_as_list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="n">SamplingMessageContentBlock</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""Returns the content as a list of content blocks, regardless of whether</span>
|
|
<span class="sd"> it was originally a single block or a list."""</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">]</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.SamplingMessage.content" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content</span><span class="p">:</span> <span class="p">(</span>
|
|
<span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span>
|
|
<span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span><span class="p">]</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Message content. Can be a single content block or an array of content blocks
|
|
for multi-modal messages and tool interactions.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.SamplingMessage.meta" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">meta</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span>
|
|
<span class="n"><span title="pydantic.Field(alias)">alias</span></span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n"><span title="pydantic.Field(default)">default</span></span><span class="o">=</span><span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>See <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields">MCP specification</a>
|
|
for notes on _meta usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.SamplingMessage.content_as_list" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content_as_list</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-property"><code>property</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content_as_list</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title="SamplingMessageContentBlock
|
|
|
|
|
|
|
|
module-attribute
|
|
(mcp.types.SamplingMessageContentBlock)" href="#mcp.SamplingMessageContentBlock">SamplingMessageContentBlock</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the content as a list of content blocks, regardless of whether
|
|
it was originally a single block or a list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingMessageContentBlock" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">SamplingMessageContentBlock</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">SamplingMessageContentBlock</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.TypeAlias" href="https://docs.python.org/3/library/typing.html#typing.TypeAlias">TypeAlias</a></span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n"><span title="mcp.types.TextContent">TextContent</span></span>
|
|
<span class="o">|</span> <span class="n"><span title="mcp.types.ImageContent">ImageContent</span></span>
|
|
<span class="o">|</span> <span class="n"><span title="mcp.types.AudioContent">AudioContent</span></span>
|
|
<span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolUseContent (mcp.types.ToolUseContent)" href="#mcp.ToolUseContent">ToolUseContent</a></span>
|
|
<span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolResultContent (mcp.types.ToolResultContent)" href="#mcp.ToolResultContent">ToolResultContent</a></span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Content block types allowed in sampling messages.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SamplingToolsCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SamplingToolsCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability indicating support for tool calling during sampling.</p>
|
|
<p>When present in ClientCapabilities.sampling, indicates that the client
|
|
supports the tools and toolChoice parameters in sampling requests.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SamplingToolsCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Capability indicating support for tool calling during sampling.</span>
|
|
|
|
<span class="sd"> When present in ClientCapabilities.sampling, indicates that the client</span>
|
|
<span class="sd"> supports the tools and toolChoice parameters in sampling requests.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ServerCapabilities" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ServerCapabilities</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capabilities that a server may support.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">506</span>
|
|
<span class="normal">507</span>
|
|
<span class="normal">508</span>
|
|
<span class="normal">509</span>
|
|
<span class="normal">510</span>
|
|
<span class="normal">511</span>
|
|
<span class="normal">512</span>
|
|
<span class="normal">513</span>
|
|
<span class="normal">514</span>
|
|
<span class="normal">515</span>
|
|
<span class="normal">516</span>
|
|
<span class="normal">517</span>
|
|
<span class="normal">518</span>
|
|
<span class="normal">519</span>
|
|
<span class="normal">520</span>
|
|
<span class="normal">521</span>
|
|
<span class="normal">522</span>
|
|
<span class="normal">523</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ServerCapabilities</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capabilities that a server may support."""</span>
|
|
|
|
<span class="n">experimental</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Experimental, non-standard capabilities that the server supports."""</span>
|
|
<span class="n">logging</span><span class="p">:</span> <span class="n">LoggingCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server supports sending log messages to the client."""</span>
|
|
<span class="n">prompts</span><span class="p">:</span> <span class="n">PromptsCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server offers any prompt templates."""</span>
|
|
<span class="n">resources</span><span class="p">:</span> <span class="n">ResourcesCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server offers any resources to read."""</span>
|
|
<span class="n">tools</span><span class="p">:</span> <span class="n">ToolsCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server offers any tools to call."""</span>
|
|
<span class="n">completions</span><span class="p">:</span> <span class="n">CompletionsCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server offers autocompletion suggestions for prompts and resources."""</span>
|
|
<span class="n">tasks</span><span class="p">:</span> <span class="n">ServerTasksCapability</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Present if the server supports task-augmented requests."""</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.experimental" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">experimental</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">experimental</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Experimental, non-standard capabilities that the server supports.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.logging" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">logging</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">logging</span><span class="p">:</span> <span class="n"><span title="mcp.types.LoggingCapability">LoggingCapability</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server supports sending log messages to the client.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.prompts" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">prompts</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">prompts</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="PromptsCapability (mcp.types.PromptsCapability)" href="#mcp.PromptsCapability">PromptsCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server offers any prompt templates.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.resources" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">resources</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">resources</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ResourcesCapability (mcp.types.ResourcesCapability)" href="#mcp.ResourcesCapability">ResourcesCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server offers any resources to read.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.tools" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">tools</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">tools</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="ToolsCapability (mcp.types.ToolsCapability)" href="#mcp.ToolsCapability">ToolsCapability</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server offers any tools to call.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.completions" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">completions</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">completions</span><span class="p">:</span> <span class="n"><span title="mcp.types.CompletionsCapability">CompletionsCapability</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server offers autocompletion suggestions for prompts and resources.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ServerCapabilities.tasks" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">tasks</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">tasks</span><span class="p">:</span> <span class="n"><span title="mcp.types.ServerTasksCapability">ServerTasksCapability</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Present if the server supports task-augmented requests.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SetLevelRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SetLevelRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.SetLevelRequestParams">SetLevelRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['logging/setLevel']]</code></p>
|
|
|
|
|
|
<p>A request from the client to the server, to enable or adjust logging.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1393</span>
|
|
<span class="normal">1394</span>
|
|
<span class="normal">1395</span>
|
|
<span class="normal">1396</span>
|
|
<span class="normal">1397</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SetLevelRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">SetLevelRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"logging/setLevel"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""A request from the client to the server, to enable or adjust logging."""</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"logging/setLevel"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"logging/setLevel"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">SetLevelRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.SubscribeRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">SubscribeRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.SubscribeRequestParams">SubscribeRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['resources/subscribe']]</code></p>
|
|
|
|
|
|
<p>Sent from the client to request resources/updated notifications from the server
|
|
whenever a particular resource changes.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">917</span>
|
|
<span class="normal">918</span>
|
|
<span class="normal">919</span>
|
|
<span class="normal">920</span>
|
|
<span class="normal">921</span>
|
|
<span class="normal">922</span>
|
|
<span class="normal">923</span>
|
|
<span class="normal">924</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">SubscribeRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">SubscribeRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/subscribe"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Sent from the client to request resources/updated notifications from the server</span>
|
|
<span class="sd"> whenever a particular resource changes.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/subscribe"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"resources/subscribe"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">SubscribeRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.Tool" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">Tool</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.BaseMetadata">BaseMetadata</span></code></p>
|
|
|
|
|
|
<p>Definition for a tool the client can call.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1315</span>
|
|
<span class="normal">1316</span>
|
|
<span class="normal">1317</span>
|
|
<span class="normal">1318</span>
|
|
<span class="normal">1319</span>
|
|
<span class="normal">1320</span>
|
|
<span class="normal">1321</span>
|
|
<span class="normal">1322</span>
|
|
<span class="normal">1323</span>
|
|
<span class="normal">1324</span>
|
|
<span class="normal">1325</span>
|
|
<span class="normal">1326</span>
|
|
<span class="normal">1327</span>
|
|
<span class="normal">1328</span>
|
|
<span class="normal">1329</span>
|
|
<span class="normal">1330</span>
|
|
<span class="normal">1331</span>
|
|
<span class="normal">1332</span>
|
|
<span class="normal">1333</span>
|
|
<span class="normal">1334</span>
|
|
<span class="normal">1335</span>
|
|
<span class="normal">1336</span>
|
|
<span class="normal">1337</span>
|
|
<span class="normal">1338</span>
|
|
<span class="normal">1339</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Tool</span><span class="p">(</span><span class="n">BaseMetadata</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Definition for a tool the client can call."""</span>
|
|
|
|
<span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""A human-readable description of the tool."""</span>
|
|
<span class="n">inputSchema</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""A JSON Schema object defining the expected parameters for the tool."""</span>
|
|
<span class="n">outputSchema</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> An optional JSON Schema object defining the structure of the tool's output</span>
|
|
<span class="sd"> returned in the structuredContent field of a CallToolResult.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">icons</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Icon</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""An optional list of icons for this tool."""</span>
|
|
<span class="n">annotations</span><span class="p">:</span> <span class="n">ToolAnnotations</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Optional additional tool information."""</span>
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)</span>
|
|
<span class="sd"> for notes on _meta usage.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">execution</span><span class="p">:</span> <span class="n">ToolExecution</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.description" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">description</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">description</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>A human-readable description of the tool.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.inputSchema" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">inputSchema</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">inputSchema</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>A JSON Schema object defining the expected parameters for the tool.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.outputSchema" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">outputSchema</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">outputSchema</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional JSON Schema object defining the structure of the tool's output
|
|
returned in the structuredContent field of a CallToolResult.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.icons" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">icons</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">icons</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.Icon">Icon</span></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>An optional list of icons for this tool.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.annotations" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">annotations</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">annotations</span><span class="p">:</span> <span class="n"><span title="mcp.types.ToolAnnotations">ToolAnnotations</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Optional additional tool information.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.Tool.meta" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">meta</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span>
|
|
<span class="n"><span title="pydantic.Field(alias)">alias</span></span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n"><span title="pydantic.Field(default)">default</span></span><span class="o">=</span><span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>See <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields">MCP specification</a>
|
|
for notes on _meta usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ToolChoice" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ToolChoice</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Controls tool usage behavior during sampling.</p>
|
|
<p>Allows the server to specify whether and how the LLM should use tools
|
|
in its response.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1485</span>
|
|
<span class="normal">1486</span>
|
|
<span class="normal">1487</span>
|
|
<span class="normal">1488</span>
|
|
<span class="normal">1489</span>
|
|
<span class="normal">1490</span>
|
|
<span class="normal">1491</span>
|
|
<span class="normal">1492</span>
|
|
<span class="normal">1493</span>
|
|
<span class="normal">1494</span>
|
|
<span class="normal">1495</span>
|
|
<span class="normal">1496</span>
|
|
<span class="normal">1497</span>
|
|
<span class="normal">1498</span>
|
|
<span class="normal">1499</span>
|
|
<span class="normal">1500</span>
|
|
<span class="normal">1501</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ToolChoice</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Controls tool usage behavior during sampling.</span>
|
|
|
|
<span class="sd"> Allows the server to specify whether and how the LLM should use tools</span>
|
|
<span class="sd"> in its response.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">mode</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"auto"</span><span class="p">,</span> <span class="s2">"required"</span><span class="p">,</span> <span class="s2">"none"</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Controls when tools are used:</span>
|
|
<span class="sd"> - "auto": Model decides whether to use tools (default)</span>
|
|
<span class="sd"> - "required": Model MUST use at least one tool before completing</span>
|
|
<span class="sd"> - "none": Model should not use tools</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolChoice.mode" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">mode</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">mode</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a></span><span class="p">[</span><span class="s1">'auto'</span><span class="p">,</span> <span class="s1">'required'</span><span class="p">,</span> <span class="s1">'none'</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Controls when tools are used:
|
|
- "auto": Model decides whether to use tools (default)
|
|
- "required": Model MUST use at least one tool before completing
|
|
- "none": Model should not use tools</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ToolResultContent" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ToolResultContent</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Content representing the result of a tool execution.</p>
|
|
<p>This content type appears in user messages as a response to a ToolUseContent
|
|
from the assistant. It contains the output of executing the requested tool.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1110</span>
|
|
<span class="normal">1111</span>
|
|
<span class="normal">1112</span>
|
|
<span class="normal">1113</span>
|
|
<span class="normal">1114</span>
|
|
<span class="normal">1115</span>
|
|
<span class="normal">1116</span>
|
|
<span class="normal">1117</span>
|
|
<span class="normal">1118</span>
|
|
<span class="normal">1119</span>
|
|
<span class="normal">1120</span>
|
|
<span class="normal">1121</span>
|
|
<span class="normal">1122</span>
|
|
<span class="normal">1123</span>
|
|
<span class="normal">1124</span>
|
|
<span class="normal">1125</span>
|
|
<span class="normal">1126</span>
|
|
<span class="normal">1127</span>
|
|
<span class="normal">1128</span>
|
|
<span class="normal">1129</span>
|
|
<span class="normal">1130</span>
|
|
<span class="normal">1131</span>
|
|
<span class="normal">1132</span>
|
|
<span class="normal">1133</span>
|
|
<span class="normal">1134</span>
|
|
<span class="normal">1135</span>
|
|
<span class="normal">1136</span>
|
|
<span class="normal">1137</span>
|
|
<span class="normal">1138</span>
|
|
<span class="normal">1139</span>
|
|
<span class="normal">1140</span>
|
|
<span class="normal">1141</span>
|
|
<span class="normal">1142</span>
|
|
<span class="normal">1143</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ToolResultContent</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Content representing the result of a tool execution.</span>
|
|
|
|
<span class="sd"> This content type appears in user messages as a response to a ToolUseContent</span>
|
|
<span class="sd"> from the assistant. It contains the output of executing the requested tool.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="nb">type</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"tool_result"</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""Discriminator for tool result content."""</span>
|
|
|
|
<span class="n">toolUseId</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""The unique identifier that corresponds to the tool call's id field."""</span>
|
|
|
|
<span class="n">content</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="s2">"ContentBlock"</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> A list of content objects representing the tool result.</span>
|
|
<span class="sd"> Defaults to empty list if not provided.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">structuredContent</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Optional structured tool output that matches the tool's outputSchema (if defined).</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">isError</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether the tool execution resulted in an error."""</span>
|
|
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)</span>
|
|
<span class="sd"> for notes on _meta usage.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.type" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">type</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nb">type</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a></span><span class="p">[</span><span class="s1">'tool_result'</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Discriminator for tool result content.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.toolUseId" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">toolUseId</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">toolUseId</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The unique identifier that corresponds to the tool call's id field.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.content" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">content</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">content</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#list">list</a></span><span class="p">[</span><span class="n"><span title="mcp.types.ContentBlock">ContentBlock</span></span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>A list of content objects representing the tool result.
|
|
Defaults to empty list if not provided.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.structuredContent" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">structuredContent</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">structuredContent</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Optional structured tool output that matches the tool's outputSchema (if defined).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.isError" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">isError</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">isError</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether the tool execution resulted in an error.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolResultContent.meta" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">meta</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span>
|
|
<span class="n"><span title="pydantic.Field(alias)">alias</span></span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n"><span title="pydantic.Field(default)">default</span></span><span class="o">=</span><span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>See <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields">MCP specification</a>
|
|
for notes on _meta usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ToolsCapability" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ToolsCapability</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Capability for tools operations.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">455</span>
|
|
<span class="normal">456</span>
|
|
<span class="normal">457</span>
|
|
<span class="normal">458</span>
|
|
<span class="normal">459</span>
|
|
<span class="normal">460</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ToolsCapability</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""Capability for tools operations."""</span>
|
|
|
|
<span class="n">listChanged</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="w"> </span><span class="sd">"""Whether this server supports notifications for changes to the tool list."""</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolsCapability.listChanged" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">listChanged</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">listChanged</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Whether this server supports notifications for changes to the tool list.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.ToolUseContent" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">ToolUseContent</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><a class="autorefs autorefs-external" title="pydantic.BaseModel" href="https://docs.pydantic.dev/latest/api/pydantic/base_model/#pydantic.BaseModel">BaseModel</a></code></p>
|
|
|
|
|
|
<p>Content representing an assistant's request to invoke a tool.</p>
|
|
<p>This content type appears in assistant messages when the LLM wants to call a tool
|
|
during sampling. The server should execute the tool and return a ToolResultContent
|
|
in the next user message.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1081</span>
|
|
<span class="normal">1082</span>
|
|
<span class="normal">1083</span>
|
|
<span class="normal">1084</span>
|
|
<span class="normal">1085</span>
|
|
<span class="normal">1086</span>
|
|
<span class="normal">1087</span>
|
|
<span class="normal">1088</span>
|
|
<span class="normal">1089</span>
|
|
<span class="normal">1090</span>
|
|
<span class="normal">1091</span>
|
|
<span class="normal">1092</span>
|
|
<span class="normal">1093</span>
|
|
<span class="normal">1094</span>
|
|
<span class="normal">1095</span>
|
|
<span class="normal">1096</span>
|
|
<span class="normal">1097</span>
|
|
<span class="normal">1098</span>
|
|
<span class="normal">1099</span>
|
|
<span class="normal">1100</span>
|
|
<span class="normal">1101</span>
|
|
<span class="normal">1102</span>
|
|
<span class="normal">1103</span>
|
|
<span class="normal">1104</span>
|
|
<span class="normal">1105</span>
|
|
<span class="normal">1106</span>
|
|
<span class="normal">1107</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ToolUseContent</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Content representing an assistant's request to invoke a tool.</span>
|
|
|
|
<span class="sd"> This content type appears in assistant messages when the LLM wants to call a tool</span>
|
|
<span class="sd"> during sampling. The server should execute the tool and return a ToolResultContent</span>
|
|
<span class="sd"> in the next user message.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="nb">type</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"tool_use"</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""Discriminator for tool use content."""</span>
|
|
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""The name of the tool to invoke. Must match a tool name from the request's tools array."""</span>
|
|
|
|
<span class="nb">id</span><span class="p">:</span> <span class="nb">str</span>
|
|
<span class="w"> </span><span class="sd">"""Unique identifier for this tool call, used to correlate with ToolResultContent."""</span>
|
|
|
|
<span class="nb">input</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="sd">"""Arguments to pass to the tool. Must conform to the tool's inputSchema."""</span>
|
|
|
|
<span class="n">meta</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)</span>
|
|
<span class="sd"> for notes on _meta usage.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">model_config</span> <span class="o">=</span> <span class="n">ConfigDict</span><span class="p">(</span><span class="n">extra</span><span class="o">=</span><span class="s2">"allow"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolUseContent.type" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">type</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nb">type</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a></span><span class="p">[</span><span class="s1">'tool_use'</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Discriminator for tool use content.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolUseContent.name" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">name</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>The name of the tool to invoke. Must match a tool name from the request's tools array.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolUseContent.id" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">id</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nb">id</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Unique identifier for this tool call, used to correlate with ToolResultContent.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolUseContent.input" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">input</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="nb">input</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Arguments to pass to the tool. Must conform to the tool's inputSchema.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-attribute">
|
|
|
|
|
|
|
|
<h4 id="mcp.ToolUseContent.meta" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-attribute-name">meta</span>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small>
|
|
<small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small>
|
|
</span>
|
|
|
|
</h4>
|
|
<div class="language-python doc-signature highlight"><pre><span></span><code><span class="n">meta</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" title="pydantic.Field" href="https://docs.pydantic.dev/latest/api/pydantic/fields/#pydantic.fields.Field">Field</a></span><span class="p">(</span>
|
|
<span class="n"><span title="pydantic.Field(alias)">alias</span></span><span class="o">=</span><span class="s2">"_meta"</span><span class="p">,</span> <span class="n"><span title="pydantic.Field(default)">default</span></span><span class="o">=</span><span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div>
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>See <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields">MCP specification</a>
|
|
for notes on _meta usage.</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="mcp.UnsubscribeRequest" class="doc doc-heading">
|
|
<span class="doc doc-object-name doc-class-name">UnsubscribeRequest</span>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="mcp.types.Request">Request</span>[<span title="mcp.types.UnsubscribeRequestParams">UnsubscribeRequestParams</span>, <a class="autorefs autorefs-external" title="typing.Literal" href="https://docs.python.org/3/library/typing.html#typing.Literal">Literal</a>['resources/unsubscribe']]</code></p>
|
|
|
|
|
|
<p>Sent from the client to request cancellation of resources/updated notifications from
|
|
the server.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>src/mcp/types.py</code></summary>
|
|
<div class="language-python highlight"><table class="highlighttable"><tbody><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">935</span>
|
|
<span class="normal">936</span>
|
|
<span class="normal">937</span>
|
|
<span class="normal">938</span>
|
|
<span class="normal">939</span>
|
|
<span class="normal">940</span>
|
|
<span class="normal">941</span>
|
|
<span class="normal">942</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">UnsubscribeRequest</span><span class="p">(</span><span class="n">Request</span><span class="p">[</span><span class="n">UnsubscribeRequestParams</span><span class="p">,</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/unsubscribe"</span><span class="p">]]):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Sent from the client to request cancellation of resources/updated notifications from</span>
|
|
<span class="sd"> the server.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">method</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">"resources/unsubscribe"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"resources/unsubscribe"</span>
|
|
<span class="n">params</span><span class="p">:</span> <span class="n">UnsubscribeRequestParams</span>
|
|
</code></pre></div></td></tr></tbody></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "..", "features": ["search.suggest", "search.highlight", "content.tabs.link", "content.code.annotate", "content.code.copy", "content.code.select", "navigation.path", "navigation.indexes", "navigation.sections", "navigation.tracking", "toc.follow"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.92b07e13.min.js"></script>
|
|
|
|
|
|
|
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
document$.subscribe(()=>{ lightbox.reload(); });
|
|
</script></body></html> |