Marketplace mcp-patterns

Model Context Protocol (MCP) server patterns for building integrations with Claude Code. Triggers on: mcp server, model context protocol, tool handler, mcp resource, mcp tool.

install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/0xdarkmatter/mcp-patterns" ~/.claude/skills/aiskillstore-marketplace-mcp-patterns && rm -rf "$T"
manifest: skills/0xdarkmatter/mcp-patterns/SKILL.md
source content

MCP Patterns

Model Context Protocol (MCP) server patterns for building integrations with Claude Code.

Basic MCP Server (Python)

from mcp.server import Server
from mcp.server.stdio import stdio_server

app = Server("my-server")

@app.list_tools()
async def list_tools():
    return [
        {
            "name": "my_tool",
            "description": "Does something useful",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "Search query"}
                },
                "required": ["query"]
            }
        }
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "my_tool":
        result = await do_something(arguments["query"])
        return {"content": [{"type": "text", "text": result}]}
    raise ValueError(f"Unknown tool: {name}")

async def main():
    async with stdio_server() as (read_stream, write_stream):
        await app.run(read_stream, write_stream, app.create_initialization_options())

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

Project Layout

my-mcp-server/
├── src/
│   └── my_server/
│       ├── __init__.py
│       ├── server.py       # Main server logic
│       ├── tools.py        # Tool handlers
│       └── resources.py    # Resource handlers
├── pyproject.toml
└── README.md

Claude Desktop Configuration

Basic Configuration

{
  "mcpServers": {
    "my-server": {
      "command": "python",
      "args": ["-m", "my_server"],
      "env": {
        "MY_API_KEY": "your-key-here"
      }
    }
  }
}

With uv (Recommended)

{
  "mcpServers": {
    "my-server": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/my-server", "python", "-m", "my_server"],
      "env": {
        "MY_API_KEY": "your-key-here"
      }
    }
  }
}

Quick Reference

PatternUse CaseReference
Tool validationInput sanitization with Pydantic
./references/tool-patterns.md
Error handlingGraceful failure responses
./references/tool-patterns.md
Multiple toolsCRUD-style tool registration
./references/tool-patterns.md
Static resourcesConfig/settings exposure
./references/resource-patterns.md
Dynamic resourcesDatabase-backed resources
./references/resource-patterns.md
Environment authAPI key from env vars
./references/auth-patterns.md
OAuth tokensToken refresh with TTL
./references/auth-patterns.md
SQLite cachePersistent state storage
./references/state-patterns.md
In-memory cacheTTL-based caching
./references/state-patterns.md
Manual testingQuick validation script
./references/testing-patterns.md
pytest asyncUnit tests for tools
./references/testing-patterns.md

Common Issues

IssueSolution
Server not startingCheck
command
path, ensure dependencies installed
Tool not appearingVerify
list_tools()
returns valid schema
Auth failuresCheck env vars are set in config, not shell
Timeout errorsAdd timeout to httpx calls, use async properly
JSON parse errorsEnsure
call_tool
returns proper content structure

Official Documentation

Additional Resources

For detailed patterns, load:

  • ./references/tool-patterns.md
    - Validation, error handling, multi-tool registration
  • ./references/resource-patterns.md
    - Static and dynamic resource exposure
  • ./references/auth-patterns.md
    - Environment variables, OAuth token refresh
  • ./references/state-patterns.md
    - SQLite persistence, in-memory caching
  • ./references/testing-patterns.md
    - Manual test scripts, pytest async patterns