@sylphai/adal-cli-darwin-x64 0.2.1 → 0.2.2-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/adal-cli.js +552 -564
  2. package/backend/adal-backend/_internal/Python +0 -0
  3. package/backend/adal-backend/_internal/Python.framework/Python +0 -0
  4. package/backend/adal-backend/_internal/Python.framework/Resources/Info.plist +3 -3
  5. package/backend/adal-backend/_internal/Python.framework/Versions/3.13/Python +0 -0
  6. package/backend/adal-backend/_internal/Python.framework/Versions/{3.12 → 3.13}/Resources/Info.plist +3 -3
  7. package/backend/adal-backend/_internal/Python.framework/Versions/Current/Python +0 -0
  8. package/backend/adal-backend/_internal/Python.framework/Versions/Current/Resources/Info.plist +3 -3
  9. package/backend/adal-backend/_internal/_cffi_backend.cpython-313-darwin.so +0 -0
  10. package/backend/adal-backend/_internal/aiohttp/_http_parser.cpython-313-darwin.so +0 -0
  11. package/backend/adal-backend/_internal/aiohttp/_http_writer.cpython-313-darwin.so +0 -0
  12. package/backend/adal-backend/_internal/aiohttp/_websocket/mask.cpython-313-darwin.so +0 -0
  13. package/backend/adal-backend/_internal/aiohttp/_websocket/reader_c.cpython-313-darwin.so +0 -0
  14. package/backend/adal-backend/_internal/{attrs-25.3.0.dist-info → attrs-25.4.0.dist-info}/METADATA +63 -60
  15. package/backend/adal-backend/_internal/{attrs-25.3.0.dist-info → attrs-25.4.0.dist-info}/RECORD +15 -15
  16. package/backend/adal-backend/_internal/base_library.zip +0 -0
  17. package/backend/adal-backend/_internal/certifi/cacert.pem +62 -122
  18. package/backend/adal-backend/_internal/charset_normalizer/md.cpython-313-darwin.so +0 -0
  19. package/backend/adal-backend/_internal/charset_normalizer/md__mypyc.cpython-313-darwin.so +0 -0
  20. package/backend/adal-backend/_internal/{click-8.2.1.dist-info → click-8.3.1.dist-info}/METADATA +4 -2
  21. package/backend/adal-backend/_internal/click-8.3.1.dist-info/RECORD +23 -0
  22. package/backend/adal-backend/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  23. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/METADATA +139 -0
  24. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/RECORD +108 -0
  25. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/WHEEL +4 -0
  26. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE +3 -0
  27. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.APACHE +202 -0
  28. package/backend/adal-backend/_internal/cryptography-46.0.3.dist-info/licenses/LICENSE.BSD +27 -0
  29. package/backend/adal-backend/_internal/frozenlist/_frozenlist.cpython-313-darwin.so +0 -0
  30. package/backend/adal-backend/_internal/greenlet/_greenlet.cpython-313-darwin.so +0 -0
  31. package/backend/adal-backend/_internal/jiter/jiter.cpython-313-darwin.so +0 -0
  32. package/backend/adal-backend/_internal/libcrypto.3.dylib +0 -0
  33. package/backend/adal-backend/_internal/libncurses.6.dylib +0 -0
  34. package/backend/adal-backend/_internal/libssl.3.dylib +0 -0
  35. package/backend/adal-backend/_internal/markupsafe/{_speedups.cpython-312-darwin.so → _speedups.cpython-313-darwin.so} +0 -0
  36. package/backend/adal-backend/_internal/{MarkupSafe-3.0.2.dist-info → markupsafe-3.0.3.dist-info}/METADATA +15 -33
  37. package/backend/adal-backend/_internal/markupsafe-3.0.3.dist-info/RECORD +12 -0
  38. package/backend/adal-backend/_internal/markupsafe-3.0.3.dist-info/WHEEL +6 -0
  39. package/backend/adal-backend/_internal/{mcp-1.13.1.dist-info → mcp-1.22.0.dist-info}/METADATA +347 -31
  40. package/backend/adal-backend/_internal/mcp-1.22.0.dist-info/RECORD +94 -0
  41. package/backend/adal-backend/_internal/multidict/_multidict.cpython-313-darwin.so +0 -0
  42. package/backend/adal-backend/_internal/openai_agents-0.2.11.dist-info/INSTALLER +1 -0
  43. package/backend/adal-backend/_internal/openai_agents-0.2.11.dist-info/METADATA +352 -0
  44. package/backend/adal-backend/_internal/openai_agents-0.2.11.dist-info/RECORD +109 -0
  45. package/backend/adal-backend/_internal/openai_agents-0.2.11.dist-info/WHEEL +4 -0
  46. package/backend/adal-backend/_internal/openai_agents-0.2.11.dist-info/licenses/LICENSE +21 -0
  47. package/backend/adal-backend/_internal/propcache/_helpers_c.cpython-313-darwin.so +0 -0
  48. package/backend/adal-backend/_internal/pydantic-2.12.5.dist-info/INSTALLER +1 -0
  49. package/backend/adal-backend/_internal/pydantic-2.12.5.dist-info/METADATA +1029 -0
  50. package/backend/adal-backend/_internal/pydantic-2.12.5.dist-info/RECORD +112 -0
  51. package/backend/adal-backend/_internal/pydantic-2.12.5.dist-info/WHEEL +4 -0
  52. package/backend/adal-backend/_internal/pydantic-2.12.5.dist-info/licenses/LICENSE +21 -0
  53. package/backend/adal-backend/_internal/pydantic_core/_pydantic_core.cpython-313-darwin.so +0 -0
  54. package/backend/adal-backend/_internal/python3.13/lib-dynload/_asyncio.cpython-313-darwin.so +0 -0
  55. package/backend/adal-backend/_internal/python3.13/lib-dynload/_bisect.cpython-313-darwin.so +0 -0
  56. package/backend/adal-backend/_internal/python3.13/lib-dynload/_blake2.cpython-313-darwin.so +0 -0
  57. package/backend/adal-backend/_internal/python3.13/lib-dynload/_bz2.cpython-313-darwin.so +0 -0
  58. package/backend/adal-backend/_internal/{lib-dynload/_codecs_cn.cpython-312-darwin.so → python3.13/lib-dynload/_codecs_cn.cpython-313-darwin.so} +0 -0
  59. package/backend/adal-backend/_internal/{lib-dynload/_codecs_hk.cpython-312-darwin.so → python3.13/lib-dynload/_codecs_hk.cpython-313-darwin.so} +0 -0
  60. package/backend/adal-backend/_internal/python3.13/lib-dynload/_codecs_iso2022.cpython-313-darwin.so +0 -0
  61. package/backend/adal-backend/_internal/{lib-dynload/_codecs_jp.cpython-312-darwin.so → python3.13/lib-dynload/_codecs_jp.cpython-313-darwin.so} +0 -0
  62. package/backend/adal-backend/_internal/{lib-dynload/_codecs_kr.cpython-312-darwin.so → python3.13/lib-dynload/_codecs_kr.cpython-313-darwin.so} +0 -0
  63. package/backend/adal-backend/_internal/python3.13/lib-dynload/_codecs_tw.cpython-313-darwin.so +0 -0
  64. package/backend/adal-backend/_internal/python3.13/lib-dynload/_contextvars.cpython-313-darwin.so +0 -0
  65. package/backend/adal-backend/_internal/python3.13/lib-dynload/_csv.cpython-313-darwin.so +0 -0
  66. package/backend/adal-backend/_internal/python3.13/lib-dynload/_ctypes.cpython-313-darwin.so +0 -0
  67. package/backend/adal-backend/_internal/python3.13/lib-dynload/_curses.cpython-313-darwin.so +0 -0
  68. package/backend/adal-backend/_internal/python3.13/lib-dynload/_datetime.cpython-313-darwin.so +0 -0
  69. package/backend/adal-backend/_internal/python3.13/lib-dynload/_decimal.cpython-313-darwin.so +0 -0
  70. package/backend/adal-backend/_internal/python3.13/lib-dynload/_elementtree.cpython-313-darwin.so +0 -0
  71. package/backend/adal-backend/_internal/python3.13/lib-dynload/_hashlib.cpython-313-darwin.so +0 -0
  72. package/backend/adal-backend/_internal/python3.13/lib-dynload/_heapq.cpython-313-darwin.so +0 -0
  73. package/backend/adal-backend/_internal/python3.13/lib-dynload/_json.cpython-313-darwin.so +0 -0
  74. package/backend/adal-backend/_internal/python3.13/lib-dynload/_lzma.cpython-313-darwin.so +0 -0
  75. package/backend/adal-backend/_internal/python3.13/lib-dynload/_md5.cpython-313-darwin.so +0 -0
  76. package/backend/adal-backend/_internal/python3.13/lib-dynload/_multibytecodec.cpython-313-darwin.so +0 -0
  77. package/backend/adal-backend/_internal/python3.13/lib-dynload/_multiprocessing.cpython-313-darwin.so +0 -0
  78. package/backend/adal-backend/_internal/python3.13/lib-dynload/_opcode.cpython-313-darwin.so +0 -0
  79. package/backend/adal-backend/_internal/python3.13/lib-dynload/_pickle.cpython-313-darwin.so +0 -0
  80. package/backend/adal-backend/_internal/python3.13/lib-dynload/_posixshmem.cpython-313-darwin.so +0 -0
  81. package/backend/adal-backend/_internal/python3.13/lib-dynload/_posixsubprocess.cpython-313-darwin.so +0 -0
  82. package/backend/adal-backend/_internal/python3.13/lib-dynload/_queue.cpython-313-darwin.so +0 -0
  83. package/backend/adal-backend/_internal/python3.13/lib-dynload/_random.cpython-313-darwin.so +0 -0
  84. package/backend/adal-backend/_internal/python3.13/lib-dynload/_scproxy.cpython-313-darwin.so +0 -0
  85. package/backend/adal-backend/_internal/python3.13/lib-dynload/_sha1.cpython-313-darwin.so +0 -0
  86. package/backend/adal-backend/_internal/python3.13/lib-dynload/_sha2.cpython-313-darwin.so +0 -0
  87. package/backend/adal-backend/_internal/python3.13/lib-dynload/_sha3.cpython-313-darwin.so +0 -0
  88. package/backend/adal-backend/_internal/python3.13/lib-dynload/_socket.cpython-313-darwin.so +0 -0
  89. package/backend/adal-backend/_internal/python3.13/lib-dynload/_sqlite3.cpython-313-darwin.so +0 -0
  90. package/backend/adal-backend/_internal/python3.13/lib-dynload/_ssl.cpython-313-darwin.so +0 -0
  91. package/backend/adal-backend/_internal/python3.13/lib-dynload/_statistics.cpython-313-darwin.so +0 -0
  92. package/backend/adal-backend/_internal/python3.13/lib-dynload/_struct.cpython-313-darwin.so +0 -0
  93. package/backend/adal-backend/_internal/python3.13/lib-dynload/_uuid.cpython-313-darwin.so +0 -0
  94. package/backend/adal-backend/_internal/python3.13/lib-dynload/_zoneinfo.cpython-313-darwin.so +0 -0
  95. package/backend/adal-backend/_internal/python3.13/lib-dynload/array.cpython-313-darwin.so +0 -0
  96. package/backend/adal-backend/_internal/python3.13/lib-dynload/binascii.cpython-313-darwin.so +0 -0
  97. package/backend/adal-backend/_internal/python3.13/lib-dynload/fcntl.cpython-313-darwin.so +0 -0
  98. package/backend/adal-backend/_internal/python3.13/lib-dynload/grp.cpython-313-darwin.so +0 -0
  99. package/backend/adal-backend/_internal/python3.13/lib-dynload/math.cpython-313-darwin.so +0 -0
  100. package/backend/adal-backend/_internal/python3.13/lib-dynload/mmap.cpython-313-darwin.so +0 -0
  101. package/backend/adal-backend/_internal/python3.13/lib-dynload/pyexpat.cpython-313-darwin.so +0 -0
  102. package/backend/adal-backend/_internal/python3.13/lib-dynload/readline.cpython-313-darwin.so +0 -0
  103. package/backend/adal-backend/_internal/python3.13/lib-dynload/resource.cpython-313-darwin.so +0 -0
  104. package/backend/adal-backend/_internal/python3.13/lib-dynload/select.cpython-313-darwin.so +0 -0
  105. package/backend/adal-backend/_internal/python3.13/lib-dynload/syslog.cpython-313-darwin.so +0 -0
  106. package/backend/adal-backend/_internal/python3.13/lib-dynload/termios.cpython-313-darwin.so +0 -0
  107. package/backend/adal-backend/_internal/python3.13/lib-dynload/unicodedata.cpython-313-darwin.so +0 -0
  108. package/backend/adal-backend/_internal/python3.13/lib-dynload/zlib.cpython-313-darwin.so +0 -0
  109. package/backend/adal-backend/_internal/regex/_regex.cpython-313-darwin.so +0 -0
  110. package/backend/adal-backend/_internal/rpds/rpds.cpython-313-darwin.so +0 -0
  111. package/backend/adal-backend/_internal/tiktoken/_tiktoken.cpython-313-darwin.so +0 -0
  112. package/backend/adal-backend/_internal/websockets/{speedups.cpython-312-darwin.so → speedups.cpython-313-darwin.so} +0 -0
  113. package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/RECORD +2 -2
  114. package/backend/adal-backend/_internal/websockets-15.0.1.dist-info/WHEEL +1 -1
  115. package/backend/adal-backend/_internal/werkzeug-3.1.4.dist-info/INSTALLER +1 -0
  116. package/backend/adal-backend/_internal/{werkzeug-3.1.3.dist-info → werkzeug-3.1.4.dist-info}/METADATA +17 -7
  117. package/backend/adal-backend/_internal/{werkzeug-3.1.3.dist-info → werkzeug-3.1.4.dist-info}/RECORD +29 -29
  118. package/backend/adal-backend/_internal/{werkzeug-3.1.3.dist-info → werkzeug-3.1.4.dist-info}/WHEEL +1 -1
  119. package/backend/adal-backend/_internal/yaml/_yaml.cpython-313-darwin.so +0 -0
  120. package/backend/adal-backend/_internal/yarl/_quoting_c.cpython-313-darwin.so +0 -0
  121. package/backend/adal-backend/adal-backend +0 -0
  122. package/package.json +1 -1
  123. package/backend/adal-backend/_internal/MarkupSafe-3.0.2.dist-info/RECORD +0 -12
  124. package/backend/adal-backend/_internal/MarkupSafe-3.0.2.dist-info/WHEEL +0 -5
  125. package/backend/adal-backend/_internal/Python.framework/Versions/3.12/Python +0 -0
  126. package/backend/adal-backend/_internal/aiohttp/_http_parser.cpython-312-darwin.so +0 -0
  127. package/backend/adal-backend/_internal/aiohttp/_http_writer.cpython-312-darwin.so +0 -0
  128. package/backend/adal-backend/_internal/aiohttp/_websocket/mask.cpython-312-darwin.so +0 -0
  129. package/backend/adal-backend/_internal/aiohttp/_websocket/reader_c.cpython-312-darwin.so +0 -0
  130. package/backend/adal-backend/_internal/charset_normalizer/md.cpython-312-darwin.so +0 -0
  131. package/backend/adal-backend/_internal/charset_normalizer/md__mypyc.cpython-312-darwin.so +0 -0
  132. package/backend/adal-backend/_internal/click-8.2.1.dist-info/RECORD +0 -22
  133. package/backend/adal-backend/_internal/frozenlist/_frozenlist.cpython-312-darwin.so +0 -0
  134. package/backend/adal-backend/_internal/greenlet/_greenlet.cpython-312-darwin.so +0 -0
  135. package/backend/adal-backend/_internal/jiter/jiter.cpython-312-darwin.so +0 -0
  136. package/backend/adal-backend/_internal/lib-dynload/_asyncio.cpython-312-darwin.so +0 -0
  137. package/backend/adal-backend/_internal/lib-dynload/_bisect.cpython-312-darwin.so +0 -0
  138. package/backend/adal-backend/_internal/lib-dynload/_blake2.cpython-312-darwin.so +0 -0
  139. package/backend/adal-backend/_internal/lib-dynload/_bz2.cpython-312-darwin.so +0 -0
  140. package/backend/adal-backend/_internal/lib-dynload/_codecs_iso2022.cpython-312-darwin.so +0 -0
  141. package/backend/adal-backend/_internal/lib-dynload/_codecs_tw.cpython-312-darwin.so +0 -0
  142. package/backend/adal-backend/_internal/lib-dynload/_contextvars.cpython-312-darwin.so +0 -0
  143. package/backend/adal-backend/_internal/lib-dynload/_csv.cpython-312-darwin.so +0 -0
  144. package/backend/adal-backend/_internal/lib-dynload/_ctypes.cpython-312-darwin.so +0 -0
  145. package/backend/adal-backend/_internal/lib-dynload/_datetime.cpython-312-darwin.so +0 -0
  146. package/backend/adal-backend/_internal/lib-dynload/_decimal.cpython-312-darwin.so +0 -0
  147. package/backend/adal-backend/_internal/lib-dynload/_elementtree.cpython-312-darwin.so +0 -0
  148. package/backend/adal-backend/_internal/lib-dynload/_hashlib.cpython-312-darwin.so +0 -0
  149. package/backend/adal-backend/_internal/lib-dynload/_heapq.cpython-312-darwin.so +0 -0
  150. package/backend/adal-backend/_internal/lib-dynload/_json.cpython-312-darwin.so +0 -0
  151. package/backend/adal-backend/_internal/lib-dynload/_lzma.cpython-312-darwin.so +0 -0
  152. package/backend/adal-backend/_internal/lib-dynload/_md5.cpython-312-darwin.so +0 -0
  153. package/backend/adal-backend/_internal/lib-dynload/_multibytecodec.cpython-312-darwin.so +0 -0
  154. package/backend/adal-backend/_internal/lib-dynload/_multiprocessing.cpython-312-darwin.so +0 -0
  155. package/backend/adal-backend/_internal/lib-dynload/_opcode.cpython-312-darwin.so +0 -0
  156. package/backend/adal-backend/_internal/lib-dynload/_pickle.cpython-312-darwin.so +0 -0
  157. package/backend/adal-backend/_internal/lib-dynload/_posixshmem.cpython-312-darwin.so +0 -0
  158. package/backend/adal-backend/_internal/lib-dynload/_posixsubprocess.cpython-312-darwin.so +0 -0
  159. package/backend/adal-backend/_internal/lib-dynload/_queue.cpython-312-darwin.so +0 -0
  160. package/backend/adal-backend/_internal/lib-dynload/_random.cpython-312-darwin.so +0 -0
  161. package/backend/adal-backend/_internal/lib-dynload/_scproxy.cpython-312-darwin.so +0 -0
  162. package/backend/adal-backend/_internal/lib-dynload/_sha1.cpython-312-darwin.so +0 -0
  163. package/backend/adal-backend/_internal/lib-dynload/_sha2.cpython-312-darwin.so +0 -0
  164. package/backend/adal-backend/_internal/lib-dynload/_sha3.cpython-312-darwin.so +0 -0
  165. package/backend/adal-backend/_internal/lib-dynload/_socket.cpython-312-darwin.so +0 -0
  166. package/backend/adal-backend/_internal/lib-dynload/_sqlite3.cpython-312-darwin.so +0 -0
  167. package/backend/adal-backend/_internal/lib-dynload/_ssl.cpython-312-darwin.so +0 -0
  168. package/backend/adal-backend/_internal/lib-dynload/_statistics.cpython-312-darwin.so +0 -0
  169. package/backend/adal-backend/_internal/lib-dynload/_struct.cpython-312-darwin.so +0 -0
  170. package/backend/adal-backend/_internal/lib-dynload/_uuid.cpython-312-darwin.so +0 -0
  171. package/backend/adal-backend/_internal/lib-dynload/_zoneinfo.cpython-312-darwin.so +0 -0
  172. package/backend/adal-backend/_internal/lib-dynload/array.cpython-312-darwin.so +0 -0
  173. package/backend/adal-backend/_internal/lib-dynload/binascii.cpython-312-darwin.so +0 -0
  174. package/backend/adal-backend/_internal/lib-dynload/fcntl.cpython-312-darwin.so +0 -0
  175. package/backend/adal-backend/_internal/lib-dynload/grp.cpython-312-darwin.so +0 -0
  176. package/backend/adal-backend/_internal/lib-dynload/math.cpython-312-darwin.so +0 -0
  177. package/backend/adal-backend/_internal/lib-dynload/mmap.cpython-312-darwin.so +0 -0
  178. package/backend/adal-backend/_internal/lib-dynload/pyexpat.cpython-312-darwin.so +0 -0
  179. package/backend/adal-backend/_internal/lib-dynload/readline.cpython-312-darwin.so +0 -0
  180. package/backend/adal-backend/_internal/lib-dynload/resource.cpython-312-darwin.so +0 -0
  181. package/backend/adal-backend/_internal/lib-dynload/select.cpython-312-darwin.so +0 -0
  182. package/backend/adal-backend/_internal/lib-dynload/syslog.cpython-312-darwin.so +0 -0
  183. package/backend/adal-backend/_internal/lib-dynload/termios.cpython-312-darwin.so +0 -0
  184. package/backend/adal-backend/_internal/lib-dynload/unicodedata.cpython-312-darwin.so +0 -0
  185. package/backend/adal-backend/_internal/lib-dynload/zlib.cpython-312-darwin.so +0 -0
  186. package/backend/adal-backend/_internal/mcp-1.13.1.dist-info/RECORD +0 -88
  187. package/backend/adal-backend/_internal/multidict/_multidict.cpython-312-darwin.so +0 -0
  188. package/backend/adal-backend/_internal/propcache/_helpers_c.cpython-312-darwin.so +0 -0
  189. package/backend/adal-backend/_internal/pydantic_core/_pydantic_core.cpython-312-darwin.so +0 -0
  190. package/backend/adal-backend/_internal/regex/_regex.cpython-312-darwin.so +0 -0
  191. package/backend/adal-backend/_internal/rpds/rpds.cpython-312-darwin.so +0 -0
  192. package/backend/adal-backend/_internal/tiktoken/_tiktoken.cpython-312-darwin.so +0 -0
  193. package/backend/adal-backend/_internal/yaml/_yaml.cpython-312-darwin.so +0 -0
  194. package/backend/adal-backend/_internal/yarl/_quoting_c.cpython-312-darwin.so +0 -0
  195. /package/backend/adal-backend/_internal/{MarkupSafe-3.0.2.dist-info → attrs-25.4.0.dist-info}/INSTALLER +0 -0
  196. /package/backend/adal-backend/_internal/{attrs-25.3.0.dist-info → attrs-25.4.0.dist-info}/WHEEL +0 -0
  197. /package/backend/adal-backend/_internal/{attrs-25.3.0.dist-info → attrs-25.4.0.dist-info}/licenses/LICENSE +0 -0
  198. /package/backend/adal-backend/_internal/{attrs-25.3.0.dist-info → click-8.3.1.dist-info}/INSTALLER +0 -0
  199. /package/backend/adal-backend/_internal/{click-8.2.1.dist-info → click-8.3.1.dist-info}/WHEEL +0 -0
  200. /package/backend/adal-backend/_internal/{click-8.2.1.dist-info → click-8.3.1.dist-info}/licenses/LICENSE.txt +0 -0
  201. /package/backend/adal-backend/_internal/{click-8.2.1.dist-info → cryptography-46.0.3.dist-info}/INSTALLER +0 -0
  202. /package/backend/adal-backend/_internal/jsonschema_specifications/schemas/{draft202012 → draft201909}/vocabularies/format +0 -0
  203. /package/backend/adal-backend/_internal/{mcp-1.13.1.dist-info → markupsafe-3.0.3.dist-info}/INSTALLER +0 -0
  204. /package/backend/adal-backend/_internal/{MarkupSafe-3.0.2.dist-info → markupsafe-3.0.3.dist-info/licenses}/LICENSE.txt +0 -0
  205. /package/backend/adal-backend/_internal/{MarkupSafe-3.0.2.dist-info → markupsafe-3.0.3.dist-info}/top_level.txt +0 -0
  206. /package/backend/adal-backend/_internal/{werkzeug-3.1.3.dist-info → mcp-1.22.0.dist-info}/INSTALLER +0 -0
  207. /package/backend/adal-backend/_internal/{mcp-1.13.1.dist-info → mcp-1.22.0.dist-info}/WHEEL +0 -0
  208. /package/backend/adal-backend/_internal/{mcp-1.13.1.dist-info → mcp-1.22.0.dist-info}/entry_points.txt +0 -0
  209. /package/backend/adal-backend/_internal/{mcp-1.13.1.dist-info → mcp-1.22.0.dist-info}/licenses/LICENSE +0 -0
  210. /package/backend/adal-backend/_internal/{werkzeug-3.1.3.dist-info → werkzeug-3.1.4.dist-info/licenses}/LICENSE.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp
3
- Version: 1.13.1
3
+ Version: 1.22.0
4
4
  Summary: Model Context Protocol SDK
5
5
  Project-URL: Homepage, https://modelcontextprotocol.io
6
6
  Project-URL: Repository, https://github.com/modelcontextprotocol/python-sdk
@@ -25,10 +25,13 @@ Requires-Dist: httpx>=0.27.1
25
25
  Requires-Dist: jsonschema>=4.20.0
26
26
  Requires-Dist: pydantic-settings>=2.5.2
27
27
  Requires-Dist: pydantic<3.0.0,>=2.11.0
28
+ Requires-Dist: pyjwt[crypto]>=2.10.1
28
29
  Requires-Dist: python-multipart>=0.0.9
29
30
  Requires-Dist: pywin32>=310; sys_platform == 'win32'
30
31
  Requires-Dist: sse-starlette>=1.6.1
31
32
  Requires-Dist: starlette>=0.27
33
+ Requires-Dist: typing-extensions>=4.9.0
34
+ Requires-Dist: typing-inspection>=0.4.1
32
35
  Requires-Dist: uvicorn>=0.31.1; sys_platform != 'emscripten'
33
36
  Provides-Extra: cli
34
37
  Requires-Dist: python-dotenv>=1.0.0; extra == 'cli'
@@ -49,8 +52,8 @@ Description-Content-Type: text/markdown
49
52
  [![MIT licensed][mit-badge]][mit-url]
50
53
  [![Python Version][python-badge]][python-url]
51
54
  [![Documentation][docs-badge]][docs-url]
55
+ [![Protocol][protocol-badge]][protocol-url]
52
56
  [![Specification][spec-badge]][spec-url]
53
- [![GitHub Discussions][discussions-badge]][discussions-url]
54
57
 
55
58
  </div>
56
59
 
@@ -72,22 +75,33 @@ Description-Content-Type: text/markdown
72
75
  - [Prompts](#prompts)
73
76
  - [Images](#images)
74
77
  - [Context](#context)
78
+ - [Getting Context in Functions](#getting-context-in-functions)
79
+ - [Context Properties and Methods](#context-properties-and-methods)
75
80
  - [Completions](#completions)
76
81
  - [Elicitation](#elicitation)
77
82
  - [Sampling](#sampling)
78
83
  - [Logging and Notifications](#logging-and-notifications)
79
84
  - [Authentication](#authentication)
80
85
  - [FastMCP Properties](#fastmcp-properties)
81
- - [Session Properties](#session-properties-and-methods)
86
+ - [Session Properties and Methods](#session-properties-and-methods)
82
87
  - [Request Context Properties](#request-context-properties)
83
88
  - [Running Your Server](#running-your-server)
84
89
  - [Development Mode](#development-mode)
85
90
  - [Claude Desktop Integration](#claude-desktop-integration)
86
91
  - [Direct Execution](#direct-execution)
87
92
  - [Streamable HTTP Transport](#streamable-http-transport)
93
+ - [CORS Configuration for Browser-Based Clients](#cors-configuration-for-browser-based-clients)
88
94
  - [Mounting to an Existing ASGI Server](#mounting-to-an-existing-asgi-server)
95
+ - [StreamableHTTP servers](#streamablehttp-servers)
96
+ - [Basic mounting](#basic-mounting)
97
+ - [Host-based routing](#host-based-routing)
98
+ - [Multiple servers with path configuration](#multiple-servers-with-path-configuration)
99
+ - [Path configuration at initialization](#path-configuration-at-initialization)
100
+ - [SSE servers](#sse-servers)
89
101
  - [Advanced Usage](#advanced-usage)
90
102
  - [Low-Level Server](#low-level-server)
103
+ - [Structured Output Support](#structured-output-support)
104
+ - [Pagination (Advanced)](#pagination-advanced)
91
105
  - [Writing MCP Clients](#writing-mcp-clients)
92
106
  - [Client Display Utilities](#client-display-utilities)
93
107
  - [OAuth Authentication for Clients](#oauth-authentication-for-clients)
@@ -104,12 +118,12 @@ Description-Content-Type: text/markdown
104
118
  [mit-url]: https://github.com/modelcontextprotocol/python-sdk/blob/main/LICENSE
105
119
  [python-badge]: https://img.shields.io/pypi/pyversions/mcp.svg
106
120
  [python-url]: https://www.python.org/downloads/
107
- [docs-badge]: https://img.shields.io/badge/docs-modelcontextprotocol.io-blue.svg
108
- [docs-url]: https://modelcontextprotocol.io
121
+ [docs-badge]: https://img.shields.io/badge/docs-python--sdk-blue.svg
122
+ [docs-url]: https://modelcontextprotocol.github.io/python-sdk/
123
+ [protocol-badge]: https://img.shields.io/badge/protocol-modelcontextprotocol.io-blue.svg
124
+ [protocol-url]: https://modelcontextprotocol.io
109
125
  [spec-badge]: https://img.shields.io/badge/spec-spec.modelcontextprotocol.io-blue.svg
110
- [spec-url]: https://spec.modelcontextprotocol.io
111
- [discussions-badge]: https://img.shields.io/github/discussions/modelcontextprotocol/python-sdk
112
- [discussions-url]: https://github.com/modelcontextprotocol/python-sdk/discussions
126
+ [spec-url]: https://modelcontextprotocol.io/specification/latest
113
127
 
114
128
  ## Overview
115
129
 
@@ -162,14 +176,14 @@ Let's create a simple MCP server that exposes a calculator tool and some data:
162
176
  """
163
177
  FastMCP quickstart example.
164
178
 
165
- cd to the `examples/snippets/clients` directory and run:
166
- uv run server fastmcp_quickstart stdio
179
+ Run from the repository root:
180
+ uv run examples/snippets/servers/fastmcp_quickstart.py
167
181
  """
168
182
 
169
183
  from mcp.server.fastmcp import FastMCP
170
184
 
171
185
  # Create an MCP server
172
- mcp = FastMCP("Demo")
186
+ mcp = FastMCP("Demo", json_response=True)
173
187
 
174
188
 
175
189
  # Add an addition tool
@@ -197,23 +211,36 @@ def greet_user(name: str, style: str = "friendly") -> str:
197
211
  }
198
212
 
199
213
  return f"{styles.get(style, styles['friendly'])} for someone named {name}."
214
+
215
+
216
+ # Run with streamable HTTP transport
217
+ if __name__ == "__main__":
218
+ mcp.run(transport="streamable-http")
200
219
  ```
201
220
 
202
221
  _Full example: [examples/snippets/servers/fastmcp_quickstart.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/fastmcp_quickstart.py)_
203
222
  <!-- /snippet-source -->
204
223
 
205
- You can install this server in [Claude Desktop](https://claude.ai/download) and interact with it right away by running:
224
+ You can install this server in [Claude Code](https://docs.claude.com/en/docs/claude-code/mcp) and interact with it right away. First, run the server:
206
225
 
207
226
  ```bash
208
- uv run mcp install server.py
227
+ uv run --with mcp examples/snippets/servers/fastmcp_quickstart.py
209
228
  ```
210
229
 
211
- Alternatively, you can test it with the MCP Inspector:
230
+ Then add it to Claude Code:
212
231
 
213
232
  ```bash
214
- uv run mcp dev server.py
233
+ claude mcp add --transport http my-server http://localhost:8000/mcp
215
234
  ```
216
235
 
236
+ Alternatively, you can test it with the MCP Inspector. Start the server as above, then in a separate terminal:
237
+
238
+ ```bash
239
+ npx -y @modelcontextprotocol/inspector
240
+ ```
241
+
242
+ In the inspector UI, connect to `http://localhost:8000/mcp`.
243
+
217
244
  ## What is MCP?
218
245
 
219
246
  The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) lets you build servers that expose data and functionality to LLM applications in a secure, standardized way. Think of it like a web API, but specifically designed for LLM interactions. MCP servers can:
@@ -413,6 +440,61 @@ causes the tool to be classified as structured _and this is undesirable_,
413
440
  the classification can be suppressed by passing `structured_output=False`
414
441
  to the `@tool` decorator.
415
442
 
443
+ ##### Advanced: Direct CallToolResult
444
+
445
+ For full control over tool responses including the `_meta` field (for passing data to client applications without exposing it to the model), you can return `CallToolResult` directly:
446
+
447
+ <!-- snippet-source examples/snippets/servers/direct_call_tool_result.py -->
448
+ ```python
449
+ """Example showing direct CallToolResult return for advanced control."""
450
+
451
+ from typing import Annotated
452
+
453
+ from pydantic import BaseModel
454
+
455
+ from mcp.server.fastmcp import FastMCP
456
+ from mcp.types import CallToolResult, TextContent
457
+
458
+ mcp = FastMCP("CallToolResult Example")
459
+
460
+
461
+ class ValidationModel(BaseModel):
462
+ """Model for validating structured output."""
463
+
464
+ status: str
465
+ data: dict[str, int]
466
+
467
+
468
+ @mcp.tool()
469
+ def advanced_tool() -> CallToolResult:
470
+ """Return CallToolResult directly for full control including _meta field."""
471
+ return CallToolResult(
472
+ content=[TextContent(type="text", text="Response visible to the model")],
473
+ _meta={"hidden": "data for client applications only"},
474
+ )
475
+
476
+
477
+ @mcp.tool()
478
+ def validated_tool() -> Annotated[CallToolResult, ValidationModel]:
479
+ """Return CallToolResult with structured output validation."""
480
+ return CallToolResult(
481
+ content=[TextContent(type="text", text="Validated response")],
482
+ structuredContent={"status": "success", "data": {"result": 42}},
483
+ _meta={"internal": "metadata"},
484
+ )
485
+
486
+
487
+ @mcp.tool()
488
+ def empty_result_tool() -> CallToolResult:
489
+ """For empty results, return CallToolResult with empty content."""
490
+ return CallToolResult(content=[])
491
+ ```
492
+
493
+ _Full example: [examples/snippets/servers/direct_call_tool_result.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/direct_call_tool_result.py)_
494
+ <!-- /snippet-source -->
495
+
496
+ **Important:** `CallToolResult` must always be returned (no `Optional` or `Union`). For empty results, use `CallToolResult(content=[])`. For optional simple types, use `str | None` without `CallToolResult`.
497
+
416
498
  <!-- snippet-source examples/snippets/servers/structured_output.py -->
417
499
  ```python
418
500
  """Example showing structured output with tools."""
@@ -441,7 +523,7 @@ def get_weather(city: str) -> WeatherData:
441
523
  """Get weather for a city - returns structured data."""
442
524
  # Simulated weather data
443
525
  return WeatherData(
444
- temperature=72.5,
526
+ temperature=22.5,
445
527
  humidity=45.0,
446
528
  condition="sunny",
447
529
  wind_speed=5.2,
@@ -546,6 +628,41 @@ def debug_error(error: str) -> list[base.Message]:
546
628
  _Full example: [examples/snippets/servers/basic_prompt.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/basic_prompt.py)_
547
629
  <!-- /snippet-source -->
548
630
 
631
+ ### Icons
632
+
633
+ MCP servers can provide icons for UI display. Icons can be added to the server implementation, tools, resources, and prompts:
634
+
635
+ ```python
636
+ from mcp.server.fastmcp import FastMCP, Icon
637
+
638
+ # Create an icon from a file path or URL
639
+ icon = Icon(
640
+ src="icon.png",
641
+ mimeType="image/png",
642
+ sizes="64x64"
643
+ )
644
+
645
+ # Add icons to server
646
+ mcp = FastMCP(
647
+ "My Server",
648
+ website_url="https://example.com",
649
+ icons=[icon]
650
+ )
651
+
652
+ # Add icons to tools, resources, and prompts
653
+ @mcp.tool(icons=[icon])
654
+ def my_tool():
655
+ """Tool with an icon."""
656
+ return "result"
657
+
658
+ @mcp.resource("demo://resource", icons=[icon])
659
+ def my_resource():
660
+ """Resource with an icon."""
661
+ return "content"
662
+ ```
663
+
664
+ _Full example: [examples/fastmcp/icons_demo.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/fastmcp/icons_demo.py)_
665
+
549
666
  ### Images
550
667
 
551
668
  FastMCP provides an `Image` class that automatically handles image data:
@@ -777,6 +894,8 @@ async def book_table(date: str, time: str, party_size: int, ctx: Context[ServerS
777
894
  _Full example: [examples/snippets/servers/elicitation.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/elicitation.py)_
778
895
  <!-- /snippet-source -->
779
896
 
897
+ Elicitation schemas support default values for all field types. Default values are automatically included in the JSON schema sent to clients, allowing them to pre-populate forms.
898
+
780
899
  The `elicit()` method returns an `ElicitationResult` with:
781
900
 
782
901
  - `action`: "accept", "decline", or "cancel"
@@ -881,6 +1000,7 @@ class SimpleTokenVerifier(TokenVerifier):
881
1000
  # Create FastMCP instance as a Resource Server
882
1001
  mcp = FastMCP(
883
1002
  "Weather Service",
1003
+ json_response=True,
884
1004
  # Token verifier for authentication
885
1005
  token_verifier=SimpleTokenVerifier(),
886
1006
  # Auth settings for RFC 9728 Protected Resource Metadata
@@ -926,6 +1046,8 @@ The FastMCP server instance accessible via `ctx.fastmcp` provides access to serv
926
1046
 
927
1047
  - `ctx.fastmcp.name` - The server's name as defined during initialization
928
1048
  - `ctx.fastmcp.instructions` - Server instructions/description provided to clients
1049
+ - `ctx.fastmcp.website_url` - Optional website URL for the server
1050
+ - `ctx.fastmcp.icons` - Optional list of icons for UI display
929
1051
  - `ctx.fastmcp.settings` - Complete server configuration object containing:
930
1052
  - `debug` - Debug mode flag
931
1053
  - `log_level` - Current logging level
@@ -1094,7 +1216,7 @@ Note that `uv run mcp run` or `uv run mcp dev` only supports server using FastMC
1094
1216
 
1095
1217
  ### Streamable HTTP Transport
1096
1218
 
1097
- > **Note**: Streamable HTTP transport is superseding SSE transport for production deployments.
1219
+ > **Note**: Streamable HTTP transport is the recommended transport for production deployments. Use `stateless_http=True` and `json_response=True` for optimal scalability.
1098
1220
 
1099
1221
  <!-- snippet-source examples/snippets/servers/streamable_config.py -->
1100
1222
  ```python
@@ -1105,15 +1227,15 @@ Run from the repository root:
1105
1227
 
1106
1228
  from mcp.server.fastmcp import FastMCP
1107
1229
 
1108
- # Stateful server (maintains session state)
1109
- mcp = FastMCP("StatefulServer")
1230
+ # Stateless server with JSON responses (recommended)
1231
+ mcp = FastMCP("StatelessServer", stateless_http=True, json_response=True)
1110
1232
 
1111
1233
  # Other configuration options:
1112
- # Stateless server (no session persistence)
1234
+ # Stateless server with SSE streaming responses
1113
1235
  # mcp = FastMCP("StatelessServer", stateless_http=True)
1114
1236
 
1115
- # Stateless server (no session persistence, no sse stream with supported client)
1116
- # mcp = FastMCP("StatelessServer", stateless_http=True, json_response=True)
1237
+ # Stateful server with session persistence
1238
+ # mcp = FastMCP("StatefulServer")
1117
1239
 
1118
1240
 
1119
1241
  # Add a simple tool to demonstrate the server
@@ -1148,7 +1270,7 @@ from starlette.routing import Mount
1148
1270
  from mcp.server.fastmcp import FastMCP
1149
1271
 
1150
1272
  # Create the Echo server
1151
- echo_mcp = FastMCP(name="EchoServer", stateless_http=True)
1273
+ echo_mcp = FastMCP(name="EchoServer", stateless_http=True, json_response=True)
1152
1274
 
1153
1275
 
1154
1276
  @echo_mcp.tool()
@@ -1158,7 +1280,7 @@ def echo(message: str) -> str:
1158
1280
 
1159
1281
 
1160
1282
  # Create the Math server
1161
- math_mcp = FastMCP(name="MathServer", stateless_http=True)
1283
+ math_mcp = FastMCP(name="MathServer", stateless_http=True, json_response=True)
1162
1284
 
1163
1285
 
1164
1286
  @math_mcp.tool()
@@ -1259,7 +1381,7 @@ from starlette.routing import Mount
1259
1381
  from mcp.server.fastmcp import FastMCP
1260
1382
 
1261
1383
  # Create MCP server
1262
- mcp = FastMCP("My App")
1384
+ mcp = FastMCP("My App", json_response=True)
1263
1385
 
1264
1386
 
1265
1387
  @mcp.tool()
@@ -1296,7 +1418,7 @@ from starlette.routing import Host
1296
1418
  from mcp.server.fastmcp import FastMCP
1297
1419
 
1298
1420
  # Create MCP server
1299
- mcp = FastMCP("MCP Host App")
1421
+ mcp = FastMCP("MCP Host App", json_response=True)
1300
1422
 
1301
1423
 
1302
1424
  @mcp.tool()
@@ -1333,8 +1455,8 @@ from starlette.routing import Mount
1333
1455
  from mcp.server.fastmcp import FastMCP
1334
1456
 
1335
1457
  # Create multiple MCP servers
1336
- api_mcp = FastMCP("API Server")
1337
- chat_mcp = FastMCP("Chat Server")
1458
+ api_mcp = FastMCP("API Server", json_response=True)
1459
+ chat_mcp = FastMCP("Chat Server", json_response=True)
1338
1460
 
1339
1461
 
1340
1462
  @api_mcp.tool()
@@ -1384,7 +1506,11 @@ from mcp.server.fastmcp import FastMCP
1384
1506
 
1385
1507
  # Configure streamable_http_path during initialization
1386
1508
  # This server will mount at the root of wherever it's mounted
1387
- mcp_at_root = FastMCP("My Server", streamable_http_path="/")
1509
+ mcp_at_root = FastMCP(
1510
+ "My Server",
1511
+ json_response=True,
1512
+ streamable_http_path="/",
1513
+ )
1388
1514
 
1389
1515
 
1390
1516
  @mcp_at_root.tool()
@@ -1760,14 +1886,203 @@ if __name__ == "__main__":
1760
1886
  _Full example: [examples/snippets/servers/lowlevel/structured_output.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/lowlevel/structured_output.py)_
1761
1887
  <!-- /snippet-source -->
1762
1888
 
1763
- Tools can return data in three ways:
1889
+ Tools can return data in four ways:
1764
1890
 
1765
1891
  1. **Content only**: Return a list of content blocks (default behavior before spec revision 2025-06-18)
1766
1892
  2. **Structured data only**: Return a dictionary that will be serialized to JSON (Introduced in spec revision 2025-06-18)
1767
1893
  3. **Both**: Return a tuple of (content, structured_data) preferred option to use for backwards compatibility
1894
+ 4. **Direct CallToolResult**: Return `CallToolResult` directly for full control (including `_meta` field)
1768
1895
 
1769
1896
  When an `outputSchema` is defined, the server automatically validates the structured output against the schema. This ensures type safety and helps catch errors early.
1770
1897
 
1898
+ ##### Returning CallToolResult Directly
1899
+
1900
+ For full control over the response including the `_meta` field (for passing data to client applications without exposing it to the model), return `CallToolResult` directly:
1901
+
1902
+ <!-- snippet-source examples/snippets/servers/lowlevel/direct_call_tool_result.py -->
1903
+ ```python
1904
+ """
1905
+ Run from the repository root:
1906
+ uv run examples/snippets/servers/lowlevel/direct_call_tool_result.py
1907
+ """
1908
+
1909
+ import asyncio
1910
+ from typing import Any
1911
+
1912
+ import mcp.server.stdio
1913
+ import mcp.types as types
1914
+ from mcp.server.lowlevel import NotificationOptions, Server
1915
+ from mcp.server.models import InitializationOptions
1916
+
1917
+ server = Server("example-server")
1918
+
1919
+
1920
+ @server.list_tools()
1921
+ async def list_tools() -> list[types.Tool]:
1922
+ """List available tools."""
1923
+ return [
1924
+ types.Tool(
1925
+ name="advanced_tool",
1926
+ description="Tool with full control including _meta field",
1927
+ inputSchema={
1928
+ "type": "object",
1929
+ "properties": {"message": {"type": "string"}},
1930
+ "required": ["message"],
1931
+ },
1932
+ )
1933
+ ]
1934
+
1935
+
1936
+ @server.call_tool()
1937
+ async def handle_call_tool(name: str, arguments: dict[str, Any]) -> types.CallToolResult:
1938
+ """Handle tool calls by returning CallToolResult directly."""
1939
+ if name == "advanced_tool":
1940
+ message = str(arguments.get("message", ""))
1941
+ return types.CallToolResult(
1942
+ content=[types.TextContent(type="text", text=f"Processed: {message}")],
1943
+ structuredContent={"result": "success", "message": message},
1944
+ _meta={"hidden": "data for client applications only"},
1945
+ )
1946
+
1947
+ raise ValueError(f"Unknown tool: {name}")
1948
+
1949
+
1950
+ async def run():
1951
+ """Run the server."""
1952
+ async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
1953
+ await server.run(
1954
+ read_stream,
1955
+ write_stream,
1956
+ InitializationOptions(
1957
+ server_name="example",
1958
+ server_version="0.1.0",
1959
+ capabilities=server.get_capabilities(
1960
+ notification_options=NotificationOptions(),
1961
+ experimental_capabilities={},
1962
+ ),
1963
+ ),
1964
+ )
1965
+
1966
+
1967
+ if __name__ == "__main__":
1968
+ asyncio.run(run())
1969
+ ```
1970
+
1971
+ _Full example: [examples/snippets/servers/lowlevel/direct_call_tool_result.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/lowlevel/direct_call_tool_result.py)_
1972
+ <!-- /snippet-source -->
1973
+
1974
+ **Note:** When returning `CallToolResult`, you bypass the automatic content/structured conversion. You must construct the complete response yourself.
1975
+
1976
+ ### Pagination (Advanced)
1977
+
1978
+ For servers that need to handle large datasets, the low-level server provides paginated versions of list operations. This is an optional optimization - most servers won't need pagination unless they're dealing with hundreds or thousands of items.
1979
+
1980
+ #### Server-side Implementation
1981
+
1982
+ <!-- snippet-source examples/snippets/servers/pagination_example.py -->
1983
+ ```python
1984
+ """
1985
+ Example of implementing pagination with MCP server decorators.
1986
+ """
1987
+
1988
+ from pydantic import AnyUrl
1989
+
1990
+ import mcp.types as types
1991
+ from mcp.server.lowlevel import Server
1992
+
1993
+ # Initialize the server
1994
+ server = Server("paginated-server")
1995
+
1996
+ # Sample data to paginate
1997
+ ITEMS = [f"Item {i}" for i in range(1, 101)] # 100 items
1998
+
1999
+
2000
+ @server.list_resources()
2001
+ async def list_resources_paginated(request: types.ListResourcesRequest) -> types.ListResourcesResult:
2002
+ """List resources with pagination support."""
2003
+ page_size = 10
2004
+
2005
+ # Extract cursor from request params
2006
+ cursor = request.params.cursor if request.params is not None else None
2007
+
2008
+ # Parse cursor to get offset
2009
+ start = 0 if cursor is None else int(cursor)
2010
+ end = start + page_size
2011
+
2012
+ # Get page of resources
2013
+ page_items = [
2014
+ types.Resource(uri=AnyUrl(f"resource://items/{item}"), name=item, description=f"Description for {item}")
2015
+ for item in ITEMS[start:end]
2016
+ ]
2017
+
2018
+ # Determine next cursor
2019
+ next_cursor = str(end) if end < len(ITEMS) else None
2020
+
2021
+ return types.ListResourcesResult(resources=page_items, nextCursor=next_cursor)
2022
+ ```
2023
+
2024
+ _Full example: [examples/snippets/servers/pagination_example.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/pagination_example.py)_
2025
+ <!-- /snippet-source -->
2026
+
2027
+ #### Client-side Consumption
2028
+
2029
+ <!-- snippet-source examples/snippets/clients/pagination_client.py -->
2030
+ ```python
2031
+ """
2032
+ Example of consuming paginated MCP endpoints from a client.
2033
+ """
2034
+
2035
+ import asyncio
2036
+
2037
+ from mcp.client.session import ClientSession
2038
+ from mcp.client.stdio import StdioServerParameters, stdio_client
2039
+ from mcp.types import PaginatedRequestParams, Resource
2040
+
2041
+
2042
+ async def list_all_resources() -> None:
2043
+ """Fetch all resources using pagination."""
2044
+ async with stdio_client(StdioServerParameters(command="uv", args=["run", "mcp-simple-pagination"])) as (
2045
+ read,
2046
+ write,
2047
+ ):
2048
+ async with ClientSession(read, write) as session:
2049
+ await session.initialize()
2050
+
2051
+ all_resources: list[Resource] = []
2052
+ cursor = None
2053
+
2054
+ while True:
2055
+ # Fetch a page of resources
2056
+ result = await session.list_resources(params=PaginatedRequestParams(cursor=cursor))
2057
+ all_resources.extend(result.resources)
2058
+
2059
+ print(f"Fetched {len(result.resources)} resources")
2060
+
2061
+ # Check if there are more pages
2062
+ if result.nextCursor:
2063
+ cursor = result.nextCursor
2064
+ else:
2065
+ break
2066
+
2067
+ print(f"Total resources: {len(all_resources)}")
2068
+
2069
+
2070
+ if __name__ == "__main__":
2071
+ asyncio.run(list_all_resources())
2072
+ ```
2073
+
2074
+ _Full example: [examples/snippets/clients/pagination_client.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/clients/pagination_client.py)_
2075
+ <!-- /snippet-source -->
2076
+
2077
+ #### Key Points
2078
+
2079
+ - **Cursors are opaque strings** - the server defines the format (numeric offsets, timestamps, etc.)
2080
+ - **Return `nextCursor=None`** when there are no more pages
2081
+ - **Backward compatible** - clients that don't support pagination will still work (they'll just get the first page)
2082
+ - **Flexible page sizes** - Each endpoint can define its own page size based on data characteristics
2083
+
2084
+ See the [simple-pagination example](examples/servers/simple-pagination) for a complete implementation.
2085
+
1771
2086
  ### Writing MCP Clients
1772
2087
 
1773
2088
  The SDK provides a high-level client interface for connecting to MCP servers using various [transports](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports):
@@ -2178,8 +2493,9 @@ MCP servers declare capabilities during initialization:
2178
2493
 
2179
2494
  ## Documentation
2180
2495
 
2496
+ - [API Reference](https://modelcontextprotocol.github.io/python-sdk/api/)
2181
2497
  - [Model Context Protocol documentation](https://modelcontextprotocol.io)
2182
- - [Model Context Protocol specification](https://spec.modelcontextprotocol.io)
2498
+ - [Model Context Protocol specification](https://modelcontextprotocol.io/specification/latest)
2183
2499
  - [Officially supported servers](https://github.com/modelcontextprotocol/servers)
2184
2500
 
2185
2501
  ## Contributing
@@ -0,0 +1,94 @@
1
+ ../../../bin/mcp,sha256=Z0vNNqRL3qPSs3mvhzHrDW9DQDzsGauLs3cVDVuSNy8,247
2
+ mcp/__init__.py,sha256=gQWhSmjAxSrOI_hqwvA58dofOOD_0aS419CPx17RQQU,2680
3
+ mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ mcp/types.py,sha256=HBZVlCnm9Y3qeyteTKXLn0UvgP1Tz9ChIwzlcNNFM1A,44442
5
+ mcp/cli/__init__.py,sha256=NJrJIUQmjc6FtSxvGNt1zeXnSLj8-Mli86laODTtQzE,107
6
+ mcp/cli/claude.py,sha256=MKUuZGrBmMSslD2weLIxU7RdQXZl2OvuMMq-_-EAlgY,5086
7
+ mcp/cli/cli.py,sha256=w6mWBmcy4y7nxLQDa4qSbxKV0BWeJqU_SFZf3qdOubs,15179
8
+ mcp/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ mcp/client/__main__.py,sha256=_aXYJ3xJiQGURxEEfvV-4MAqxRJwIFptFaLHyJgfvRU,2588
10
+ mcp/client/session.py,sha256=ybK8uuWEpgRY09rJoEYJrG6Me0sNAi9KQ8Z6MeCi6ko,20741
11
+ mcp/client/session_group.py,sha256=FpkuYSpT2Wm7xYE8TssG7Ae3AYcF-oED9eNAPD7uF7M,17072
12
+ mcp/client/sse.py,sha256=SqdJSPRBZaakHDXGDvcem20Hl3LMXjRF6JlWpVL4Xzw,7337
13
+ mcp/client/streamable_http.py,sha256=sGPgZk7aRbeefAaXXnBIVT-v5CdBmvJmlLQ6JfnME6c,20504
14
+ mcp/client/websocket.py,sha256=mH6zD_nRnMr11uSFdDTy2TZ2YeS9S18v-JJ2rQ7tXck,3486
15
+ mcp/client/auth/__init__.py,sha256=hvlPclaDk3EkHr_nrt6tx37iv_rQ8SQgosM0OhJSeQ4,488
16
+ mcp/client/auth/exceptions.py,sha256=uUDHX_P0S3R_tt7oAS8ALQrUgOiV2Dgc0QQAdaaBcW8,264
17
+ mcp/client/auth/oauth2.py,sha256=-0sEyFlj99pV6FAHu_POiRGMF4OuyfkKm4Enfo4Vixg,24372
18
+ mcp/client/auth/utils.py,sha256=NTaMArsn-UF6L-SWWvI0JKNWEORJV-mpJPyDUYzz3fQ,9893
19
+ mcp/client/auth/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ mcp/client/auth/extensions/client_credentials.py,sha256=7M34RJ0NHpF4OKM6em875fLdgErf2KjtB-7nSfBBaVE,7118
21
+ mcp/client/stdio/__init__.py,sha256=ojInz-HjRW8Wq0ExFIajmc9Uf8xrZFOZv5vzptxs9lQ,9403
22
+ mcp/os/__init__.py,sha256=uqaGIfCF4I0IPeSsEEZMNwZuDF91U0WKAIbDcKzPRLo,43
23
+ mcp/os/posix/__init__.py,sha256=l_2j8jhhgw69s_-eH4dCDk4QYxNlxKGIpaOCvcbv1Qk,40
24
+ mcp/os/posix/utilities.py,sha256=mTEYV74M9z9s2deXWctpUGTS1MNtkOr7IYCXU3mxlNI,1930
25
+ mcp/os/win32/__init__.py,sha256=7xyI7KWpZhDS3omGEBcu3200Q-DjIsS7c-a-vrn28Y4,42
26
+ mcp/os/win32/utilities.py,sha256=M5j9NF9QhgCHqQeHYpc9z0ksFsNy1F43vYqQl3LXq-Y,10808
27
+ mcp/server/__init__.py,sha256=jeMjAkvChhKLEy1fpeKJ4d_bT1vnnmuGm11otQ7ncBg,202
28
+ mcp/server/__main__.py,sha256=KakUSquF7R44Ugwg3N5VQCJsPnsEVrbwk-UnRHerVww,1328
29
+ mcp/server/elicitation.py,sha256=COO3lGdDp9lYTR2lHJ6Qeov0SdGAsENPJOT3eVaKXSM,3895
30
+ mcp/server/models.py,sha256=w-xEPy_qGds2_bEpejN6iaWeh0UvMtKqwlXzPN_ChZ0,422
31
+ mcp/server/session.py,sha256=pUQ1MLmuuIl69lAf0UrpNiy80mo_ikb3yBQprcsf8Ow,12900
32
+ mcp/server/sse.py,sha256=QqzE9gWpG35HfQo6gbsCmZPV4ud02EtZcewNGTwKvF8,10826
33
+ mcp/server/stdio.py,sha256=LkFigRZC4uIDUA2JjnsKlgOuLh9IWFBNVgHcs97JsM8,3358
34
+ mcp/server/streamable_http.py,sha256=fnAXZRc7neVVpKh_xxYzWJtCd0lo8dgPZjYXlRzhFWw,39407
35
+ mcp/server/streamable_http_manager.py,sha256=QJKx7enfCiCoJxrS7slhk3UQ8NWeX90maNSlRrHWk3c,11264
36
+ mcp/server/transport_security.py,sha256=T8oLE1lh2WXW6cVvPiNUSmG5WmxMvdCCXkm7JdSvmIs,4938
37
+ mcp/server/websocket.py,sha256=sw9aSmyhOZlqK-jPQd9RS03zn9XaLR4D6HL6vi8DtBY,2352
38
+ mcp/server/auth/__init__.py,sha256=xmxBzGAYvejOEzxqvZxiRkootIdlpp5WrCNiPKvuKdk,51
39
+ mcp/server/auth/errors.py,sha256=8YjlejJPl-qMjZrbJTDzMPBOAOITn0Da0pC5QWn9QdE,224
40
+ mcp/server/auth/json_response.py,sha256=EMv3qAH62vRuw8XBHdFU3kYp0S8Jd6DjRGfwc7Jc9XU,377
41
+ mcp/server/auth/provider.py,sha256=itp10kM6TGcQGL_zMUVpQ28FK3p-q_zFK5V3CJNoHBE,9846
42
+ mcp/server/auth/routes.py,sha256=ALMvGZMOASowKZpabmE6P72Xa6euEIPiDcltpNnLwtQ,9085
43
+ mcp/server/auth/settings.py,sha256=Nj8tNCXANHMCmX6nxCa-GUrA9knJ9f8zCuMxMDFN4D4,1031
44
+ mcp/server/auth/handlers/__init__.py,sha256=T2ueQWVpLDbMIAiOcROyumxRwqa8Po5lA9zd_Cbt2Uc,58
45
+ mcp/server/auth/handlers/authorize.py,sha256=fAz-L-5Qv6KeHjpoBOAUE6sYgTuG0ydPA7y2xjb4pIM,9728
46
+ mcp/server/auth/handlers/metadata.py,sha256=mWPkrs1DfG-Qzq1nZU2HzwxSwk8K_vXe-ZpEDZ0k_QA,853
47
+ mcp/server/auth/handlers/register.py,sha256=QhjR-lYpvg58lmWGA7eb8b5N0geKztCO-vjq_fLoxq0,5721
48
+ mcp/server/auth/handlers/revoke.py,sha256=CnnzdtzIquq2pFYlJEYniP-1NcDSfzYqGF8jiipNiO8,3220
49
+ mcp/server/auth/handlers/token.py,sha256=6EuqU0ZBV-cZRenj2XckekMvJxicB5NFuo5aUOrp1Es,10090
50
+ mcp/server/auth/middleware/__init__.py,sha256=XhRUi_w-ie_QG7XT5EfqNG-NPZvXtJtgHSB_tPVYNIw,42
51
+ mcp/server/auth/middleware/auth_context.py,sha256=0hYDUr2GL0VqTVQtCCZCDop2JwGox_IuD0XBZQbtpT0,1696
52
+ mcp/server/auth/middleware/bearer_auth.py,sha256=-t3Ar5bNuIJtYSlF2CsvmAozEX2uySo4chp2Rzgbw4s,4423
53
+ mcp/server/auth/middleware/client_auth.py,sha256=CDDM-DReVtFBqftRr2OVo1MyiJc2VIlsIb2cxYPFPP8,1945
54
+ mcp/server/fastmcp/__init__.py,sha256=4EnleAYdPF_hgPexfq2zxGRtU_Fd3ZrjXegKckuj-K8,297
55
+ mcp/server/fastmcp/exceptions.py,sha256=q9djUDmpwmGEWcHI8q4UzJBtf7s7UtgL--OB7OaGzyQ,435
56
+ mcp/server/fastmcp/server.py,sha256=wMFow2U6S41D7-6sg19bRqF1_cHwcKzV7gBTXRKm1ao,48493
57
+ mcp/server/fastmcp/prompts/__init__.py,sha256=4BsMxoYolpoxg74xkkkzCFL8vvdkLVJ5cIPNs1ND1Jo,99
58
+ mcp/server/fastmcp/prompts/base.py,sha256=s5-zpCjfd-LLbqMoa2oJnzUoVUGW4EVhi8ufvWSjHns,7088
59
+ mcp/server/fastmcp/prompts/manager.py,sha256=IXIv__muOQhXgipCmKWJ4cyPjjawWkjmeahe6G29oyU,1835
60
+ mcp/server/fastmcp/resources/__init__.py,sha256=e4S369jBoJt07ez9_ZaJefzGfz4kr9nGwG4KPMzMHc8,464
61
+ mcp/server/fastmcp/resources/base.py,sha256=xEp3CQHaFJmbzVaoTwr6Xuwal2ZEbaKbFNyB2x7ttUA,1702
62
+ mcp/server/fastmcp/resources/resource_manager.py,sha256=gzeZ2XHFc7kdUESf2IEZwkMuxrgUrcMf5MQm9pHwu5M,3940
63
+ mcp/server/fastmcp/resources/templates.py,sha256=6YV7aDGM1Hf3ChARqmldc51DHSD5JOVCOsiq46U4sWc,4734
64
+ mcp/server/fastmcp/resources/types.py,sha256=v4nnI4vydnvFT9ZO8Euy7dsDDk1VRUVWEAEP4wbVusA,7147
65
+ mcp/server/fastmcp/tools/__init__.py,sha256=ZboxhyMJDl87Svjov8YwNYwNZi55P9VhmpTjBZLesnk,96
66
+ mcp/server/fastmcp/tools/base.py,sha256=fXqYuo4rVC8xIIxViMLuDEXHXQRwH7I6ukPbIPEC8hE,4359
67
+ mcp/server/fastmcp/tools/tool_manager.py,sha256=rNjJ6_ug6HZEJuYIaN7qqTGgEqiCTha6T0eeSZG9KnY,2972
68
+ mcp/server/fastmcp/utilities/__init__.py,sha256=-imJ8S-rXmbXMWeDamldP-dHDqAPg_wwmPVz-LNX14E,31
69
+ mcp/server/fastmcp/utilities/context_injection.py,sha256=BVm4Svi5RK-nlscwYZT75WuLPccRAJ_INdZxxVSM-lg,2028
70
+ mcp/server/fastmcp/utilities/func_metadata.py,sha256=unwzYeTu8JRVxqYZe-jiCEdtia2KpOnKHWiTEXugBjc,22121
71
+ mcp/server/fastmcp/utilities/logging.py,sha256=e8kBHAYHB00gntMTaWMN6uT4kwiiOdL14qDXEZU0x-k,1063
72
+ mcp/server/fastmcp/utilities/types.py,sha256=xXRshurGRIjVnr1lVPwcZomSSN4_wvxpNb2jS6RUCw4,3546
73
+ mcp/server/lowlevel/__init__.py,sha256=mS7slrVoWzHMYqDHDIJ7oRZxwPZG_I63UVQiJN311YY,93
74
+ mcp/server/lowlevel/func_inspection.py,sha256=uLEpY5IHgWicIfbYbaI4aDYfUgMRxuFdTu20duvH2pw,2466
75
+ mcp/server/lowlevel/helper_types.py,sha256=LmzGNx9FU258TKDyKjwfzH_KOnH4Mkk_k8i9EIFmN7Y,189
76
+ mcp/server/lowlevel/server.py,sha256=pEyUBs6HSbLAPIXFbIpak2pAXQJPy2vaDg6EH_VUQqA,29794
77
+ mcp/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ mcp/shared/_httpx_utils.py,sha256=oy-0n-43ewBadV0mWML1EWH7UcGFTKmajq5HJQQsJHI,2631
79
+ mcp/shared/auth.py,sha256=8DorcXAXlIDAFaazKlsxRLvAjEke933SY2UocQHr2g0,6416
80
+ mcp/shared/auth_utils.py,sha256=urxND9gJd48mHI0XgwjLx5Eq2GlMBrs4y9HebSQtyY4,3006
81
+ mcp/shared/context.py,sha256=ssAfEQS7jCz7ufulNfNpY01HLSGJ3_72-uCAexVAoS0,604
82
+ mcp/shared/exceptions.py,sha256=nmIg0QU_QZk2-mZ2YiJr5Ll9kkVmp_6pQtLGUCp8cDs,316
83
+ mcp/shared/memory.py,sha256=DtPFbfalB14Nm5hZS5zZLAwrIkqwZFVcBUwFcBAU1TM,3951
84
+ mcp/shared/message.py,sha256=rJcQ2aq0cc8V8qbpsjwUkGRsos88NVyw-GAY1XXhwRk,1140
85
+ mcp/shared/metadata_utils.py,sha256=9Tp9b0PkfjBhm2SlwHnod1W4Bf6vZB0p5J2E7Sv25U4,1712
86
+ mcp/shared/progress.py,sha256=Ys4V_DTQhYsug6KS6Bb3E4T0CDyOOaIecIXAIMFs1tU,1756
87
+ mcp/shared/session.py,sha256=b7IOCbyHCbzg4Nv3wgiJY03I7I-1GuxOED5Ghz3WfJk,21051
88
+ mcp/shared/version.py,sha256=D2vzvR6piT4XU73ykN11OaKoEXxPS0tgYTfA7rVuizI,142
89
+ mcp-1.22.0.dist-info/METADATA,sha256=u48HnO-msakpnhJdvMK2dMc_CYO8-EY8Gq_1kl6AwG0,85906
90
+ mcp-1.22.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
91
+ mcp-1.22.0.dist-info/entry_points.txt,sha256=gnGBbo3yGF0YJNXfZpgkAg1-CQtKxnzxrlA53c8viYA,42
92
+ mcp-1.22.0.dist-info/licenses/LICENSE,sha256=XhPbvB0SD8KgPOzefJFCSuLX3hG2PVje0vRDHiYe5Q0,1071
93
+ mcp-1.22.0.dist-info/INSTALLER,sha256=sz0Tnp99msIbbLB51q7U9nA6AvRKcsOeUKhrHH0Ulg4,12
94
+ mcp-1.22.0.dist-info/RECORD,,