[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-letta-converting-mcps-to-skills":3,"mdc--rr2mi9-key":41,"related-repo-letta-converting-mcps-to-skills":2487,"related-org-letta-converting-mcps-to-skills":2571},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":36,"sourceUrl":39,"mdContent":40},"converting-mcps-to-skills","connect MCP servers to create skills","Connect to MCP (Model Context Protocol) servers and create skills for repeated use. Load when a user wants to use an MCP server, connect to external tools via MCP, or when they mention MCP, model context protocol, or specific MCP servers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"letta","Letta","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fletta.png","letta-ai",[13,17,20],{"name":14,"slug":15,"type":16},"Automation","automation","tag",{"name":18,"slug":19,"type":16},"MCP","mcp",{"name":21,"slug":22,"type":16},"Agents","agents",2831,"https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fletta-code","2026-07-13T06:23:37.646079",null,329,[29,30,31,32,33,8,34,35],"agent-memory","ai","claude","codex","continual-learning","memgpt","stateful-agents",{"repoUrl":24,"stars":23,"forks":27,"topics":37,"description":38},[29,30,31,32,33,8,34,35],"Stateful agents that are like people, with memory, identity, and the ability to learn and adapt","https:\u002F\u002Fgithub.com\u002Fletta-ai\u002Fletta-code\u002Ftree\u002FHEAD\u002Fsrc\u002Fskills\u002Fbuiltin\u002Fconverting-mcps-to-skills","---\nname: converting-mcps-to-skills\ndescription: Connect to MCP (Model Context Protocol) servers and create skills for repeated use. Load when a user wants to use an MCP server, connect to external tools via MCP, or when they mention MCP, model context protocol, or specific MCP servers.\n---\n\n# Converting MCP Servers to Skills\n\nLetta Code is not itself an MCP client, but as a general computer-use agent, you can easily connect to any MCP server using the scripts in this skill.\n\n## What is MCP?\n\nMCP (Model Context Protocol) is a standard for exposing tools to AI agents. MCP servers provide tools via JSON-RPC, either over:\n- **HTTP** - Server running at a URL (e.g., `http:\u002F\u002Flocalhost:3001\u002Fmcp`)\n- **stdio** - Server runs as a subprocess, communicating via stdin\u002Fstdout\n\n## Quick Start: Connecting to an MCP Server\n\n### Step 1: Determine the transport type\n\nAsk the user:\n- Is it an HTTP server (has a URL)?\n- Is it a stdio server (runs via command like `npx`, `node`, `python`)?\n\n### Step 2: Test the connection\n\n**For HTTP servers:**\n```bash\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-http.ts \u003Curl> list-tools\n\n# With auth header\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-http.ts \u003Curl> --header \"Authorization: Bearer KEY\" list-tools\n```\nWhere `\u003CSKILL_DIR>` is the Skill Directory shown when the skill was loaded (visible in the injection header).\n\n**For stdio servers:**\n```bash\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"\u003Ccommand>\" list-tools\n\n# Examples\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"npx -y @modelcontextprotocol\u002Fserver-filesystem .\" list-tools\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"python server.py\" list-tools\n```\n\n### Step 3: Explore available tools\n\n```bash\n# List all tools\n... list-tools\n\n# Get schema for a specific tool\n... info \u003Ctool-name>\n\n# Test calling a tool\n... call \u003Ctool-name> '{\"arg\": \"value\"}'\n```\n\n## Creating a Dedicated Skill\n\nWhen an MCP server will be used repeatedly, create a dedicated skill for it. This makes future use easier and documents the server's capabilities.\n\n### Decision: Simple vs Rich Skill\n\n**Simple skill** (just SKILL.md):\n- Good for straightforward servers\n- Documents how to use the parent skill's scripts with this specific server\n- No additional scripts needed\n\n**Rich skill** (SKILL.md + scripts\u002F):\n- Good for frequently-used servers\n- Includes convenience wrapper scripts with defaults baked in\n- Provides a simpler interface than the generic scripts\n\nSee `references\u002Fskill-templates.md` for templates.\n\n## Built-in Scripts Reference\n\n### mcp-http.ts - HTTP Transport\n\nConnects to MCP servers over HTTP. No dependencies required.\n\n```bash\nnpx tsx mcp-http.ts \u003Curl> [options] \u003Ccommand> [args]\n\nCommands:\n  list-tools              List available tools\n  list-resources          List available resources\n  info \u003Ctool>             Show tool schema\n  call \u003Ctool> '\u003Cjson>'    Call a tool\n  login                   Run OAuth flow and cache tokens for this server\n  logout                  Clear cached OAuth tokens for this server\n\nOptions:\n  --header \"K: V\"         Add HTTP header (repeatable). Disables auto-OAuth.\n  --auth \u003Cmode>           \"auto\" (default), \"oauth\", or \"none\"\n  --timeout \u003Cms>          Request timeout (default: 30000)\n```\n\n**Examples:**\n```bash\n# Basic usage\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp list-tools\n\n# With static bearer authentication\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp --header \"Authorization: Bearer KEY\" list-tools\n\n# OAuth-protected server (opens a browser to sign in, then caches tokens)\nnpx tsx mcp-http.ts https:\u002F\u002Fexample.com\u002Fmcp login\nnpx tsx mcp-http.ts https:\u002F\u002Fexample.com\u002Fmcp list-tools\n\n# Call a tool\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp call vault '{\"action\":\"search\",\"query\":\"notes\"}'\n```\n\n**OAuth support:**\nWhen a server returns `401 WWW-Authenticate: Bearer ...` and no static\n`Authorization` header was supplied, `mcp-http.ts` will automatically:\n\n1. Discover the authorization server via `resource_metadata`, the\n   `realm=` param, or the server's own origin (`.well-known\u002Foauth-authorization-server`\n   then `.well-known\u002Fopenid-configuration`).\n2. Dynamically register a public client with PKCE (`token_endpoint_auth_method: none`).\n3. Open the system browser to the authorization endpoint, catch the redirect\n   on a `127.0.0.1` loopback port, and exchange the code for tokens.\n4. Cache the token set (and the registered client) at\n   `~\u002F.letta\u002Fmcp-oauth\u002F\u003Chost>_\u003Cpath>.json` with `0600` perms.\n5. Auto-refresh expired access tokens using the stored refresh token before\n   each request; if refresh fails, it re-runs the browser flow once.\n\nUse `login` to run the flow explicitly (e.g. as a first step in a skill's\nsetup) and `logout` to clear cached tokens. Passing an explicit\n`--header \"Authorization: ...\"` disables auto-OAuth so you stay in control.\nPass `--auth none` to force static-only behavior.\n\n### mcp-stdio.ts - stdio Transport\n\nConnects to MCP servers that run as subprocesses. No dependencies required.\n\n```bash\nnpx tsx mcp-stdio.ts \"\u003Ccommand>\" [options] \u003Caction> [args]\n\nActions:\n  list-tools              List available tools\n  list-resources          List available resources\n  info \u003Ctool>             Show tool schema\n  call \u003Ctool> '\u003Cjson>'    Call a tool\n\nOptions:\n  --env \"KEY=VALUE\"       Set environment variable (repeatable)\n  --cwd \u003Cpath>            Set working directory\n  --timeout \u003Cms>          Request timeout (default: 30000)\n```\n\n**Examples:**\n```bash\n# Filesystem server\nnpx tsx mcp-stdio.ts \"npx -y @modelcontextprotocol\u002Fserver-filesystem .\" list-tools\n\n# With environment variable\nnpx tsx mcp-stdio.ts \"node server.js\" --env \"API_KEY=xxx\" list-tools\n\n# Call a tool\nnpx tsx mcp-stdio.ts \"python server.py\" call read_file '{\"path\":\".\u002FREADME.md\"}'\n```\n\n## Common MCP Servers\n\nHere are some well-known MCP servers:\n\n| Server | Transport | Command\u002FURL |\n|--------|-----------|-------------|\n| Filesystem | stdio | `npx -y @modelcontextprotocol\u002Fserver-filesystem \u003Cpath>` |\n| GitHub | stdio | `npx -y @modelcontextprotocol\u002Fserver-github` |\n| Brave Search | stdio | `npx -y @modelcontextprotocol\u002Fserver-brave-search` |\n| obsidian-mcp-plugin | HTTP | `http:\u002F\u002Flocalhost:3001\u002Fmcp` |\n\n## Troubleshooting\n\n**\"Cannot connect\" error:**\n- For HTTP: Check the URL is correct and server is running\n- For stdio: Check the command works when run directly in terminal\n\n**\"Authentication required\" error:**\n- Add `--header \"Authorization: Bearer YOUR_KEY\"` for HTTP servers using static bearers\n- Or `--env \"API_KEY=xxx\"` for stdio servers that need env vars\n- For OAuth-protected HTTP servers, just run any command (or `login`) — the helper\n  will do PKCE + dynamic client registration and cache tokens under\n  `~\u002F.letta\u002Fmcp-oauth\u002F`. Delete that file (or run `logout`) to force a re-login.\n\n**OAuth issues:**\n- \"Could not discover OAuth server metadata\": the server didn't include\n  `resource_metadata` and its origin doesn't serve `.well-known\u002Foauth-authorization-server`\n  or `.well-known\u002Fopenid-configuration`. Fall back to a static bearer, or point the\n  helper at the auth server manually via a custom skill.\n- \"Dynamic client registration failed\": the auth server disables open DCR.\n  You'll need to pre-register a client and pass its `client_id` (and any required\n  credentials) via headers, or wrap this skill with a server-specific one.\n- \"state mismatch\" \u002F callback timeout: another process may be holding the browser\n  callback; re-run and complete the sign-in in the newly opened tab.\n\n**Tool call fails:**\n- Use `info \u003Ctool>` to see the expected input schema\n- Ensure JSON arguments match the schema\n",{"data":42,"body":43},{"name":4,"description":6},{"type":44,"children":45},"root",[46,55,61,68,73,108,114,121,126,162,168,176,346,359,367,535,541,676,682,687,693,703,721,731,749,762,768,774,779,1267,1275,1487,1521,1613,1650,1656,1661,1999,2006,2180,2186,2191,2307,2313,2321,2334,2342,2398,2406,2453,2461,2481],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"converting-mcp-servers-to-skills",[52],{"type":53,"value":54},"text","Converting MCP Servers to Skills",{"type":47,"tag":56,"props":57,"children":58},"p",{},[59],{"type":53,"value":60},"Letta Code is not itself an MCP client, but as a general computer-use agent, you can easily connect to any MCP server using the scripts in this skill.",{"type":47,"tag":62,"props":63,"children":65},"h2",{"id":64},"what-is-mcp",[66],{"type":53,"value":67},"What is MCP?",{"type":47,"tag":56,"props":69,"children":70},{},[71],{"type":53,"value":72},"MCP (Model Context Protocol) is a standard for exposing tools to AI agents. MCP servers provide tools via JSON-RPC, either over:",{"type":47,"tag":74,"props":75,"children":76},"ul",{},[77,98],{"type":47,"tag":78,"props":79,"children":80},"li",{},[81,87,89,96],{"type":47,"tag":82,"props":83,"children":84},"strong",{},[85],{"type":53,"value":86},"HTTP",{"type":53,"value":88}," - Server running at a URL (e.g., ",{"type":47,"tag":90,"props":91,"children":93},"code",{"className":92},[],[94],{"type":53,"value":95},"http:\u002F\u002Flocalhost:3001\u002Fmcp",{"type":53,"value":97},")",{"type":47,"tag":78,"props":99,"children":100},{},[101,106],{"type":47,"tag":82,"props":102,"children":103},{},[104],{"type":53,"value":105},"stdio",{"type":53,"value":107}," - Server runs as a subprocess, communicating via stdin\u002Fstdout",{"type":47,"tag":62,"props":109,"children":111},{"id":110},"quick-start-connecting-to-an-mcp-server",[112],{"type":53,"value":113},"Quick Start: Connecting to an MCP Server",{"type":47,"tag":115,"props":116,"children":118},"h3",{"id":117},"step-1-determine-the-transport-type",[119],{"type":53,"value":120},"Step 1: Determine the transport type",{"type":47,"tag":56,"props":122,"children":123},{},[124],{"type":53,"value":125},"Ask the user:",{"type":47,"tag":74,"props":127,"children":128},{},[129,134],{"type":47,"tag":78,"props":130,"children":131},{},[132],{"type":53,"value":133},"Is it an HTTP server (has a URL)?",{"type":47,"tag":78,"props":135,"children":136},{},[137,139,145,147,153,154,160],{"type":53,"value":138},"Is it a stdio server (runs via command like ",{"type":47,"tag":90,"props":140,"children":142},{"className":141},[],[143],{"type":53,"value":144},"npx",{"type":53,"value":146},", ",{"type":47,"tag":90,"props":148,"children":150},{"className":149},[],[151],{"type":53,"value":152},"node",{"type":53,"value":146},{"type":47,"tag":90,"props":155,"children":157},{"className":156},[],[158],{"type":53,"value":159},"python",{"type":53,"value":161},")?",{"type":47,"tag":115,"props":163,"children":165},{"id":164},"step-2-test-the-connection",[166],{"type":53,"value":167},"Step 2: Test the connection",{"type":47,"tag":56,"props":169,"children":170},{},[171],{"type":47,"tag":82,"props":172,"children":173},{},[174],{"type":53,"value":175},"For HTTP servers:",{"type":47,"tag":177,"props":178,"children":183},"pre",{"className":179,"code":180,"language":181,"meta":182,"style":182},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-http.ts \u003Curl> list-tools\n\n# With auth header\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-http.ts \u003Curl> --header \"Authorization: Bearer KEY\" list-tools\n","bash","",[184],{"type":47,"tag":90,"props":185,"children":186},{"__ignoreMap":182},[187,254,264,274],{"type":47,"tag":188,"props":189,"children":192},"span",{"class":190,"line":191},"line",1,[193,198,204,210,215,221,226,231,235,240,245,249],{"type":47,"tag":188,"props":194,"children":196},{"style":195},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[197],{"type":53,"value":144},{"type":47,"tag":188,"props":199,"children":201},{"style":200},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[202],{"type":53,"value":203}," tsx",{"type":47,"tag":188,"props":205,"children":207},{"style":206},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[208],{"type":53,"value":209}," \u003C",{"type":47,"tag":188,"props":211,"children":212},{"style":200},[213],{"type":53,"value":214},"SKILL_DI",{"type":47,"tag":188,"props":216,"children":218},{"style":217},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[219],{"type":53,"value":220},"R",{"type":47,"tag":188,"props":222,"children":223},{"style":206},[224],{"type":53,"value":225},">",{"type":47,"tag":188,"props":227,"children":228},{"style":200},[229],{"type":53,"value":230},"\u002Fscripts\u002Fmcp-http.ts",{"type":47,"tag":188,"props":232,"children":233},{"style":206},[234],{"type":53,"value":209},{"type":47,"tag":188,"props":236,"children":237},{"style":200},[238],{"type":53,"value":239},"ur",{"type":47,"tag":188,"props":241,"children":242},{"style":217},[243],{"type":53,"value":244},"l",{"type":47,"tag":188,"props":246,"children":247},{"style":206},[248],{"type":53,"value":225},{"type":47,"tag":188,"props":250,"children":251},{"style":200},[252],{"type":53,"value":253}," list-tools\n",{"type":47,"tag":188,"props":255,"children":257},{"class":190,"line":256},2,[258],{"type":47,"tag":188,"props":259,"children":261},{"emptyLinePlaceholder":260},true,[262],{"type":53,"value":263},"\n",{"type":47,"tag":188,"props":265,"children":267},{"class":190,"line":266},3,[268],{"type":47,"tag":188,"props":269,"children":271},{"style":270},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[272],{"type":53,"value":273},"# With auth header\n",{"type":47,"tag":188,"props":275,"children":277},{"class":190,"line":276},4,[278,282,286,290,294,298,302,306,310,314,318,322,327,332,337,342],{"type":47,"tag":188,"props":279,"children":280},{"style":195},[281],{"type":53,"value":144},{"type":47,"tag":188,"props":283,"children":284},{"style":200},[285],{"type":53,"value":203},{"type":47,"tag":188,"props":287,"children":288},{"style":206},[289],{"type":53,"value":209},{"type":47,"tag":188,"props":291,"children":292},{"style":200},[293],{"type":53,"value":214},{"type":47,"tag":188,"props":295,"children":296},{"style":217},[297],{"type":53,"value":220},{"type":47,"tag":188,"props":299,"children":300},{"style":206},[301],{"type":53,"value":225},{"type":47,"tag":188,"props":303,"children":304},{"style":200},[305],{"type":53,"value":230},{"type":47,"tag":188,"props":307,"children":308},{"style":206},[309],{"type":53,"value":209},{"type":47,"tag":188,"props":311,"children":312},{"style":200},[313],{"type":53,"value":239},{"type":47,"tag":188,"props":315,"children":316},{"style":217},[317],{"type":53,"value":244},{"type":47,"tag":188,"props":319,"children":320},{"style":206},[321],{"type":53,"value":225},{"type":47,"tag":188,"props":323,"children":324},{"style":200},[325],{"type":53,"value":326}," --header",{"type":47,"tag":188,"props":328,"children":329},{"style":206},[330],{"type":53,"value":331}," \"",{"type":47,"tag":188,"props":333,"children":334},{"style":200},[335],{"type":53,"value":336},"Authorization: Bearer KEY",{"type":47,"tag":188,"props":338,"children":339},{"style":206},[340],{"type":53,"value":341},"\"",{"type":47,"tag":188,"props":343,"children":344},{"style":200},[345],{"type":53,"value":253},{"type":47,"tag":56,"props":347,"children":348},{},[349,351,357],{"type":53,"value":350},"Where ",{"type":47,"tag":90,"props":352,"children":354},{"className":353},[],[355],{"type":53,"value":356},"\u003CSKILL_DIR>",{"type":53,"value":358}," is the Skill Directory shown when the skill was loaded (visible in the injection header).",{"type":47,"tag":56,"props":360,"children":361},{},[362],{"type":47,"tag":82,"props":363,"children":364},{},[365],{"type":53,"value":366},"For stdio servers:",{"type":47,"tag":177,"props":368,"children":370},{"className":179,"code":369,"language":181,"meta":182,"style":182},"npx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"\u003Ccommand>\" list-tools\n\n# Examples\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"npx -y @modelcontextprotocol\u002Fserver-filesystem .\" list-tools\nnpx tsx \u003CSKILL_DIR>\u002Fscripts\u002Fmcp-stdio.ts \"python server.py\" list-tools\n",[371],{"type":47,"tag":90,"props":372,"children":373},{"__ignoreMap":182},[374,423,430,438,486],{"type":47,"tag":188,"props":375,"children":376},{"class":190,"line":191},[377,381,385,389,393,397,401,406,410,415,419],{"type":47,"tag":188,"props":378,"children":379},{"style":195},[380],{"type":53,"value":144},{"type":47,"tag":188,"props":382,"children":383},{"style":200},[384],{"type":53,"value":203},{"type":47,"tag":188,"props":386,"children":387},{"style":206},[388],{"type":53,"value":209},{"type":47,"tag":188,"props":390,"children":391},{"style":200},[392],{"type":53,"value":214},{"type":47,"tag":188,"props":394,"children":395},{"style":217},[396],{"type":53,"value":220},{"type":47,"tag":188,"props":398,"children":399},{"style":206},[400],{"type":53,"value":225},{"type":47,"tag":188,"props":402,"children":403},{"style":200},[404],{"type":53,"value":405},"\u002Fscripts\u002Fmcp-stdio.ts",{"type":47,"tag":188,"props":407,"children":408},{"style":206},[409],{"type":53,"value":331},{"type":47,"tag":188,"props":411,"children":412},{"style":200},[413],{"type":53,"value":414},"\u003Ccommand>",{"type":47,"tag":188,"props":416,"children":417},{"style":206},[418],{"type":53,"value":341},{"type":47,"tag":188,"props":420,"children":421},{"style":200},[422],{"type":53,"value":253},{"type":47,"tag":188,"props":424,"children":425},{"class":190,"line":256},[426],{"type":47,"tag":188,"props":427,"children":428},{"emptyLinePlaceholder":260},[429],{"type":53,"value":263},{"type":47,"tag":188,"props":431,"children":432},{"class":190,"line":266},[433],{"type":47,"tag":188,"props":434,"children":435},{"style":270},[436],{"type":53,"value":437},"# Examples\n",{"type":47,"tag":188,"props":439,"children":440},{"class":190,"line":276},[441,445,449,453,457,461,465,469,473,478,482],{"type":47,"tag":188,"props":442,"children":443},{"style":195},[444],{"type":53,"value":144},{"type":47,"tag":188,"props":446,"children":447},{"style":200},[448],{"type":53,"value":203},{"type":47,"tag":188,"props":450,"children":451},{"style":206},[452],{"type":53,"value":209},{"type":47,"tag":188,"props":454,"children":455},{"style":200},[456],{"type":53,"value":214},{"type":47,"tag":188,"props":458,"children":459},{"style":217},[460],{"type":53,"value":220},{"type":47,"tag":188,"props":462,"children":463},{"style":206},[464],{"type":53,"value":225},{"type":47,"tag":188,"props":466,"children":467},{"style":200},[468],{"type":53,"value":405},{"type":47,"tag":188,"props":470,"children":471},{"style":206},[472],{"type":53,"value":331},{"type":47,"tag":188,"props":474,"children":475},{"style":200},[476],{"type":53,"value":477},"npx -y @modelcontextprotocol\u002Fserver-filesystem .",{"type":47,"tag":188,"props":479,"children":480},{"style":206},[481],{"type":53,"value":341},{"type":47,"tag":188,"props":483,"children":484},{"style":200},[485],{"type":53,"value":253},{"type":47,"tag":188,"props":487,"children":489},{"class":190,"line":488},5,[490,494,498,502,506,510,514,518,522,527,531],{"type":47,"tag":188,"props":491,"children":492},{"style":195},[493],{"type":53,"value":144},{"type":47,"tag":188,"props":495,"children":496},{"style":200},[497],{"type":53,"value":203},{"type":47,"tag":188,"props":499,"children":500},{"style":206},[501],{"type":53,"value":209},{"type":47,"tag":188,"props":503,"children":504},{"style":200},[505],{"type":53,"value":214},{"type":47,"tag":188,"props":507,"children":508},{"style":217},[509],{"type":53,"value":220},{"type":47,"tag":188,"props":511,"children":512},{"style":206},[513],{"type":53,"value":225},{"type":47,"tag":188,"props":515,"children":516},{"style":200},[517],{"type":53,"value":405},{"type":47,"tag":188,"props":519,"children":520},{"style":206},[521],{"type":53,"value":331},{"type":47,"tag":188,"props":523,"children":524},{"style":200},[525],{"type":53,"value":526},"python server.py",{"type":47,"tag":188,"props":528,"children":529},{"style":206},[530],{"type":53,"value":341},{"type":47,"tag":188,"props":532,"children":533},{"style":200},[534],{"type":53,"value":253},{"type":47,"tag":115,"props":536,"children":538},{"id":537},"step-3-explore-available-tools",[539],{"type":53,"value":540},"Step 3: Explore available tools",{"type":47,"tag":177,"props":542,"children":544},{"className":179,"code":543,"language":181,"meta":182,"style":182},"# List all tools\n... list-tools\n\n# Get schema for a specific tool\n... info \u003Ctool-name>\n\n# Test calling a tool\n... call \u003Ctool-name> '{\"arg\": \"value\"}'\n",[545],{"type":47,"tag":90,"props":546,"children":547},{"__ignoreMap":182},[548,556,569,576,584,615,623,632],{"type":47,"tag":188,"props":549,"children":550},{"class":190,"line":191},[551],{"type":47,"tag":188,"props":552,"children":553},{"style":270},[554],{"type":53,"value":555},"# List all tools\n",{"type":47,"tag":188,"props":557,"children":558},{"class":190,"line":256},[559,565],{"type":47,"tag":188,"props":560,"children":562},{"style":561},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[563],{"type":53,"value":564},"...",{"type":47,"tag":188,"props":566,"children":567},{"style":200},[568],{"type":53,"value":253},{"type":47,"tag":188,"props":570,"children":571},{"class":190,"line":266},[572],{"type":47,"tag":188,"props":573,"children":574},{"emptyLinePlaceholder":260},[575],{"type":53,"value":263},{"type":47,"tag":188,"props":577,"children":578},{"class":190,"line":276},[579],{"type":47,"tag":188,"props":580,"children":581},{"style":270},[582],{"type":53,"value":583},"# Get schema for a specific tool\n",{"type":47,"tag":188,"props":585,"children":586},{"class":190,"line":488},[587,591,596,600,605,610],{"type":47,"tag":188,"props":588,"children":589},{"style":561},[590],{"type":53,"value":564},{"type":47,"tag":188,"props":592,"children":593},{"style":200},[594],{"type":53,"value":595}," info",{"type":47,"tag":188,"props":597,"children":598},{"style":206},[599],{"type":53,"value":209},{"type":47,"tag":188,"props":601,"children":602},{"style":200},[603],{"type":53,"value":604},"tool-nam",{"type":47,"tag":188,"props":606,"children":607},{"style":217},[608],{"type":53,"value":609},"e",{"type":47,"tag":188,"props":611,"children":612},{"style":206},[613],{"type":53,"value":614},">\n",{"type":47,"tag":188,"props":616,"children":618},{"class":190,"line":617},6,[619],{"type":47,"tag":188,"props":620,"children":621},{"emptyLinePlaceholder":260},[622],{"type":53,"value":263},{"type":47,"tag":188,"props":624,"children":626},{"class":190,"line":625},7,[627],{"type":47,"tag":188,"props":628,"children":629},{"style":270},[630],{"type":53,"value":631},"# Test calling a tool\n",{"type":47,"tag":188,"props":633,"children":635},{"class":190,"line":634},8,[636,640,645,649,653,657,661,666,671],{"type":47,"tag":188,"props":637,"children":638},{"style":561},[639],{"type":53,"value":564},{"type":47,"tag":188,"props":641,"children":642},{"style":200},[643],{"type":53,"value":644}," call",{"type":47,"tag":188,"props":646,"children":647},{"style":206},[648],{"type":53,"value":209},{"type":47,"tag":188,"props":650,"children":651},{"style":200},[652],{"type":53,"value":604},{"type":47,"tag":188,"props":654,"children":655},{"style":217},[656],{"type":53,"value":609},{"type":47,"tag":188,"props":658,"children":659},{"style":206},[660],{"type":53,"value":225},{"type":47,"tag":188,"props":662,"children":663},{"style":206},[664],{"type":53,"value":665}," '",{"type":47,"tag":188,"props":667,"children":668},{"style":200},[669],{"type":53,"value":670},"{\"arg\": \"value\"}",{"type":47,"tag":188,"props":672,"children":673},{"style":206},[674],{"type":53,"value":675},"'\n",{"type":47,"tag":62,"props":677,"children":679},{"id":678},"creating-a-dedicated-skill",[680],{"type":53,"value":681},"Creating a Dedicated Skill",{"type":47,"tag":56,"props":683,"children":684},{},[685],{"type":53,"value":686},"When an MCP server will be used repeatedly, create a dedicated skill for it. This makes future use easier and documents the server's capabilities.",{"type":47,"tag":115,"props":688,"children":690},{"id":689},"decision-simple-vs-rich-skill",[691],{"type":53,"value":692},"Decision: Simple vs Rich Skill",{"type":47,"tag":56,"props":694,"children":695},{},[696,701],{"type":47,"tag":82,"props":697,"children":698},{},[699],{"type":53,"value":700},"Simple skill",{"type":53,"value":702}," (just SKILL.md):",{"type":47,"tag":74,"props":704,"children":705},{},[706,711,716],{"type":47,"tag":78,"props":707,"children":708},{},[709],{"type":53,"value":710},"Good for straightforward servers",{"type":47,"tag":78,"props":712,"children":713},{},[714],{"type":53,"value":715},"Documents how to use the parent skill's scripts with this specific server",{"type":47,"tag":78,"props":717,"children":718},{},[719],{"type":53,"value":720},"No additional scripts needed",{"type":47,"tag":56,"props":722,"children":723},{},[724,729],{"type":47,"tag":82,"props":725,"children":726},{},[727],{"type":53,"value":728},"Rich skill",{"type":53,"value":730}," (SKILL.md + scripts\u002F):",{"type":47,"tag":74,"props":732,"children":733},{},[734,739,744],{"type":47,"tag":78,"props":735,"children":736},{},[737],{"type":53,"value":738},"Good for frequently-used servers",{"type":47,"tag":78,"props":740,"children":741},{},[742],{"type":53,"value":743},"Includes convenience wrapper scripts with defaults baked in",{"type":47,"tag":78,"props":745,"children":746},{},[747],{"type":53,"value":748},"Provides a simpler interface than the generic scripts",{"type":47,"tag":56,"props":750,"children":751},{},[752,754,760],{"type":53,"value":753},"See ",{"type":47,"tag":90,"props":755,"children":757},{"className":756},[],[758],{"type":53,"value":759},"references\u002Fskill-templates.md",{"type":53,"value":761}," for templates.",{"type":47,"tag":62,"props":763,"children":765},{"id":764},"built-in-scripts-reference",[766],{"type":53,"value":767},"Built-in Scripts Reference",{"type":47,"tag":115,"props":769,"children":771},{"id":770},"mcp-httpts-http-transport",[772],{"type":53,"value":773},"mcp-http.ts - HTTP Transport",{"type":47,"tag":56,"props":775,"children":776},{},[777],{"type":53,"value":778},"Connects to MCP servers over HTTP. No dependencies required.",{"type":47,"tag":177,"props":780,"children":782},{"className":179,"code":781,"language":181,"meta":182,"style":182},"npx tsx mcp-http.ts \u003Curl> [options] \u003Ccommand> [args]\n\nCommands:\n  list-tools              List available tools\n  list-resources          List available resources\n  info \u003Ctool>             Show tool schema\n  call \u003Ctool> '\u003Cjson>'    Call a tool\n  login                   Run OAuth flow and cache tokens for this server\n  logout                  Clear cached OAuth tokens for this server\n\nOptions:\n  --header \"K: V\"         Add HTTP header (repeatable). Disables auto-OAuth.\n  --auth \u003Cmode>           \"auto\" (default), \"oauth\", or \"none\"\n  --timeout \u003Cms>          Request timeout (default: 30000)\n",[783],{"type":47,"tag":90,"props":784,"children":785},{"__ignoreMap":182},[786,852,859,867,890,912,952,1005,1058,1078,1086,1095,1137,1214],{"type":47,"tag":188,"props":787,"children":788},{"class":190,"line":191},[789,793,797,802,806,810,814,818,823,828,833,837,842,847],{"type":47,"tag":188,"props":790,"children":791},{"style":195},[792],{"type":53,"value":144},{"type":47,"tag":188,"props":794,"children":795},{"style":200},[796],{"type":53,"value":203},{"type":47,"tag":188,"props":798,"children":799},{"style":200},[800],{"type":53,"value":801}," mcp-http.ts",{"type":47,"tag":188,"props":803,"children":804},{"style":206},[805],{"type":53,"value":209},{"type":47,"tag":188,"props":807,"children":808},{"style":200},[809],{"type":53,"value":239},{"type":47,"tag":188,"props":811,"children":812},{"style":217},[813],{"type":53,"value":244},{"type":47,"tag":188,"props":815,"children":816},{"style":206},[817],{"type":53,"value":225},{"type":47,"tag":188,"props":819,"children":820},{"style":217},[821],{"type":53,"value":822}," [options] ",{"type":47,"tag":188,"props":824,"children":825},{"style":206},[826],{"type":53,"value":827},"\u003C",{"type":47,"tag":188,"props":829,"children":830},{"style":217},[831],{"type":53,"value":832},"command",{"type":47,"tag":188,"props":834,"children":835},{"style":206},[836],{"type":53,"value":225},{"type":47,"tag":188,"props":838,"children":839},{"style":206},[840],{"type":53,"value":841}," [",{"type":47,"tag":188,"props":843,"children":844},{"style":217},[845],{"type":53,"value":846},"args",{"type":47,"tag":188,"props":848,"children":849},{"style":206},[850],{"type":53,"value":851},"]\n",{"type":47,"tag":188,"props":853,"children":854},{"class":190,"line":256},[855],{"type":47,"tag":188,"props":856,"children":857},{"emptyLinePlaceholder":260},[858],{"type":53,"value":263},{"type":47,"tag":188,"props":860,"children":861},{"class":190,"line":266},[862],{"type":47,"tag":188,"props":863,"children":864},{"style":195},[865],{"type":53,"value":866},"Commands:\n",{"type":47,"tag":188,"props":868,"children":869},{"class":190,"line":276},[870,875,880,885],{"type":47,"tag":188,"props":871,"children":872},{"style":195},[873],{"type":53,"value":874},"  list-tools",{"type":47,"tag":188,"props":876,"children":877},{"style":200},[878],{"type":53,"value":879},"              List",{"type":47,"tag":188,"props":881,"children":882},{"style":200},[883],{"type":53,"value":884}," available",{"type":47,"tag":188,"props":886,"children":887},{"style":200},[888],{"type":53,"value":889}," tools\n",{"type":47,"tag":188,"props":891,"children":892},{"class":190,"line":488},[893,898,903,907],{"type":47,"tag":188,"props":894,"children":895},{"style":195},[896],{"type":53,"value":897},"  list-resources",{"type":47,"tag":188,"props":899,"children":900},{"style":200},[901],{"type":53,"value":902},"          List",{"type":47,"tag":188,"props":904,"children":905},{"style":200},[906],{"type":53,"value":884},{"type":47,"tag":188,"props":908,"children":909},{"style":200},[910],{"type":53,"value":911}," resources\n",{"type":47,"tag":188,"props":913,"children":914},{"class":190,"line":617},[915,920,924,929,933,937,942,947],{"type":47,"tag":188,"props":916,"children":917},{"style":195},[918],{"type":53,"value":919},"  info",{"type":47,"tag":188,"props":921,"children":922},{"style":206},[923],{"type":53,"value":209},{"type":47,"tag":188,"props":925,"children":926},{"style":200},[927],{"type":53,"value":928},"too",{"type":47,"tag":188,"props":930,"children":931},{"style":217},[932],{"type":53,"value":244},{"type":47,"tag":188,"props":934,"children":935},{"style":206},[936],{"type":53,"value":225},{"type":47,"tag":188,"props":938,"children":939},{"style":200},[940],{"type":53,"value":941},"             Show",{"type":47,"tag":188,"props":943,"children":944},{"style":200},[945],{"type":53,"value":946}," tool",{"type":47,"tag":188,"props":948,"children":949},{"style":200},[950],{"type":53,"value":951}," schema\n",{"type":47,"tag":188,"props":953,"children":954},{"class":190,"line":625},[955,960,964,968,972,976,980,985,990,995,1000],{"type":47,"tag":188,"props":956,"children":957},{"style":195},[958],{"type":53,"value":959},"  call",{"type":47,"tag":188,"props":961,"children":962},{"style":206},[963],{"type":53,"value":209},{"type":47,"tag":188,"props":965,"children":966},{"style":200},[967],{"type":53,"value":928},{"type":47,"tag":188,"props":969,"children":970},{"style":217},[971],{"type":53,"value":244},{"type":47,"tag":188,"props":973,"children":974},{"style":206},[975],{"type":53,"value":225},{"type":47,"tag":188,"props":977,"children":978},{"style":206},[979],{"type":53,"value":665},{"type":47,"tag":188,"props":981,"children":982},{"style":200},[983],{"type":53,"value":984},"\u003Cjson>",{"type":47,"tag":188,"props":986,"children":987},{"style":206},[988],{"type":53,"value":989},"'",{"type":47,"tag":188,"props":991,"children":992},{"style":200},[993],{"type":53,"value":994},"    Call",{"type":47,"tag":188,"props":996,"children":997},{"style":200},[998],{"type":53,"value":999}," a",{"type":47,"tag":188,"props":1001,"children":1002},{"style":200},[1003],{"type":53,"value":1004}," tool\n",{"type":47,"tag":188,"props":1006,"children":1007},{"class":190,"line":634},[1008,1013,1018,1023,1028,1033,1038,1043,1048,1053],{"type":47,"tag":188,"props":1009,"children":1010},{"style":195},[1011],{"type":53,"value":1012},"  login",{"type":47,"tag":188,"props":1014,"children":1015},{"style":200},[1016],{"type":53,"value":1017},"                   Run",{"type":47,"tag":188,"props":1019,"children":1020},{"style":200},[1021],{"type":53,"value":1022}," OAuth",{"type":47,"tag":188,"props":1024,"children":1025},{"style":200},[1026],{"type":53,"value":1027}," flow",{"type":47,"tag":188,"props":1029,"children":1030},{"style":200},[1031],{"type":53,"value":1032}," and",{"type":47,"tag":188,"props":1034,"children":1035},{"style":200},[1036],{"type":53,"value":1037}," cache",{"type":47,"tag":188,"props":1039,"children":1040},{"style":200},[1041],{"type":53,"value":1042}," tokens",{"type":47,"tag":188,"props":1044,"children":1045},{"style":200},[1046],{"type":53,"value":1047}," for",{"type":47,"tag":188,"props":1049,"children":1050},{"style":200},[1051],{"type":53,"value":1052}," this",{"type":47,"tag":188,"props":1054,"children":1055},{"style":200},[1056],{"type":53,"value":1057}," server\n",{"type":47,"tag":188,"props":1059,"children":1061},{"class":190,"line":1060},9,[1062,1067,1073],{"type":47,"tag":188,"props":1063,"children":1064},{"style":217},[1065],{"type":53,"value":1066},"  logout                  Clear cached OAuth tokens ",{"type":47,"tag":188,"props":1068,"children":1070},{"style":1069},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1071],{"type":53,"value":1072},"for",{"type":47,"tag":188,"props":1074,"children":1075},{"style":217},[1076],{"type":53,"value":1077}," this server\n",{"type":47,"tag":188,"props":1079,"children":1081},{"class":190,"line":1080},10,[1082],{"type":47,"tag":188,"props":1083,"children":1084},{"emptyLinePlaceholder":260},[1085],{"type":53,"value":263},{"type":47,"tag":188,"props":1087,"children":1089},{"class":190,"line":1088},11,[1090],{"type":47,"tag":188,"props":1091,"children":1092},{"style":195},[1093],{"type":53,"value":1094},"Options:\n",{"type":47,"tag":188,"props":1096,"children":1098},{"class":190,"line":1097},12,[1099,1104,1108,1113,1117,1122,1127,1132],{"type":47,"tag":188,"props":1100,"children":1101},{"style":195},[1102],{"type":53,"value":1103},"  --header",{"type":47,"tag":188,"props":1105,"children":1106},{"style":206},[1107],{"type":53,"value":331},{"type":47,"tag":188,"props":1109,"children":1110},{"style":200},[1111],{"type":53,"value":1112},"K: V",{"type":47,"tag":188,"props":1114,"children":1115},{"style":206},[1116],{"type":53,"value":341},{"type":47,"tag":188,"props":1118,"children":1119},{"style":200},[1120],{"type":53,"value":1121},"         Add",{"type":47,"tag":188,"props":1123,"children":1124},{"style":200},[1125],{"type":53,"value":1126}," HTTP",{"type":47,"tag":188,"props":1128,"children":1129},{"style":200},[1130],{"type":53,"value":1131}," header",{"type":47,"tag":188,"props":1133,"children":1134},{"style":217},[1135],{"type":53,"value":1136}," (repeatable). Disables auto-OAuth.\n",{"type":47,"tag":188,"props":1138,"children":1140},{"class":190,"line":1139},13,[1141,1146,1150,1155,1159,1163,1168,1173,1177,1182,1186,1191,1195,1200,1204,1209],{"type":47,"tag":188,"props":1142,"children":1143},{"style":195},[1144],{"type":53,"value":1145},"  --auth",{"type":47,"tag":188,"props":1147,"children":1148},{"style":206},[1149],{"type":53,"value":209},{"type":47,"tag":188,"props":1151,"children":1152},{"style":200},[1153],{"type":53,"value":1154},"mod",{"type":47,"tag":188,"props":1156,"children":1157},{"style":217},[1158],{"type":53,"value":609},{"type":47,"tag":188,"props":1160,"children":1161},{"style":206},[1162],{"type":53,"value":225},{"type":47,"tag":188,"props":1164,"children":1165},{"style":206},[1166],{"type":53,"value":1167},"           \"",{"type":47,"tag":188,"props":1169,"children":1170},{"style":200},[1171],{"type":53,"value":1172},"auto",{"type":47,"tag":188,"props":1174,"children":1175},{"style":206},[1176],{"type":53,"value":341},{"type":47,"tag":188,"props":1178,"children":1179},{"style":217},[1180],{"type":53,"value":1181}," (default), ",{"type":47,"tag":188,"props":1183,"children":1184},{"style":206},[1185],{"type":53,"value":341},{"type":47,"tag":188,"props":1187,"children":1188},{"style":200},[1189],{"type":53,"value":1190},"oauth",{"type":47,"tag":188,"props":1192,"children":1193},{"style":206},[1194],{"type":53,"value":341},{"type":47,"tag":188,"props":1196,"children":1197},{"style":217},[1198],{"type":53,"value":1199},", or ",{"type":47,"tag":188,"props":1201,"children":1202},{"style":206},[1203],{"type":53,"value":341},{"type":47,"tag":188,"props":1205,"children":1206},{"style":200},[1207],{"type":53,"value":1208},"none",{"type":47,"tag":188,"props":1210,"children":1211},{"style":206},[1212],{"type":53,"value":1213},"\"\n",{"type":47,"tag":188,"props":1215,"children":1217},{"class":190,"line":1216},14,[1218,1223,1227,1232,1237,1241,1246,1251,1256,1262],{"type":47,"tag":188,"props":1219,"children":1220},{"style":195},[1221],{"type":53,"value":1222},"  --timeout",{"type":47,"tag":188,"props":1224,"children":1225},{"style":206},[1226],{"type":53,"value":209},{"type":47,"tag":188,"props":1228,"children":1229},{"style":200},[1230],{"type":53,"value":1231},"m",{"type":47,"tag":188,"props":1233,"children":1234},{"style":217},[1235],{"type":53,"value":1236},"s",{"type":47,"tag":188,"props":1238,"children":1239},{"style":206},[1240],{"type":53,"value":225},{"type":47,"tag":188,"props":1242,"children":1243},{"style":200},[1244],{"type":53,"value":1245},"          Request",{"type":47,"tag":188,"props":1247,"children":1248},{"style":200},[1249],{"type":53,"value":1250}," timeout",{"type":47,"tag":188,"props":1252,"children":1253},{"style":217},[1254],{"type":53,"value":1255}," (default: ",{"type":47,"tag":188,"props":1257,"children":1259},{"style":1258},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1260],{"type":53,"value":1261},"30000",{"type":47,"tag":188,"props":1263,"children":1264},{"style":217},[1265],{"type":53,"value":1266},")\n",{"type":47,"tag":56,"props":1268,"children":1269},{},[1270],{"type":47,"tag":82,"props":1271,"children":1272},{},[1273],{"type":53,"value":1274},"Examples:",{"type":47,"tag":177,"props":1276,"children":1278},{"className":179,"code":1277,"language":181,"meta":182,"style":182},"# Basic usage\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp list-tools\n\n# With static bearer authentication\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp --header \"Authorization: Bearer KEY\" list-tools\n\n# OAuth-protected server (opens a browser to sign in, then caches tokens)\nnpx tsx mcp-http.ts https:\u002F\u002Fexample.com\u002Fmcp login\nnpx tsx mcp-http.ts https:\u002F\u002Fexample.com\u002Fmcp list-tools\n\n# Call a tool\nnpx tsx mcp-http.ts http:\u002F\u002Flocalhost:3001\u002Fmcp call vault '{\"action\":\"search\",\"query\":\"notes\"}'\n",[1279],{"type":47,"tag":90,"props":1280,"children":1281},{"__ignoreMap":182},[1282,1290,1314,1321,1329,1368,1375,1383,1408,1431,1438,1446],{"type":47,"tag":188,"props":1283,"children":1284},{"class":190,"line":191},[1285],{"type":47,"tag":188,"props":1286,"children":1287},{"style":270},[1288],{"type":53,"value":1289},"# Basic usage\n",{"type":47,"tag":188,"props":1291,"children":1292},{"class":190,"line":256},[1293,1297,1301,1305,1310],{"type":47,"tag":188,"props":1294,"children":1295},{"style":195},[1296],{"type":53,"value":144},{"type":47,"tag":188,"props":1298,"children":1299},{"style":200},[1300],{"type":53,"value":203},{"type":47,"tag":188,"props":1302,"children":1303},{"style":200},[1304],{"type":53,"value":801},{"type":47,"tag":188,"props":1306,"children":1307},{"style":200},[1308],{"type":53,"value":1309}," http:\u002F\u002Flocalhost:3001\u002Fmcp",{"type":47,"tag":188,"props":1311,"children":1312},{"style":200},[1313],{"type":53,"value":253},{"type":47,"tag":188,"props":1315,"children":1316},{"class":190,"line":266},[1317],{"type":47,"tag":188,"props":1318,"children":1319},{"emptyLinePlaceholder":260},[1320],{"type":53,"value":263},{"type":47,"tag":188,"props":1322,"children":1323},{"class":190,"line":276},[1324],{"type":47,"tag":188,"props":1325,"children":1326},{"style":270},[1327],{"type":53,"value":1328},"# With static bearer authentication\n",{"type":47,"tag":188,"props":1330,"children":1331},{"class":190,"line":488},[1332,1336,1340,1344,1348,1352,1356,1360,1364],{"type":47,"tag":188,"props":1333,"children":1334},{"style":195},[1335],{"type":53,"value":144},{"type":47,"tag":188,"props":1337,"children":1338},{"style":200},[1339],{"type":53,"value":203},{"type":47,"tag":188,"props":1341,"children":1342},{"style":200},[1343],{"type":53,"value":801},{"type":47,"tag":188,"props":1345,"children":1346},{"style":200},[1347],{"type":53,"value":1309},{"type":47,"tag":188,"props":1349,"children":1350},{"style":200},[1351],{"type":53,"value":326},{"type":47,"tag":188,"props":1353,"children":1354},{"style":206},[1355],{"type":53,"value":331},{"type":47,"tag":188,"props":1357,"children":1358},{"style":200},[1359],{"type":53,"value":336},{"type":47,"tag":188,"props":1361,"children":1362},{"style":206},[1363],{"type":53,"value":341},{"type":47,"tag":188,"props":1365,"children":1366},{"style":200},[1367],{"type":53,"value":253},{"type":47,"tag":188,"props":1369,"children":1370},{"class":190,"line":617},[1371],{"type":47,"tag":188,"props":1372,"children":1373},{"emptyLinePlaceholder":260},[1374],{"type":53,"value":263},{"type":47,"tag":188,"props":1376,"children":1377},{"class":190,"line":625},[1378],{"type":47,"tag":188,"props":1379,"children":1380},{"style":270},[1381],{"type":53,"value":1382},"# OAuth-protected server (opens a browser to sign in, then caches tokens)\n",{"type":47,"tag":188,"props":1384,"children":1385},{"class":190,"line":634},[1386,1390,1394,1398,1403],{"type":47,"tag":188,"props":1387,"children":1388},{"style":195},[1389],{"type":53,"value":144},{"type":47,"tag":188,"props":1391,"children":1392},{"style":200},[1393],{"type":53,"value":203},{"type":47,"tag":188,"props":1395,"children":1396},{"style":200},[1397],{"type":53,"value":801},{"type":47,"tag":188,"props":1399,"children":1400},{"style":200},[1401],{"type":53,"value":1402}," https:\u002F\u002Fexample.com\u002Fmcp",{"type":47,"tag":188,"props":1404,"children":1405},{"style":200},[1406],{"type":53,"value":1407}," login\n",{"type":47,"tag":188,"props":1409,"children":1410},{"class":190,"line":1060},[1411,1415,1419,1423,1427],{"type":47,"tag":188,"props":1412,"children":1413},{"style":195},[1414],{"type":53,"value":144},{"type":47,"tag":188,"props":1416,"children":1417},{"style":200},[1418],{"type":53,"value":203},{"type":47,"tag":188,"props":1420,"children":1421},{"style":200},[1422],{"type":53,"value":801},{"type":47,"tag":188,"props":1424,"children":1425},{"style":200},[1426],{"type":53,"value":1402},{"type":47,"tag":188,"props":1428,"children":1429},{"style":200},[1430],{"type":53,"value":253},{"type":47,"tag":188,"props":1432,"children":1433},{"class":190,"line":1080},[1434],{"type":47,"tag":188,"props":1435,"children":1436},{"emptyLinePlaceholder":260},[1437],{"type":53,"value":263},{"type":47,"tag":188,"props":1439,"children":1440},{"class":190,"line":1088},[1441],{"type":47,"tag":188,"props":1442,"children":1443},{"style":270},[1444],{"type":53,"value":1445},"# Call a tool\n",{"type":47,"tag":188,"props":1447,"children":1448},{"class":190,"line":1097},[1449,1453,1457,1461,1465,1469,1474,1478,1483],{"type":47,"tag":188,"props":1450,"children":1451},{"style":195},[1452],{"type":53,"value":144},{"type":47,"tag":188,"props":1454,"children":1455},{"style":200},[1456],{"type":53,"value":203},{"type":47,"tag":188,"props":1458,"children":1459},{"style":200},[1460],{"type":53,"value":801},{"type":47,"tag":188,"props":1462,"children":1463},{"style":200},[1464],{"type":53,"value":1309},{"type":47,"tag":188,"props":1466,"children":1467},{"style":200},[1468],{"type":53,"value":644},{"type":47,"tag":188,"props":1470,"children":1471},{"style":200},[1472],{"type":53,"value":1473}," vault",{"type":47,"tag":188,"props":1475,"children":1476},{"style":206},[1477],{"type":53,"value":665},{"type":47,"tag":188,"props":1479,"children":1480},{"style":200},[1481],{"type":53,"value":1482},"{\"action\":\"search\",\"query\":\"notes\"}",{"type":47,"tag":188,"props":1484,"children":1485},{"style":206},[1486],{"type":53,"value":675},{"type":47,"tag":56,"props":1488,"children":1489},{},[1490,1495,1497,1503,1505,1511,1513,1519],{"type":47,"tag":82,"props":1491,"children":1492},{},[1493],{"type":53,"value":1494},"OAuth support:",{"type":53,"value":1496},"\nWhen a server returns ",{"type":47,"tag":90,"props":1498,"children":1500},{"className":1499},[],[1501],{"type":53,"value":1502},"401 WWW-Authenticate: Bearer ...",{"type":53,"value":1504}," and no static\n",{"type":47,"tag":90,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":53,"value":1510},"Authorization",{"type":53,"value":1512}," header was supplied, ",{"type":47,"tag":90,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":53,"value":1518},"mcp-http.ts",{"type":53,"value":1520}," will automatically:",{"type":47,"tag":1522,"props":1523,"children":1524},"ol",{},[1525,1562,1574,1587,1608],{"type":47,"tag":78,"props":1526,"children":1527},{},[1528,1530,1536,1538,1544,1546,1552,1554,1560],{"type":53,"value":1529},"Discover the authorization server via ",{"type":47,"tag":90,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":53,"value":1535},"resource_metadata",{"type":53,"value":1537},", the\n",{"type":47,"tag":90,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":53,"value":1543},"realm=",{"type":53,"value":1545}," param, or the server's own origin (",{"type":47,"tag":90,"props":1547,"children":1549},{"className":1548},[],[1550],{"type":53,"value":1551},".well-known\u002Foauth-authorization-server",{"type":53,"value":1553},"\nthen ",{"type":47,"tag":90,"props":1555,"children":1557},{"className":1556},[],[1558],{"type":53,"value":1559},".well-known\u002Fopenid-configuration",{"type":53,"value":1561},").",{"type":47,"tag":78,"props":1563,"children":1564},{},[1565,1567,1573],{"type":53,"value":1566},"Dynamically register a public client with PKCE (",{"type":47,"tag":90,"props":1568,"children":1570},{"className":1569},[],[1571],{"type":53,"value":1572},"token_endpoint_auth_method: none",{"type":53,"value":1561},{"type":47,"tag":78,"props":1575,"children":1576},{},[1577,1579,1585],{"type":53,"value":1578},"Open the system browser to the authorization endpoint, catch the redirect\non a ",{"type":47,"tag":90,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":53,"value":1584},"127.0.0.1",{"type":53,"value":1586}," loopback port, and exchange the code for tokens.",{"type":47,"tag":78,"props":1588,"children":1589},{},[1590,1592,1598,1600,1606],{"type":53,"value":1591},"Cache the token set (and the registered client) at\n",{"type":47,"tag":90,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":53,"value":1597},"~\u002F.letta\u002Fmcp-oauth\u002F\u003Chost>_\u003Cpath>.json",{"type":53,"value":1599}," with ",{"type":47,"tag":90,"props":1601,"children":1603},{"className":1602},[],[1604],{"type":53,"value":1605},"0600",{"type":53,"value":1607}," perms.",{"type":47,"tag":78,"props":1609,"children":1610},{},[1611],{"type":53,"value":1612},"Auto-refresh expired access tokens using the stored refresh token before\neach request; if refresh fails, it re-runs the browser flow once.",{"type":47,"tag":56,"props":1614,"children":1615},{},[1616,1618,1624,1626,1632,1634,1640,1642,1648],{"type":53,"value":1617},"Use ",{"type":47,"tag":90,"props":1619,"children":1621},{"className":1620},[],[1622],{"type":53,"value":1623},"login",{"type":53,"value":1625}," to run the flow explicitly (e.g. as a first step in a skill's\nsetup) and ",{"type":47,"tag":90,"props":1627,"children":1629},{"className":1628},[],[1630],{"type":53,"value":1631},"logout",{"type":53,"value":1633}," to clear cached tokens. Passing an explicit\n",{"type":47,"tag":90,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":53,"value":1639},"--header \"Authorization: ...\"",{"type":53,"value":1641}," disables auto-OAuth so you stay in control.\nPass ",{"type":47,"tag":90,"props":1643,"children":1645},{"className":1644},[],[1646],{"type":53,"value":1647},"--auth none",{"type":53,"value":1649}," to force static-only behavior.",{"type":47,"tag":115,"props":1651,"children":1653},{"id":1652},"mcp-stdiots-stdio-transport",[1654],{"type":53,"value":1655},"mcp-stdio.ts - stdio Transport",{"type":47,"tag":56,"props":1657,"children":1658},{},[1659],{"type":53,"value":1660},"Connects to MCP servers that run as subprocesses. No dependencies required.",{"type":47,"tag":177,"props":1662,"children":1664},{"className":179,"code":1663,"language":181,"meta":182,"style":182},"npx tsx mcp-stdio.ts \"\u003Ccommand>\" [options] \u003Caction> [args]\n\nActions:\n  list-tools              List available tools\n  list-resources          List available resources\n  info \u003Ctool>             Show tool schema\n  call \u003Ctool> '\u003Cjson>'    Call a tool\n\nOptions:\n  --env \"KEY=VALUE\"       Set environment variable (repeatable)\n  --cwd \u003Cpath>            Set working directory\n  --timeout \u003Cms>          Request timeout (default: 30000)\n",[1665],{"type":47,"tag":90,"props":1666,"children":1667},{"__ignoreMap":182},[1668,1725,1732,1740,1759,1778,1813,1860,1867,1874,1915,1956],{"type":47,"tag":188,"props":1669,"children":1670},{"class":190,"line":191},[1671,1675,1679,1684,1688,1692,1696,1700,1704,1709,1713,1717,1721],{"type":47,"tag":188,"props":1672,"children":1673},{"style":195},[1674],{"type":53,"value":144},{"type":47,"tag":188,"props":1676,"children":1677},{"style":200},[1678],{"type":53,"value":203},{"type":47,"tag":188,"props":1680,"children":1681},{"style":200},[1682],{"type":53,"value":1683}," mcp-stdio.ts",{"type":47,"tag":188,"props":1685,"children":1686},{"style":206},[1687],{"type":53,"value":331},{"type":47,"tag":188,"props":1689,"children":1690},{"style":200},[1691],{"type":53,"value":414},{"type":47,"tag":188,"props":1693,"children":1694},{"style":206},[1695],{"type":53,"value":341},{"type":47,"tag":188,"props":1697,"children":1698},{"style":217},[1699],{"type":53,"value":822},{"type":47,"tag":188,"props":1701,"children":1702},{"style":206},[1703],{"type":53,"value":827},{"type":47,"tag":188,"props":1705,"children":1706},{"style":217},[1707],{"type":53,"value":1708},"action",{"type":47,"tag":188,"props":1710,"children":1711},{"style":206},[1712],{"type":53,"value":225},{"type":47,"tag":188,"props":1714,"children":1715},{"style":206},[1716],{"type":53,"value":841},{"type":47,"tag":188,"props":1718,"children":1719},{"style":217},[1720],{"type":53,"value":846},{"type":47,"tag":188,"props":1722,"children":1723},{"style":206},[1724],{"type":53,"value":851},{"type":47,"tag":188,"props":1726,"children":1727},{"class":190,"line":256},[1728],{"type":47,"tag":188,"props":1729,"children":1730},{"emptyLinePlaceholder":260},[1731],{"type":53,"value":263},{"type":47,"tag":188,"props":1733,"children":1734},{"class":190,"line":266},[1735],{"type":47,"tag":188,"props":1736,"children":1737},{"style":195},[1738],{"type":53,"value":1739},"Actions:\n",{"type":47,"tag":188,"props":1741,"children":1742},{"class":190,"line":276},[1743,1747,1751,1755],{"type":47,"tag":188,"props":1744,"children":1745},{"style":195},[1746],{"type":53,"value":874},{"type":47,"tag":188,"props":1748,"children":1749},{"style":200},[1750],{"type":53,"value":879},{"type":47,"tag":188,"props":1752,"children":1753},{"style":200},[1754],{"type":53,"value":884},{"type":47,"tag":188,"props":1756,"children":1757},{"style":200},[1758],{"type":53,"value":889},{"type":47,"tag":188,"props":1760,"children":1761},{"class":190,"line":488},[1762,1766,1770,1774],{"type":47,"tag":188,"props":1763,"children":1764},{"style":195},[1765],{"type":53,"value":897},{"type":47,"tag":188,"props":1767,"children":1768},{"style":200},[1769],{"type":53,"value":902},{"type":47,"tag":188,"props":1771,"children":1772},{"style":200},[1773],{"type":53,"value":884},{"type":47,"tag":188,"props":1775,"children":1776},{"style":200},[1777],{"type":53,"value":911},{"type":47,"tag":188,"props":1779,"children":1780},{"class":190,"line":617},[1781,1785,1789,1793,1797,1801,1805,1809],{"type":47,"tag":188,"props":1782,"children":1783},{"style":195},[1784],{"type":53,"value":919},{"type":47,"tag":188,"props":1786,"children":1787},{"style":206},[1788],{"type":53,"value":209},{"type":47,"tag":188,"props":1790,"children":1791},{"style":200},[1792],{"type":53,"value":928},{"type":47,"tag":188,"props":1794,"children":1795},{"style":217},[1796],{"type":53,"value":244},{"type":47,"tag":188,"props":1798,"children":1799},{"style":206},[1800],{"type":53,"value":225},{"type":47,"tag":188,"props":1802,"children":1803},{"style":200},[1804],{"type":53,"value":941},{"type":47,"tag":188,"props":1806,"children":1807},{"style":200},[1808],{"type":53,"value":946},{"type":47,"tag":188,"props":1810,"children":1811},{"style":200},[1812],{"type":53,"value":951},{"type":47,"tag":188,"props":1814,"children":1815},{"class":190,"line":625},[1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856],{"type":47,"tag":188,"props":1817,"children":1818},{"style":195},[1819],{"type":53,"value":959},{"type":47,"tag":188,"props":1821,"children":1822},{"style":206},[1823],{"type":53,"value":209},{"type":47,"tag":188,"props":1825,"children":1826},{"style":200},[1827],{"type":53,"value":928},{"type":47,"tag":188,"props":1829,"children":1830},{"style":217},[1831],{"type":53,"value":244},{"type":47,"tag":188,"props":1833,"children":1834},{"style":206},[1835],{"type":53,"value":225},{"type":47,"tag":188,"props":1837,"children":1838},{"style":206},[1839],{"type":53,"value":665},{"type":47,"tag":188,"props":1841,"children":1842},{"style":200},[1843],{"type":53,"value":984},{"type":47,"tag":188,"props":1845,"children":1846},{"style":206},[1847],{"type":53,"value":989},{"type":47,"tag":188,"props":1849,"children":1850},{"style":200},[1851],{"type":53,"value":994},{"type":47,"tag":188,"props":1853,"children":1854},{"style":200},[1855],{"type":53,"value":999},{"type":47,"tag":188,"props":1857,"children":1858},{"style":200},[1859],{"type":53,"value":1004},{"type":47,"tag":188,"props":1861,"children":1862},{"class":190,"line":634},[1863],{"type":47,"tag":188,"props":1864,"children":1865},{"emptyLinePlaceholder":260},[1866],{"type":53,"value":263},{"type":47,"tag":188,"props":1868,"children":1869},{"class":190,"line":1060},[1870],{"type":47,"tag":188,"props":1871,"children":1872},{"style":195},[1873],{"type":53,"value":1094},{"type":47,"tag":188,"props":1875,"children":1876},{"class":190,"line":1080},[1877,1882,1886,1891,1895,1900,1905,1910],{"type":47,"tag":188,"props":1878,"children":1879},{"style":195},[1880],{"type":53,"value":1881},"  --env",{"type":47,"tag":188,"props":1883,"children":1884},{"style":206},[1885],{"type":53,"value":331},{"type":47,"tag":188,"props":1887,"children":1888},{"style":200},[1889],{"type":53,"value":1890},"KEY=VALUE",{"type":47,"tag":188,"props":1892,"children":1893},{"style":206},[1894],{"type":53,"value":341},{"type":47,"tag":188,"props":1896,"children":1897},{"style":200},[1898],{"type":53,"value":1899},"       Set",{"type":47,"tag":188,"props":1901,"children":1902},{"style":200},[1903],{"type":53,"value":1904}," environment",{"type":47,"tag":188,"props":1906,"children":1907},{"style":200},[1908],{"type":53,"value":1909}," variable",{"type":47,"tag":188,"props":1911,"children":1912},{"style":217},[1913],{"type":53,"value":1914}," (repeatable)\n",{"type":47,"tag":188,"props":1916,"children":1917},{"class":190,"line":1088},[1918,1923,1927,1932,1937,1941,1946,1951],{"type":47,"tag":188,"props":1919,"children":1920},{"style":195},[1921],{"type":53,"value":1922},"  --cwd",{"type":47,"tag":188,"props":1924,"children":1925},{"style":206},[1926],{"type":53,"value":209},{"type":47,"tag":188,"props":1928,"children":1929},{"style":200},[1930],{"type":53,"value":1931},"pat",{"type":47,"tag":188,"props":1933,"children":1934},{"style":217},[1935],{"type":53,"value":1936},"h",{"type":47,"tag":188,"props":1938,"children":1939},{"style":206},[1940],{"type":53,"value":225},{"type":47,"tag":188,"props":1942,"children":1943},{"style":200},[1944],{"type":53,"value":1945},"            Set",{"type":47,"tag":188,"props":1947,"children":1948},{"style":200},[1949],{"type":53,"value":1950}," working",{"type":47,"tag":188,"props":1952,"children":1953},{"style":200},[1954],{"type":53,"value":1955}," directory\n",{"type":47,"tag":188,"props":1957,"children":1958},{"class":190,"line":1097},[1959,1963,1967,1971,1975,1979,1983,1987,1991,1995],{"type":47,"tag":188,"props":1960,"children":1961},{"style":195},[1962],{"type":53,"value":1222},{"type":47,"tag":188,"props":1964,"children":1965},{"style":206},[1966],{"type":53,"value":209},{"type":47,"tag":188,"props":1968,"children":1969},{"style":200},[1970],{"type":53,"value":1231},{"type":47,"tag":188,"props":1972,"children":1973},{"style":217},[1974],{"type":53,"value":1236},{"type":47,"tag":188,"props":1976,"children":1977},{"style":206},[1978],{"type":53,"value":225},{"type":47,"tag":188,"props":1980,"children":1981},{"style":200},[1982],{"type":53,"value":1245},{"type":47,"tag":188,"props":1984,"children":1985},{"style":200},[1986],{"type":53,"value":1250},{"type":47,"tag":188,"props":1988,"children":1989},{"style":217},[1990],{"type":53,"value":1255},{"type":47,"tag":188,"props":1992,"children":1993},{"style":1258},[1994],{"type":53,"value":1261},{"type":47,"tag":188,"props":1996,"children":1997},{"style":217},[1998],{"type":53,"value":1266},{"type":47,"tag":56,"props":2000,"children":2001},{},[2002],{"type":47,"tag":82,"props":2003,"children":2004},{},[2005],{"type":53,"value":1274},{"type":47,"tag":177,"props":2007,"children":2009},{"className":179,"code":2008,"language":181,"meta":182,"style":182},"# Filesystem server\nnpx tsx mcp-stdio.ts \"npx -y @modelcontextprotocol\u002Fserver-filesystem .\" list-tools\n\n# With environment variable\nnpx tsx mcp-stdio.ts \"node server.js\" --env \"API_KEY=xxx\" list-tools\n\n# Call a tool\nnpx tsx mcp-stdio.ts \"python server.py\" call read_file '{\"path\":\".\u002FREADME.md\"}'\n",[2010],{"type":47,"tag":90,"props":2011,"children":2012},{"__ignoreMap":182},[2013,2021,2052,2059,2067,2117,2124,2131],{"type":47,"tag":188,"props":2014,"children":2015},{"class":190,"line":191},[2016],{"type":47,"tag":188,"props":2017,"children":2018},{"style":270},[2019],{"type":53,"value":2020},"# Filesystem server\n",{"type":47,"tag":188,"props":2022,"children":2023},{"class":190,"line":256},[2024,2028,2032,2036,2040,2044,2048],{"type":47,"tag":188,"props":2025,"children":2026},{"style":195},[2027],{"type":53,"value":144},{"type":47,"tag":188,"props":2029,"children":2030},{"style":200},[2031],{"type":53,"value":203},{"type":47,"tag":188,"props":2033,"children":2034},{"style":200},[2035],{"type":53,"value":1683},{"type":47,"tag":188,"props":2037,"children":2038},{"style":206},[2039],{"type":53,"value":331},{"type":47,"tag":188,"props":2041,"children":2042},{"style":200},[2043],{"type":53,"value":477},{"type":47,"tag":188,"props":2045,"children":2046},{"style":206},[2047],{"type":53,"value":341},{"type":47,"tag":188,"props":2049,"children":2050},{"style":200},[2051],{"type":53,"value":253},{"type":47,"tag":188,"props":2053,"children":2054},{"class":190,"line":266},[2055],{"type":47,"tag":188,"props":2056,"children":2057},{"emptyLinePlaceholder":260},[2058],{"type":53,"value":263},{"type":47,"tag":188,"props":2060,"children":2061},{"class":190,"line":276},[2062],{"type":47,"tag":188,"props":2063,"children":2064},{"style":270},[2065],{"type":53,"value":2066},"# With environment variable\n",{"type":47,"tag":188,"props":2068,"children":2069},{"class":190,"line":488},[2070,2074,2078,2082,2086,2091,2095,2100,2104,2109,2113],{"type":47,"tag":188,"props":2071,"children":2072},{"style":195},[2073],{"type":53,"value":144},{"type":47,"tag":188,"props":2075,"children":2076},{"style":200},[2077],{"type":53,"value":203},{"type":47,"tag":188,"props":2079,"children":2080},{"style":200},[2081],{"type":53,"value":1683},{"type":47,"tag":188,"props":2083,"children":2084},{"style":206},[2085],{"type":53,"value":331},{"type":47,"tag":188,"props":2087,"children":2088},{"style":200},[2089],{"type":53,"value":2090},"node server.js",{"type":47,"tag":188,"props":2092,"children":2093},{"style":206},[2094],{"type":53,"value":341},{"type":47,"tag":188,"props":2096,"children":2097},{"style":200},[2098],{"type":53,"value":2099}," --env",{"type":47,"tag":188,"props":2101,"children":2102},{"style":206},[2103],{"type":53,"value":331},{"type":47,"tag":188,"props":2105,"children":2106},{"style":200},[2107],{"type":53,"value":2108},"API_KEY=xxx",{"type":47,"tag":188,"props":2110,"children":2111},{"style":206},[2112],{"type":53,"value":341},{"type":47,"tag":188,"props":2114,"children":2115},{"style":200},[2116],{"type":53,"value":253},{"type":47,"tag":188,"props":2118,"children":2119},{"class":190,"line":617},[2120],{"type":47,"tag":188,"props":2121,"children":2122},{"emptyLinePlaceholder":260},[2123],{"type":53,"value":263},{"type":47,"tag":188,"props":2125,"children":2126},{"class":190,"line":625},[2127],{"type":47,"tag":188,"props":2128,"children":2129},{"style":270},[2130],{"type":53,"value":1445},{"type":47,"tag":188,"props":2132,"children":2133},{"class":190,"line":634},[2134,2138,2142,2146,2150,2154,2158,2162,2167,2171,2176],{"type":47,"tag":188,"props":2135,"children":2136},{"style":195},[2137],{"type":53,"value":144},{"type":47,"tag":188,"props":2139,"children":2140},{"style":200},[2141],{"type":53,"value":203},{"type":47,"tag":188,"props":2143,"children":2144},{"style":200},[2145],{"type":53,"value":1683},{"type":47,"tag":188,"props":2147,"children":2148},{"style":206},[2149],{"type":53,"value":331},{"type":47,"tag":188,"props":2151,"children":2152},{"style":200},[2153],{"type":53,"value":526},{"type":47,"tag":188,"props":2155,"children":2156},{"style":206},[2157],{"type":53,"value":341},{"type":47,"tag":188,"props":2159,"children":2160},{"style":200},[2161],{"type":53,"value":644},{"type":47,"tag":188,"props":2163,"children":2164},{"style":200},[2165],{"type":53,"value":2166}," read_file",{"type":47,"tag":188,"props":2168,"children":2169},{"style":206},[2170],{"type":53,"value":665},{"type":47,"tag":188,"props":2172,"children":2173},{"style":200},[2174],{"type":53,"value":2175},"{\"path\":\".\u002FREADME.md\"}",{"type":47,"tag":188,"props":2177,"children":2178},{"style":206},[2179],{"type":53,"value":675},{"type":47,"tag":62,"props":2181,"children":2183},{"id":2182},"common-mcp-servers",[2184],{"type":53,"value":2185},"Common MCP Servers",{"type":47,"tag":56,"props":2187,"children":2188},{},[2189],{"type":53,"value":2190},"Here are some well-known MCP servers:",{"type":47,"tag":2192,"props":2193,"children":2194},"table",{},[2195,2219],{"type":47,"tag":2196,"props":2197,"children":2198},"thead",{},[2199],{"type":47,"tag":2200,"props":2201,"children":2202},"tr",{},[2203,2209,2214],{"type":47,"tag":2204,"props":2205,"children":2206},"th",{},[2207],{"type":53,"value":2208},"Server",{"type":47,"tag":2204,"props":2210,"children":2211},{},[2212],{"type":53,"value":2213},"Transport",{"type":47,"tag":2204,"props":2215,"children":2216},{},[2217],{"type":53,"value":2218},"Command\u002FURL",{"type":47,"tag":2220,"props":2221,"children":2222},"tbody",{},[2223,2245,2266,2287],{"type":47,"tag":2200,"props":2224,"children":2225},{},[2226,2232,2236],{"type":47,"tag":2227,"props":2228,"children":2229},"td",{},[2230],{"type":53,"value":2231},"Filesystem",{"type":47,"tag":2227,"props":2233,"children":2234},{},[2235],{"type":53,"value":105},{"type":47,"tag":2227,"props":2237,"children":2238},{},[2239],{"type":47,"tag":90,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":53,"value":2244},"npx -y @modelcontextprotocol\u002Fserver-filesystem \u003Cpath>",{"type":47,"tag":2200,"props":2246,"children":2247},{},[2248,2253,2257],{"type":47,"tag":2227,"props":2249,"children":2250},{},[2251],{"type":53,"value":2252},"GitHub",{"type":47,"tag":2227,"props":2254,"children":2255},{},[2256],{"type":53,"value":105},{"type":47,"tag":2227,"props":2258,"children":2259},{},[2260],{"type":47,"tag":90,"props":2261,"children":2263},{"className":2262},[],[2264],{"type":53,"value":2265},"npx -y @modelcontextprotocol\u002Fserver-github",{"type":47,"tag":2200,"props":2267,"children":2268},{},[2269,2274,2278],{"type":47,"tag":2227,"props":2270,"children":2271},{},[2272],{"type":53,"value":2273},"Brave Search",{"type":47,"tag":2227,"props":2275,"children":2276},{},[2277],{"type":53,"value":105},{"type":47,"tag":2227,"props":2279,"children":2280},{},[2281],{"type":47,"tag":90,"props":2282,"children":2284},{"className":2283},[],[2285],{"type":53,"value":2286},"npx -y @modelcontextprotocol\u002Fserver-brave-search",{"type":47,"tag":2200,"props":2288,"children":2289},{},[2290,2295,2299],{"type":47,"tag":2227,"props":2291,"children":2292},{},[2293],{"type":53,"value":2294},"obsidian-mcp-plugin",{"type":47,"tag":2227,"props":2296,"children":2297},{},[2298],{"type":53,"value":86},{"type":47,"tag":2227,"props":2300,"children":2301},{},[2302],{"type":47,"tag":90,"props":2303,"children":2305},{"className":2304},[],[2306],{"type":53,"value":95},{"type":47,"tag":62,"props":2308,"children":2310},{"id":2309},"troubleshooting",[2311],{"type":53,"value":2312},"Troubleshooting",{"type":47,"tag":56,"props":2314,"children":2315},{},[2316],{"type":47,"tag":82,"props":2317,"children":2318},{},[2319],{"type":53,"value":2320},"\"Cannot connect\" error:",{"type":47,"tag":74,"props":2322,"children":2323},{},[2324,2329],{"type":47,"tag":78,"props":2325,"children":2326},{},[2327],{"type":53,"value":2328},"For HTTP: Check the URL is correct and server is running",{"type":47,"tag":78,"props":2330,"children":2331},{},[2332],{"type":53,"value":2333},"For stdio: Check the command works when run directly in terminal",{"type":47,"tag":56,"props":2335,"children":2336},{},[2337],{"type":47,"tag":82,"props":2338,"children":2339},{},[2340],{"type":53,"value":2341},"\"Authentication required\" error:",{"type":47,"tag":74,"props":2343,"children":2344},{},[2345,2358,2371],{"type":47,"tag":78,"props":2346,"children":2347},{},[2348,2350,2356],{"type":53,"value":2349},"Add ",{"type":47,"tag":90,"props":2351,"children":2353},{"className":2352},[],[2354],{"type":53,"value":2355},"--header \"Authorization: Bearer YOUR_KEY\"",{"type":53,"value":2357}," for HTTP servers using static bearers",{"type":47,"tag":78,"props":2359,"children":2360},{},[2361,2363,2369],{"type":53,"value":2362},"Or ",{"type":47,"tag":90,"props":2364,"children":2366},{"className":2365},[],[2367],{"type":53,"value":2368},"--env \"API_KEY=xxx\"",{"type":53,"value":2370}," for stdio servers that need env vars",{"type":47,"tag":78,"props":2372,"children":2373},{},[2374,2376,2381,2383,2389,2391,2396],{"type":53,"value":2375},"For OAuth-protected HTTP servers, just run any command (or ",{"type":47,"tag":90,"props":2377,"children":2379},{"className":2378},[],[2380],{"type":53,"value":1623},{"type":53,"value":2382},") — the helper\nwill do PKCE + dynamic client registration and cache tokens under\n",{"type":47,"tag":90,"props":2384,"children":2386},{"className":2385},[],[2387],{"type":53,"value":2388},"~\u002F.letta\u002Fmcp-oauth\u002F",{"type":53,"value":2390},". Delete that file (or run ",{"type":47,"tag":90,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":53,"value":1631},{"type":53,"value":2397},") to force a re-login.",{"type":47,"tag":56,"props":2399,"children":2400},{},[2401],{"type":47,"tag":82,"props":2402,"children":2403},{},[2404],{"type":53,"value":2405},"OAuth issues:",{"type":47,"tag":74,"props":2407,"children":2408},{},[2409,2435,2448],{"type":47,"tag":78,"props":2410,"children":2411},{},[2412,2414,2419,2421,2426,2428,2433],{"type":53,"value":2413},"\"Could not discover OAuth server metadata\": the server didn't include\n",{"type":47,"tag":90,"props":2415,"children":2417},{"className":2416},[],[2418],{"type":53,"value":1535},{"type":53,"value":2420}," and its origin doesn't serve ",{"type":47,"tag":90,"props":2422,"children":2424},{"className":2423},[],[2425],{"type":53,"value":1551},{"type":53,"value":2427},"\nor ",{"type":47,"tag":90,"props":2429,"children":2431},{"className":2430},[],[2432],{"type":53,"value":1559},{"type":53,"value":2434},". Fall back to a static bearer, or point the\nhelper at the auth server manually via a custom skill.",{"type":47,"tag":78,"props":2436,"children":2437},{},[2438,2440,2446],{"type":53,"value":2439},"\"Dynamic client registration failed\": the auth server disables open DCR.\nYou'll need to pre-register a client and pass its ",{"type":47,"tag":90,"props":2441,"children":2443},{"className":2442},[],[2444],{"type":53,"value":2445},"client_id",{"type":53,"value":2447}," (and any required\ncredentials) via headers, or wrap this skill with a server-specific one.",{"type":47,"tag":78,"props":2449,"children":2450},{},[2451],{"type":53,"value":2452},"\"state mismatch\" \u002F callback timeout: another process may be holding the browser\ncallback; re-run and complete the sign-in in the newly opened tab.",{"type":47,"tag":56,"props":2454,"children":2455},{},[2456],{"type":47,"tag":82,"props":2457,"children":2458},{},[2459],{"type":53,"value":2460},"Tool call fails:",{"type":47,"tag":74,"props":2462,"children":2463},{},[2464,2476],{"type":47,"tag":78,"props":2465,"children":2466},{},[2467,2468,2474],{"type":53,"value":1617},{"type":47,"tag":90,"props":2469,"children":2471},{"className":2470},[],[2472],{"type":53,"value":2473},"info \u003Ctool>",{"type":53,"value":2475}," to see the expected input schema",{"type":47,"tag":78,"props":2477,"children":2478},{},[2479],{"type":53,"value":2480},"Ensure JSON arguments match the schema",{"type":47,"tag":2482,"props":2483,"children":2484},"style",{},[2485],{"type":53,"value":2486},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2488,"total":2570},[2489,2500,2515,2521,2533,2547,2559],{"slug":2490,"name":2490,"fn":2491,"description":2492,"org":2493,"tags":2494,"stars":23,"repoUrl":24,"updatedAt":2499},"acquiring-skills","discover and install agent skills","Discover and install skills from Hermes, ClawHub, GitHub, and other registries. Load this skill whenever a user asks for a capability you don't already have — image generation, social media, email, calendar, finance, DevOps, search, browser automation, etc.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2495,2496,2497],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2252,"slug":2498,"type":16},"github","2026-07-13T06:22:58.45767",{"slug":2501,"name":2502,"fn":2503,"description":2504,"org":2505,"tags":2506,"stars":23,"repoUrl":24,"updatedAt":2514},"context-doctor","Context Doctor","repair system prompt and memory degradation","Identify and repair degradation in system prompt, external memory, and skills preventing you from following instructions or remembering information as well as you should.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2507,2508,2511],{"name":21,"slug":22,"type":16},{"name":2509,"slug":2510,"type":16},"AI Context","ai-context",{"name":2512,"slug":2513,"type":16},"Debugging","debugging","2026-07-13T06:22:50.151002",{"slug":4,"name":4,"fn":5,"description":6,"org":2516,"tags":2517,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2518,2519,2520],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"slug":2522,"name":2522,"fn":2523,"description":2524,"org":2525,"tags":2526,"stars":23,"repoUrl":24,"updatedAt":2532},"creating-mods","create and edit Letta Code mods","Creates and edits trusted local Letta Code mods, including tools, slash commands, local-only model providers, lifecycle\u002Fturn events, scoped conversation helpers, panels, and capability-gated behavior. Use when asked to make a mod, add an agent-callable tool, add a slash command, add a local provider\u002Fmodel adapter, transform turns, react to app events, or add lightweight mod UI outside the dedicated \u002Fstatusline flow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2527,2528,2529],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2530,"slug":2531,"type":16},"Coding","coding","2026-07-23T05:42:38.133565",{"slug":2534,"name":2534,"fn":2535,"description":2536,"org":2537,"tags":2538,"stars":23,"repoUrl":24,"updatedAt":2546},"creating-skills","create and update agent skills","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Letta Code's capabilities with specialized knowledge, workflows, or tool integrations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2539,2540,2543],{"name":21,"slug":22,"type":16},{"name":2541,"slug":2542,"type":16},"Documentation","documentation",{"name":2544,"slug":2545,"type":16},"Plugin Development","plugin-development","2026-07-13T06:22:56.998659",{"slug":2548,"name":2548,"fn":2549,"description":2550,"org":2551,"tags":2552,"stars":23,"repoUrl":24,"updatedAt":2558},"customizing-commands","create and manage Letta slash commands","Creates, edits, and enables Letta Code mod-provided slash commands. Use when the user asks to add a custom \u002Fcommand, slash command, command shortcut, scoped conversation-backed command, or command-driven panel behavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2553,2554,2555],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2556,"slug":2557,"type":16},"CLI","cli","2026-07-13T06:23:18.266798",{"slug":2560,"name":2560,"fn":2561,"description":2562,"org":2563,"tags":2564,"stars":23,"repoUrl":24,"updatedAt":2569},"customizing-statusline","customize Letta Code statusline mods","Creates, edits, and migrates Letta Code statusline mods. Use when handling the \u002Fstatusline command or continuing work started by \u002Fstatusline.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2565,2566],{"name":2556,"slug":2557,"type":16},{"name":2567,"slug":2568,"type":16},"Engineering","engineering","2026-07-13T06:23:27.465985",19,{"items":2572,"total":2680},[2573,2579,2585,2591,2597,2603,2609,2614,2626,2642,2653,2665],{"slug":2490,"name":2490,"fn":2491,"description":2492,"org":2574,"tags":2575,"stars":23,"repoUrl":24,"updatedAt":2499},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2576,2577,2578],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2252,"slug":2498,"type":16},{"slug":2501,"name":2502,"fn":2503,"description":2504,"org":2580,"tags":2581,"stars":23,"repoUrl":24,"updatedAt":2514},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2582,2583,2584],{"name":21,"slug":22,"type":16},{"name":2509,"slug":2510,"type":16},{"name":2512,"slug":2513,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":2586,"tags":2587,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2588,2589,2590],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"slug":2522,"name":2522,"fn":2523,"description":2524,"org":2592,"tags":2593,"stars":23,"repoUrl":24,"updatedAt":2532},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2594,2595,2596],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2530,"slug":2531,"type":16},{"slug":2534,"name":2534,"fn":2535,"description":2536,"org":2598,"tags":2599,"stars":23,"repoUrl":24,"updatedAt":2546},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2600,2601,2602],{"name":21,"slug":22,"type":16},{"name":2541,"slug":2542,"type":16},{"name":2544,"slug":2545,"type":16},{"slug":2548,"name":2548,"fn":2549,"description":2550,"org":2604,"tags":2605,"stars":23,"repoUrl":24,"updatedAt":2558},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2606,2607,2608],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":2556,"slug":2557,"type":16},{"slug":2560,"name":2560,"fn":2561,"description":2562,"org":2610,"tags":2611,"stars":23,"repoUrl":24,"updatedAt":2569},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2612,2613],{"name":2556,"slug":2557,"type":16},{"name":2567,"slug":2568,"type":16},{"slug":2615,"name":2615,"fn":2616,"description":2617,"org":2618,"tags":2619,"stars":23,"repoUrl":24,"updatedAt":2625},"dispatching-coding-agents","dispatch stateless coding agents","Dispatch stateless coding agents (Claude Code or Codex) via Bash. Use when you're stuck, need a second opinion, or need parallel research on a hard problem. They have no memory — you must provide all context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2620,2621,2622],{"name":21,"slug":22,"type":16},{"name":2530,"slug":2531,"type":16},{"name":2623,"slug":2624,"type":16},"Multi-Agent","multi-agent","2026-07-26T05:46:56.388845",{"slug":2627,"name":2627,"fn":2628,"description":2629,"org":2630,"tags":2631,"stars":23,"repoUrl":24,"updatedAt":2641},"editing-letta-code-desktop-preferences","edit Letta Code Desktop preferences","Edits Letta Code Desktop (LCD) preferences by safely reading and updating ~\u002F.letta\u002Fdesktop_preferences.json. Use only when the user asks to change current Desktop\u002FLCD settings such as theme, default working directory, remote access preference, or remote environment name via the preferences JSON.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2632,2635,2638],{"name":2633,"slug":2634,"type":16},"Configuration","configuration",{"name":2636,"slug":2637,"type":16},"Desktop","desktop",{"name":2639,"slug":2640,"type":16},"Themes","themes","2026-07-13T06:23:41.407811",{"slug":2643,"name":2643,"fn":2644,"description":2645,"org":2646,"tags":2647,"stars":23,"repoUrl":24,"updatedAt":2652},"finding-agents","locate and manage agents on server","Find other agents on the same server. Use when the user asks about other agents, wants to migrate memory from another agent, or needs to find an agent by name or tags.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2648,2649],{"name":21,"slug":22,"type":16},{"name":2650,"slug":2651,"type":16},"Management","management","2026-07-16T06:02:17.297841",{"slug":2654,"name":2654,"fn":2655,"description":2656,"org":2657,"tags":2658,"stars":23,"repoUrl":24,"updatedAt":2664},"generating-mod-envs","generate Letta mod learning environments","Generates and reviews mod learning env JSON files for Letta Code local mods. Use when asked to teach, learn, or optimize a mod behavior; create, draft, validate, improve, or explain envs for `\u002Fmods learn --env`; or design evaluation scenarios, memory fixtures, requiredResultMarkers, requiredTraceMarkers, negative controls, and candidate diversity hints.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2659,2660,2663],{"name":21,"slug":22,"type":16},{"name":2661,"slug":2662,"type":16},"AI Infrastructure","ai-infrastructure",{"name":2633,"slug":2634,"type":16},"2026-07-13T06:23:08.838181",{"slug":2666,"name":2666,"fn":2667,"description":2668,"org":2669,"tags":2670,"stars":23,"repoUrl":24,"updatedAt":2679},"image-generation","generate images from text prompts","Generate images from text prompts (and optionally edit\u002Fremix input images). Use when the user asks to create, generate, draw, render, or edit an image, illustration, logo, icon, diagram, or photo.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2671,2674,2677],{"name":2672,"slug":2673,"type":16},"Creative","creative",{"name":2675,"slug":2676,"type":16},"Graphics","graphics",{"name":2678,"slug":2666,"type":16},"Image Generation","2026-07-13T06:23:06.189403",69]