Loading...
Loading...
Use when integrating MCPCat analytics into a TypeScript MCP server, adding mcpcat to an existing TypeScript MCP project, setting up MCP server usage tracking, or when the user mentions mcpcat, MCPCat, or MCP analytics in a TypeScript context
npx skill4agent add mcpcat/skills install-mcpcat-typescriptmcpcat.track(server, projectId)~/mcpcat.log| Item | Value |
|---|---|
| Package | |
| Import | |
| Core call | |
| Peer dep | |
| MCPCat log file | |
| Project ID env var | |
| Debug env var | |
| Defaults | All features enabled (context injection, tracing, report-missing tool) |
"proj_abc123xyz""To set up MCPCat, I'll need your project ID from mcpcat.io. It looks like. Do you have one? You can create a free account at https://mcpcat.io to get one."proj_abc123xyz
process.env.MCPCAT_PROJECT_ID ?? "proj_their_id"new McpServer(...)new Server(...)server.registerTool(...)server.tool(...)server.setRequestHandler(CallToolRequestSchema, ...)server.connect(transport)main()package.json@modelcontextprotocol/sdk>= 1.11| Indicator | Command |
|---|---|
| |
| |
| |
| |
| Otherwise | Check the project's README and other |
import * as mcpcat from "mcpcat";import * as mcpcatimport { track }track()mcpcat.track(server, projectId, options?)McpServerServer"proj_abc123xyz"track(server, { projectId })track(server, projectId)server.connect(transport)main()mcpcat.track(server, process.env.MCPCAT_PROJECT_ID ?? "proj_their_id");~/mcpcat.logif (process.env.MCPCAT_DEBUG_MODE) {
console.error("[mcpcat] Analytics enabled. Debug log: ~/mcpcat.log");
}console.errorconsole.log~/mcpcat.logimport { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({ name: "my-server", version: "1.0.0" });
server.registerTool("greet", {
description: "Greets a user",
inputSchema: { name: { type: "string" } },
}, async (args) => ({
content: [{ type: "text", text: "Hello, " + args.name + "!" }],
}));
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import * as mcpcat from "mcpcat";
const server = new McpServer({ name: "my-server", version: "1.0.0" });
server.registerTool("greet", {
description: "Greets a user",
inputSchema: { name: { type: "string" } },
}, async (args) => ({
content: [{ type: "text", text: "Hello, " + args.name + "!" }],
}));
mcpcat.track(server, process.env.MCPCAT_PROJECT_ID ?? "proj_abc123xyz");
if (process.env.MCPCAT_DEBUG_MODE) {
console.error("[mcpcat] Analytics enabled. Debug log: ~/mcpcat.log");
}
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);track()Serverimport { Server } from "@modelcontextprotocol/sdk/server/index.js";
import * as mcpcat from "mcpcat";
const server = new Server(
{ name: "my-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// ... setRequestHandler calls ...
mcpcat.track(server, process.env.MCPCAT_PROJECT_ID ?? "proj_abc123xyz");
if (process.env.MCPCAT_DEBUG_MODE) {
console.error("[mcpcat] Analytics enabled. Debug log: ~/mcpcat.log");
}
// Then connect transport as usual| Mistake | Why it fails | Fix |
|---|---|---|
| Options object passed as 2nd arg instead of projectId string | |
| Skips tracking if env var is unset, defeating the hardcoded fallback | Always call |
| Transport starts before MCPCat intercepts handlers | Move |
| MCPCat detects and skips, but indicates logic error | Call |
| Breaks STDIO transport (stdout is the MCP channel) | Use |
| Creating a debugLog utility | Over-engineers a one-liner | Single |
| Expecting console output from MCPCat | MCPCat logs to file, not console | Check |
| MCPCat requires >= 1.11 | Upgrade: |