MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Expose Model Context Protocol (MCP) tools, resources and prompts from a Ts.ED v8 application with @tsed/platform-mcp, over the application's HTTP endpoint or as a standalone stdio / Streamable HTTP…
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tsedio/tsed tsed-mcp-server --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .claude/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .claude/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-serverType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tsedio/tsed tsed-mcp-server --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .agents/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .agents/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tsedio/tsed tsed-mcp-server --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .cursor/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .cursor/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tsedio/tsed.git --path plugins/tsed/skills/tsed-mcp-server--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tsedio/tsed tsed-mcp-server --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .gemini/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .gemini/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tsedio/tsed tsed-mcp-serverInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .github/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .github/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tsedio/tsed --skill tsed-mcp-server -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tsedio/tsed tsed-mcp-server --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tsedio/tsed.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/tsed/skills/tsed-mcp-server .opencode/skills/tsed-mcp-server && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tsed-mcp-server" agent skill from https://github.com/tsedio/tsed/tree/production/plugins/tsed/skills/tsed-mcp-server into .opencode/skills/tsed-mcp-server/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsed-mcp-server", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tsed-mcp-serverExpose Model Context Protocol (MCP) tools, resources and prompts from a Ts.ED v8 application with @tsed/platform-mcp, over the application's HTTP endpoint or as a standalone stdio / Streamable HTTP…
Tsed MCP Server is an agent skill from tsedio/tsed. Expose Model Context Protocol (MCP) tools, resources and prompts from a Ts.ED v8 application with @tsed/platform-mcp, over the application's HTTP endpoint or as a standalone stdio / Streamable HTTP server. Use when adding @tsed/platform-mcp, the mcp configuration, @Tool, @Resource, @Prompt, defineTool, defineResource, definePrompt or mcpServerConnect, when a tool is missing from tools/list, when a client receives EMCPTOOLERROR or another EMCP payload, or when registering the server in Claude Code (.mcp.json) or…
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `agents/openai.yaml`, `references/api.md` and `references/gateway-and-oauth.md`).
It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol. The repository describes itself as: :triangularruler: Ts.ED is a Node.js and TypeScript framework on top of Express to write your application with TypeScript (or ES6). It provides a lot of decorators and guideline… The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cf95a4e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
tsed.devFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OAUTH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tsed MCP Server loads about 2.8k tokens when it runs, and up to ~9.5k if it reads all its reference files. Until then it costs about 220 tokens; SKILL.md has 1,120 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from tsedio/tsed at commit cf95a4e, republished under its MIT licence (© tsedio). 1,120 words, ~2,791 tokens.
.claude/skills/tsed-mcp-server/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.@tsed/platform-mcp turns Ts.ED providers into MCP tools, resources and prompts. Handlers run inside the Ts.ED injector, so they reuse the application's services.
Read the API reference for option tables, resources, prompts and error payloads, and the standalone and clients reference for stdio servers and client registration, and the gateway and OAuth reference for proxying a third-party MCP server and protecting the endpoint. This skill is about the MCP server your application exposes; the MCP server shipped by the Ts.ED CLI belongs to the sibling skill tsed-cli.
Run npm install @tsed/platform-mcp, then import it in Server.ts:
import "@tsed/platform-express";
import "@tsed/platform-mcp";
import {Configuration} from "@tsed/di";
import {OrderTools} from "./mcp/OrderTools.js";
import {docsResource} from "./mcp/docsResource.js";
@Configuration({
mcp: {
path: "/mcp",
name: "orders",
version: "1.0.0",
tools: [OrderTools],
resources: [docsResource]
}
})
export class Server {}POST <path> (default /mcp). The transport is stateless: a new MCP server is created per request.name and version fall back to the root name / version configuration, then to tsed-mcp / 0.0.0.enabled: false to skip an endpoint; use an array (mcp: [{name, path, tools}, ...]) to expose several independent servers.A decorator or a define* call alone exposes nothing. List each decorated class and each define* token in the tools, resources or prompts array of every server that should expose it. A class contributes all of its decorated methods of that kind.
import {Injectable, inject} from "@tsed/di";
import {Tool} from "@tsed/platform-mcp";
import {Description, Property, Required, Returns} from "@tsed/schema";
import {OrdersService} from "../services/OrdersService.js";
class GetOrderInput {
@Required()
@Description("Order identifier")
id: string;
}
class OrderResult {
@Property()
status: string;
}
@Injectable()
export class OrderTools {
protected orders = inject(OrdersService);
@Tool("get-order")
@Description("Returns one order by id")
@Returns(200, OrderResult)
async getOrder(input: GetOrderInput) {
return this.orders.get(input.id);
}
}@Returns(200, Model). Omit it and no outputSchema is advertised.@Description; the name from @Tool(name) or the method name. Pass title, annotations or explicit schemas as @Tool(name, {...}).content (JSON text) and structuredContent. Return a full MCP result ({content: [...]}) only for custom content.tsed-models.import {inject} from "@tsed/di";
import {defineTool} from "@tsed/platform-mcp";
import {s} from "@tsed/schema";
import {OrdersService} from "../services/OrdersService.js";
export const cancelOrderTool = defineTool({
name: "cancel-order",
description: "Cancels an order that is not shipped yet",
inputSchema: s.object({id: s.string().required().description("Order identifier")}),
outputSchema: s.object({status: s.string().required()}),
async handler({id}) {
return {status: await inject(OrdersService).cancel(id)};
}
});defineTool returns a DI token; add it to mcp.tools. Call inject() inside the handler, not at module top level.@Resource / defineResource) and prompts (@Prompt / definePrompt) follow the same two styles; see the reference.MCP_TOOL_ERROR, MCP_RESOURCE_ERROR, MCP_PROMPT_ERROR) and converted to a payload.isError: true with structuredContent: {status_code, code, message, tool}.code is E_MCP_<KIND>_<ERROR_NAME> when the error has both name and status (any @tsed/exceptions class, e.g. NotFound gives E_MCP_TOOL_NOT_FOUND); otherwise E_MCP_<KIND>_ERROR.@tsed/exceptions errors (sibling skill tsed-exceptions) with messages safe to show to a model; the message is returned verbatim. Arguments that violate the input schema are rejected by the MCP SDK before the handler runs.Use mcpServerConnect("stdio" | "streamable-http") from @tsed/platform-mcp/cli once the injector is loaded. It reads a single mcp configuration object (an array throws). Full scripts are in the reference.
stdio, stdout belongs to the protocol. Never call console.log; send diagnostics to stderr. The helper stops the Ts.ED logger before connecting.streamable-http serves POST /mcp on PORT (default 3000), ignores mcp.path, and needs express installed.Unit-test a tool through its token, inside PlatformTest.create() / PlatformTest.reset() (from @tsed/platform-http/testing):
const tool = inject<any>(cancelOrderTool);
const result = await tool.handler({id: "42"}, {} as any);
expect(result.structuredContent).toEqual({status: "cancelled"});A failing handler resolves with result.isError === true; it does not reject. For an end-to-end check, bootstrap with PlatformTest.bootstrap(Server) and POST /mcp a JSON-RPC body with SuperTest (full example in the reference). Mocking services follows the sibling skill tsed-testing.
Add the HTTP endpoint ({"type": "http", "url": "http://localhost:8083/mcp"}) or the stdio command to .mcp.json under mcpServers for Claude Code, or to a [mcp_servers.<name>] table in Codex config.toml. Exact snippets are in the reference.
Add upstream to an mcp entry to serve a third-party MCP server (Streamable HTTP, SSE, or a stdio process such as an npx server) through the Ts.ED endpoint, and auth to protect the entry with an OAuth authorization server. Forward the caller's token with the ${OAUTH_TOKEN} placeholder in the upstream headers, or args/env for stdio. Option tables and startup errors are in the reference.
mcp: [
{
path: "/mcp/directus",
auth: {issuer: "https://auth.example.com", resource: "https://api.example.com/mcp/directus", requiredScopes: ["mcp:read"]},
upstream: {type: "http", url: "https://directus.example.com/mcp", headers: {Authorization: "Bearer ${OAUTH_TOKEN}"}}
}
];@Tool, @Resource or @Prompt to auto-register; list the class in the mcp configuration.MCP:TOOL:<name>), so two definitions collide.auth option (OAuth, or a custom check such as an API key with auth.preAuth) rather than a global middleware testing the path.${OAUTH_TOKEN} inside a template literal (backticks): it is a plain-string placeholder resolved per request, not a JavaScript interpolation.mcp entry; use one entry per upstream.@tsed/common or from @modelcontextprotocol/sdk; the package uses @modelcontextprotocol/server and @modelcontextprotocol/node.tools/list: the class or token is not in mcp.tools of that server, @tsed/platform-mcp is not imported, or the class lacks @Injectable().@tsed/schema decorator.@Prompt gets no arguments schema from its parameter; pass argsSchema in the decorator options.POST <path> is served and the transport is stateless with JSON responses; GET and DELETE on the path answer 405 with Allow: POST. Clients that require sessions or a GET event stream are not served by the HTTP module.401 on every call in introspection mode: the authorization server does not return aud for the endpoint resource. Configure resource indicators on the authorization server, or set audience: false.typ: at+jwt with iss, exp, aud, sub, iat, jti, client_id). Use introspection or a custom verifier.tools/list: the upstream is unreachable (see the MCP_GATEWAY_UPSTREAM_ERROR log) or a local tool has the same name (MCP_GATEWAY_COLLISION).mcpServerConnect("stdio") fails with logger(...).stop is not a function unless a @tsed/logger instance is attached to the injector (attachLogger($log)).@tsed/platform-mcp is imported and every tool, resource and prompt is listed in mcp.s.object input schema, and an output schema.inject() and throw @tsed/exceptions errors.npx @modelcontextprotocol/inspector.Further reading: https://tsed.dev/docs/mcp.md.
© tsedio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in plugins/tsed/skills/tsed-mcp-server of tsedio/tsed.
Open the folder on GitHubat commit cf95a4e
Tsed MCP Server next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tsed MCP Server this skilltsedio/tsed | 3.1k | — | ~2.8k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence | |
| Context Mode Output Sandboxmksglu/context-mode | 26k | — | ~4.1k | Automated safety check: Pass | Custom licence |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
mksglu/context-mode
Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.
warpdotdev/warp
Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.
tsedio/tsed
Create a production-ready Ts.ED platform adapter for a new HTTP framework or runtime, such as Hono, Elysia, Bun.serve, or a Node framework.
tsedio/tsed
Scaffolds Ts.ED v8 projects and generates files with the Ts.ED CLI v7, through its MCP server (tools set-workspace, init-project, list-templates, get-template, generate-file) or the tsed binary…
tsedio/tsed
Configure and bootstrap a Ts.ED v8 server - the @Configuration decorator or configuration() on the Server class, PlatformExpress/PlatformKoa/PlatformFastify.bootstrap, server options (mount…
tsedio/tsed
Declare, inject and scope Ts.ED v8 providers and wire lifecycle hooks - @Injectable, @Module, @Controller, @Inject, the functional API (inject, injectMany, lazyInject, constant, refValue…
tsedio/tsed
Locates authoritative Ts.ED v8 documentation and API reference instead of guessing framework APIs.
tsedio/tsed
Configure and use logging in a Ts.ED v8 application with @tsed/logger v8.
Works with
Categories
Expose Model Context Protocol (MCP) tools, resources and prompts from a Ts.ED v8 application with @tsed/platform-mcp, over the application's HTTP endpoint or as a standalone stdio / Streamable HTTP…. Tsed MCP Server is an agent skill from tsedio/tsed.ED v8 application with @tsed/platform-mcp, over the application's HTTP endpoint or as a standalone stdio / Streamable HTTP server.
Tsed MCP Server fits situations like: adding @tsed/platform-mcp; the mcp configuration; mcpServerConnect; A tool is missing from tools/list.
Run `npx skills add tsedio/tsed --skill tsed-mcp-server -a claude-code`. Or copy the skill folder (plugins/tsed/skills/tsed-mcp-server in tsedio/tsed) into .claude/skills/tsed-mcp-server in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tsedio/tsed --skill tsed-mcp-server -a codex`. Or copy the skill folder (plugins/tsed/skills/tsed-mcp-server in tsedio/tsed) into .agents/skills/tsed-mcp-server in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tsedio/tsed --skill tsed-mcp-server -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tsed-mcp-server, .gemini/skills/tsed-mcp-server, .github/skills/tsed-mcp-server and .opencode/skills/tsed-mcp-server in your project.
Going by SKILL.md and its folder, Tsed MCP Server needs the command-line tools its instructions call (npm and npx) and credentials named OAUTH_TOKEN. Our summary lists: Node.js; A credential in OAUTH_TOKEN.
SKILL.md names 1 domain. As links in the text: tsed.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tsed MCP Server is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Tsed MCP Server: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Crush Configuration (charmbracelet/crush, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tsedio (a GitHub organization) maintains it in tsedio/tsed, which has 3,088 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.
Source: tsedio/tsed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.