TypeScript framework for building MCP servers hosted on mctx. Includes CLI, dev server, and deployment tooling.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"app": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
TypeScript framework for building MCP servers hosted on mctx. Includes CLI, dev server, and deployment tooling.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationBe the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools / devops
Manage Supabase projects — databases, auth, storage, and edge functions
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
MCPSDK.dev(ToolSDK.ai)'s Awesome MCP Servers and Packages Registry and Database with Structured JSON configurations. Supports OAuth2.1, DCR...
MCP Security Weekly
Get CVE alerts and security updates for App and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
mctx — The best way to Build an MCP Server
@mctx-ai/mcp is the best way to Build an MCP Server. Register tools, resources, and prompts — the framework handles protocol negotiation, input validation, error sanitization, and CORS. You write the business logic.
import { createServer, T } from "@mctx-ai/mcp";
const server = createServer({
instructions: "A greeting server. Use the greet tool to say hello.",
});
function greet(mctx, req, res) {
res.send(`Hello, ${req.name}! (user: ${mctx.userId || "anonymous"})`);
}
greet.description = "Greet someone by name";
greet.input = {
name: T.string({ required: true, description: "Name to greet" }),
};
server.tool("greet", greet);
export default { fetch: server.fetch };
That's a working MCP server. Run it locally with npx mctx-dev index.js.
Scaffold a new project (recommended):
npx create-mctx-server my-app
cd my-app
npm install
npx mctx-dev index.js
Use the template repo:
github.com/mctx-ai/example-app — click "Use this template" on GitHub.
Add to an existing project:
npm install @mctx-ai/mcp
Run the dev server:
npx mctx-dev index.js
Hot reload is included. Changes to index.js restart the server automatically.
.d.ts type definitions includedmctx-dev watches your files and restarts on changeT type systemfetch handler, deploys anywhereEvery handler — tools, resources, and prompts — uses the same three-argument signature:
function myHandler(mctx, req, res) {
res.send("result");
}
| Parameter | Type | Description |
|---|---|---|
mctx | ModelContext | Per-request context. mctx.userId is the authenticated user ID (or undefined). |
req | object | Input arguments, validated against the handler's input schema. |
res | Response | Output port. Call res.send() to return a result. |
Tools are functions AI can call — like API endpoints.
function search(mctx, req, res) {
const results = db.query(req.query, { limit: req.limit });
res.send(results);
}
search.description = "Search the database";
search.input = {
query: T.string({ required: true, description: "Search query" }),
limit: T.number({ default: 10, description: "Max results" }),
};
server.tool("search", search);
For long-running tools, report progress with res.progress(current, total):
async function migrate(mctx, req, res) {
for (let i = 0; i < req.tables.length; i++) {
await copyTable(req.tables[i]);
res.progress(i + 1, req.tables.length);
... [View full README on GitHub](https://github.com/mctx-ai/app#readme)