Install
$ agentstack add skill-msdakot-ai-foundary-mcp-developer ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
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 →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: trueon failures - [ ] Server starts cleanly:
node server.jsorpython server.pywith 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.
- Author: msdakot
- Source: msdakot/ai-foundary
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.