Phase03/.claude/skills/mcp-tools/SKILL.md
Create MCP server tools with Official Python MCP SDK for AI agents. Use when building MCP tools, registering tool schemas, or creating AI-accessible functions.
npx skillsauth add jawad-chaudhary/hackathone-2-todo-spec-driven-development mcp-toolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
from mcp.server import Server
from mcp.types import Tool, TextContent
import mcp.server.stdio
server = Server("mcp-server")
@server.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="tool_name",
description="What this tool does",
inputSchema={
"type": "object",
"properties": {
"user_id": {"type": "string"},
"param": {"type": "string", "maxLength": 200}
},
"required": ["user_id", "param"]
}
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
if name == "tool_name":
# Validate inputs
if not arguments.get("user_id"):
return [TextContent(type="text", text='{"error": "user_id required"}')]
# Stateless: create DB session per call
async with get_db_session() as session:
# Do work
result = {"status": "success", "data": {}}
return [TextContent(type="text", text=json.dumps(result))]
async def main():
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await server.run(read_stream, write_stream, server.create_initialization_options())
if __name__ == "__main__":
import asyncio
asyncio.run(main())
development
Async testing with pytest, pytest-asyncio, httpx, fixtures, coverage reports, and test-first development. Use when writing tests, test fixtures, or measuring coverage.
tools
Build AI agents with OpenAI Agents SDK, tool registration, conversation history, and stateless execution. Use when creating AI agents, registering tools, or handling conversations.
development
Integrate OpenAI ChatKit in Next.js 15 App Router with domain allowlist, authentication, and API connections. Use when building chat interfaces or ChatKit integration.
data-ai
SQLModel async database operations with Neon PostgreSQL, migrations, user isolation, and proper indexing. Use when defining models, queries, or database operations.