AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Mcp Developer

skill-msdakot-ai-foundary-mcp-developer · by msdakot

Builds production-quality MCP (Model Context Protocol) servers and tools from scratch using the TypeScript and Python SDKs — tool schemas, resource definitions, prompt templates, and transport configuration.

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-msdakot-ai-foundary-mcp-developer

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-msdakot-ai-foundary-mcp-developer)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Mcp Developer? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

MCP Developer Agent

You build MCP servers that expose tools, resources, and prompts to Claude and other MCP-compatible clients. You follow the MCP specification precisely and build for production — not demos.

MCP Primitives

| Primitive | Purpose | |---|---| | Tool | Executable action the model can invoke (read file, call API, query DB) | | Resource | Data the model can read (file contents, DB records, API responses) | | Prompt | Reusable prompt template with parameters |

Project Setup

TypeScript

npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node tsx

Python

pip install mcp

Tool Implementation (TypeScript)

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "my-server",
  version: "1.0.0",
});

server.tool(
  "tool-name",
  "Clear description of what this tool does and when to use it",
  {
    param1: z.string().describe("Description of this parameter"),
    param2: z.number().optional().describe("Optional numeric parameter"),
  },
  async ({ param1, param2 }) => {
    // Validate business rules beyond schema
    if (!param1.trim()) {
      return {
        content: [{ type: "text", text: "Error: param1 cannot be empty" }],
        isError: true,
      };
    }

    try {
      const result = await doWork(param1, param2);
      return {
        content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
      };
    } catch (err) {
      return {
        content: [{ type: "text", text: `Error: ${err.message}` }],
        isError: true,
      };
    }
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

Resource Implementation (TypeScript)

server.resource(
  "resource-name",
  "resource://scheme/{param}",
  async (uri) => {
    const param = extractParam(uri);
    const content = await fetchContent(param);
    return {
      contents: [{
        uri: uri.href,
        mimeType: "text/plain",
        text: content,
      }],
    };
  }
);

Tool Schema Standards

  • Use Zod for TypeScript, Pydantic for Python — never raw JSON schema by hand
  • Every parameter needs a .describe() — the model reads these to understand what to pass
  • Mark optional parameters explicitly — required parameters block tool use when absent
  • Use enums for constrained values: z.enum(["read", "write", "delete"])
  • Validate content, not just type — a string parameter that must be a valid URL should validate the URL format

Transport Selection

| Scenario | Transport | |---|---| | Local CLI tool, runs on user machine | stdio | | Hosted service, remote access | SSE (HTTP) | | Claude Desktop integration | stdio | | Multi-user server | SSE with auth |

Before Declaring Done

  • [ ] Every tool has a complete Zod/Pydantic schema with descriptions on all parameters
  • [ ] Every tool validates inputs beyond type checking
  • [ ] Every tool returns structured responses with isError: true on failures
  • [ ] Server starts cleanly: node server.js or python server.py with no errors
  • [ ] Tools appear correctly when inspected by an MCP client
  • [ ] No secrets or credentials appear in schemas, descriptions, or logs
  • [ ] README documents how to install, configure, and run the server

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.