Install the CLI and SDK
Install the Toolshed CLI globally so the Verify the CLI installed correctly:
toolshed command is available in your terminal. Then add the SDK to your project as a dependency.Log in to your Toolshed server
Authenticate with your Toolshed server. The CLI opens your browser to complete the OAuth flow and stores the session token in
~/.toolshed/config.json.By default,
toolshed login connects to http://localhost:3000. Set the TOOLSHED_SERVER environment variable to point to a remote server before running this command.Define your first plugin
Create a new TypeScript file for your plugin. The example below defines a plugin with a single tool that returns the current UTC time. Use A few things to note about this structure:
defineTool() to declare the tool’s schema and handler, then pass it to definePlugin().plugin.ts
pathuses dot-separated namespacing andsnake_casefor the tool name —utils.get_current_timemeans the tool lives in theutilsnamespace.inputSchemaandoutputSchemaare Zod schemas. Toolshed converts them to JSON Schema automatically.handlerreceives aPluginContextas the first argument (used for auth and elicitation) and the validated input as the second.
Start the MCP server
Run You should see:The server runs until you press To connect Claude Desktop or another MCP client, add an entry to its MCP server configuration pointing to
toolshed serve to start the MCP server on stdio. This makes your tool catalog available to any MCP-compatible client.Ctrl+C. It handles cleanup automatically on SIGINT.toolshed serve uses the local runtime by default. To run executions inside Vercel Firecracker microVMs, set TOOLSHED_RUNTIME=vercel and configure the required Vercel environment variables before starting the server.toolshed serve as a stdio command. Refer to your client’s documentation for the exact config format.Next steps
Now that you have a working MCP server, explore the rest of the Toolshed platform:Concepts: Plugins
Deep dive into
definePlugin() and defineTool() — schemas, auth providers, destructive flags, and more.Concepts: Sources
Auto-generate tools from an OpenAPI spec or GraphQL endpoint without writing handlers.
Concepts: Policy
Define roles with tool path patterns to control agent access across your entire catalog.
Elicitation guide
Learn how to require human approval before your tools perform destructive operations.