moates-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@moates-mcp Show me Marcus's profile"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
moates-mcp
An MCP server that answers questions about Marcus Oates, a Sydney-based senior software engineer (voice AI & backend).
It's a proof of concept: any MCP client (Claude Desktop, Claude Code, an Agent SDK app) connects to the server and uses its tools to answer questions about Marcus. The client brings the LLM; this server just serves accurate, structured data (mirrored from https://moates.com.au) so the model doesn't have to guess.
Tools
Tool | Returns |
| Name, title, location, summary, contact links |
| Projects, optionally filtered by |
| Full detail for one project |
| Work history with detailed highlights |
| Tech stack, grouped |
| Life outside work |
| The whole profile as one markdown document |
| Keyword search across experience, projects and skills |
Also exposes a resume://marcus resource and an ask_about_marcus prompt.
Related MCP server: Portfolio MCP
Run locally
uv venv --python 3.12
uv pip install -e ".[dev]"
# stdio (quick local test, e.g. from Claude Desktop config)
uv run moates-mcp
# Streamable HTTP on 127.0.0.1:8000/mcp
MCP_HOST=0.0.0.0 uv run python -m moates_mcp --httpRun the tests with uv run pytest.
Connect a client
Claude Code (HTTP):
claude mcp add --transport http marcus https://mcp.moates.com.au/mcpClaude Desktop (stdio) — add to claude_desktop_config.json:
{
"mcpServers": {
"marcus": { "command": "uv", "args": ["run", "moates-mcp"], "cwd": "/path/to/moates_mcp" }
}
}Deploy to a DigitalOcean droplet
The server speaks MCP's Streamable HTTP transport, so it deploys like any ASGI
web app. See deploy/ for a Dockerfile, an nginx reverse-proxy
config, and a systemd unit. In short:
Point a subdomain (
mcp.moates.com.au) at the droplet.Run the container (or the systemd service) listening on
127.0.0.1:8000.Front it with nginx + a Let's Encrypt cert on
443, proxying to/mcp.
Clients then connect to https://mcp.moates.com.au/mcp.
Available Tools
7 toolsget_educationA
Get Marcus's education: degrees, institutions, dates, results and highlights.
Inputs: no named parameters. Returns: result
get_experienceA
Get Marcus's work history: roles, companies, dates and detailed highlights.
Inputs: no named parameters. Returns: result
get_interestsA
Get what Marcus does outside of work (sport, training, hobbies).
Inputs: no named parameters.
get_profileA
Get a high-level overview of Marcus: name, title, location, summary and contact links.
Inputs: no named parameters.
get_resumeA
Get Marcus's complete resume as a single markdown document (profile, experience, skills, projects).
Inputs: no named parameters. Returns: result
list_projectsA
List Marcus's projects.
Args: status: Optional filter. One of "prod" (in production), "test" (in testing), or "poc" (proof of concept). Omit to list every project.
Inputs: status. Returns: result
searchA
Keyword-search everything about Marcus (experience, projects, skills).
Returns matching snippets with a source label so the model can cite where a fact came from.
Inputs: query (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct aspect of Marcus's profile (education, experience, interests, high-level overview, full resume, projects with filtering, and free-text search). No two tools serve the same purpose, making it easy for an agent to select the right one.
Most tools use 'get_' prefix, but 'list_projects' uses 'list_' and 'search' has no prefix. Additionally, some are singular (get_education, get_experience) while others are plural (get_interests, list_projects). The naming is clear but inconsistent in pattern.
Seven tools is a well-scoped set for a personal profile server. Each tool serves a distinct function without unnecessary duplication or missing coverage, making the surface manageable and complete for its domain.
The server covers all major aspects of a personal portfolio: education, experience, projects (with status filtering), interests, a high-level profile, a full resume, and cross-cutting search. No obvious gaps; the search tool compensates for any missing granular queries.
Maintenance
Related MCP Connectors
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Generate contextual prompts and reusable agent skills, evaluate prompts with the 16-dimension Prompt Score, and manage saved work in PromptDrive. Twelve MCP tools also provide authorized access to private Memory for source-grounded answers. Connect over Streamable HTTP using OAuth 2.1 and PKCE. Generation consumes account quota and automatically saves successful results; Memory access follows account permissions and plan limits.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to query the author's career, projects, publications, and technical documents through read-only MCP tools.-
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query a person's CV and portfolio content via MCP tools and resources, returning grounded answers from local markdown data instead of relying on resume parsing.-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to retrieve a personal biography, skills, projects, and contact links through a read-only MCP server.-
- FlicenseNot gradedqualityCmaintenanceEnables agents to access a personal homepage's content graph through MCP tools, resources, and prompts, including retrieving profile, projects, resume, current status, searching content, and leaving messages.-