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.
67
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
High
Do not use without reviewing
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.
MCP (Model Context Protocol) is a standard for exposing tools to AI agents. MCP servers provide tools via JSON-RPC, either over:
http://localhost:3001/mcp)Ask the user:
npx, node, python)?For HTTP servers:
npx tsx <SKILL_DIR>/scripts/mcp-http.ts <url> list-tools
# With auth header
npx tsx <SKILL_DIR>/scripts/mcp-http.ts <url> --header "Authorization: Bearer KEY" list-toolsWhere <SKILL_DIR> is the Skill Directory shown when the skill was loaded (visible in the injection header).
For stdio servers:
npx tsx <SKILL_DIR>/scripts/mcp-stdio.ts "<command>" list-tools
# Examples
npx tsx <SKILL_DIR>/scripts/mcp-stdio.ts "npx -y @modelcontextprotocol/server-filesystem ." list-tools
npx tsx <SKILL_DIR>/scripts/mcp-stdio.ts "python server.py" list-tools# List all tools
... list-tools
# Get schema for a specific tool
... info <tool-name>
# Test calling a tool
... call <tool-name> '{"arg": "value"}'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.
Simple skill (just SKILL.md):
Rich skill (SKILL.md + scripts/):
See references/skill-templates.md for templates.
Connects to MCP servers over HTTP. No dependencies required.
npx tsx mcp-http.ts <url> [options] <command> [args]
Commands:
list-tools List available tools
list-resources List available resources
info <tool> Show tool schema
call <tool> '<json>' Call a tool
login Run OAuth flow and cache tokens for this server
logout Clear cached OAuth tokens for this server
Options:
--header "K: V" Add HTTP header (repeatable). Disables auto-OAuth.
--auth <mode> "auto" (default), "oauth", or "none"
--timeout <ms> Request timeout (default: 30000)Examples:
# Basic usage
npx tsx mcp-http.ts http://localhost:3001/mcp list-tools
# With static bearer authentication
npx tsx mcp-http.ts http://localhost:3001/mcp --header "Authorization: Bearer KEY" list-tools
# OAuth-protected server (opens a browser to sign in, then caches tokens)
npx tsx mcp-http.ts https://example.com/mcp login
npx tsx mcp-http.ts https://example.com/mcp list-tools
# Call a tool
npx tsx mcp-http.ts http://localhost:3001/mcp call vault '{"action":"search","query":"notes"}'OAuth support:
When a server returns 401 WWW-Authenticate: Bearer ... and no static
Authorization header was supplied, mcp-http.ts will automatically:
resource_metadata, the
realm= param, or the server's own origin (.well-known/oauth-authorization-server
then .well-known/openid-configuration).token_endpoint_auth_method: none).127.0.0.1 loopback port, and exchange the code for tokens.~/.letta/mcp-oauth/<host>_<path>.json with 0600 perms.Use login to run the flow explicitly (e.g. as a first step in a skill's
setup) and logout to clear cached tokens. Passing an explicit
--header "Authorization: ..." disables auto-OAuth so you stay in control.
Pass --auth none to force static-only behavior.
Connects to MCP servers that run as subprocesses. No dependencies required.
npx tsx mcp-stdio.ts "<command>" [options] <action> [args]
Actions:
list-tools List available tools
list-resources List available resources
info <tool> Show tool schema
call <tool> '<json>' Call a tool
Options:
--env "KEY=VALUE" Set environment variable (repeatable)
--cwd <path> Set working directory
--timeout <ms> Request timeout (default: 30000)Examples:
# Filesystem server
npx tsx mcp-stdio.ts "npx -y @modelcontextprotocol/server-filesystem ." list-tools
# With environment variable
npx tsx mcp-stdio.ts "node server.js" --env "API_KEY=xxx" list-tools
# Call a tool
npx tsx mcp-stdio.ts "python server.py" call read_file '{"path":"./README.md"}'Here are some well-known MCP servers:
| Server | Transport | Command/URL |
|---|---|---|
| Filesystem | stdio | npx -y @modelcontextprotocol/server-filesystem <path> |
| GitHub | stdio | npx -y @modelcontextprotocol/server-github |
| Brave Search | stdio | npx -y @modelcontextprotocol/server-brave-search |
| obsidian-mcp-plugin | HTTP | http://localhost:3001/mcp |
"Cannot connect" error:
"Authentication required" error:
--header "Authorization: Bearer YOUR_KEY" for HTTP servers using static bearers--env "API_KEY=xxx" for stdio servers that need env varslogin) — the helper
will do PKCE + dynamic client registration and cache tokens under
~/.letta/mcp-oauth/. Delete that file (or run logout) to force a re-login.OAuth issues:
resource_metadata and its origin doesn't serve .well-known/oauth-authorization-server
or .well-known/openid-configuration. Fall back to a static bearer, or point the
helper at the auth server manually via a custom skill.client_id (and any required
credentials) via headers, or wrap this skill with a server-specific one.Tool call fails:
info <tool> to see the expected input schema051b47f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.