# serveMyAPI Project Guide
## Project Purpose
This project aims to create a personal MCP server for securely storing and accessing API keys across projects using the macOS Keychain.
## Build & Commands
- Setup: `npm install`
- Start server: `npm run dev`
- Test: `npm test`
- Lint: `npm run lint`
- Build: `npm run build`
## Code Style Guidelines
- **Formatting**: Follow TypeScript standard practices with 2-space indentation
- **Imports**: Group imports by type (core, third-party, local)
- **Naming**: Use camelCase for variables/functions, PascalCase for classes/interfaces
- **Error Handling**: Use try/catch blocks for error management
- **Security**: Never log or expose API keys in plaintext
- **Documentation**: Document all public functions with JSDoc comments
## Key Technologies
- TypeScript SDK for Model Context Protocol (MCP)
- macOS Keychain API for secure credential storage
- Express.js for API endpoints (if needed)
# myAI Memory
# General Response Style
## Use this in every response
-~- You can be very concise
-~- Always double check references and provide links to sources with validation of reference and trustworthy nature of the source, make use of the MCPs available
# Personal Information
## User specific and personal information
-~- Name: James William Peter King (James, JWPK)
-~- Date of Birth: 29.03.1985 (40 years old)
-~- Location: London, UK
-~- Work Contact: james@newmodel.vc | 07793988228
-~- Personal Contact: j.w.p.king@gmail.com | 07515900330
-~- Family: Wife Roxanne (39), son Fletcher (8), daughter Viola (5) (pronounced Vi'la)
## Childhood & Education Background
-~- Early Years: Grew up at Rendcomb boarding school in the Cotswolds where parents were housemasters
-~- Primary Education: Cirencester County Juniors
-~- Secondary Education:
-~- Kimbolton School (GCSEs and French AS)
-~- Leicester Grammar (3As, 2Bs at A-Level 2003)
-~- Higher Education:
-~- Imperial College (Computer Engineering first year)
-~- Leeds University: BSc Computing (Scholarship) 2:1 (2005-2008)
-~- Professional Qualifications: FCA Authorised principal
-~- Learning Style: Quick to grasp concepts, excellent pattern recognition, quick to consider practical applications and implications
## Professional Background
**Current Role**: CEO, Founder, and Director at New Model Venture Capital (NMVC, New Model)
-~- Founded New Model in May 2013 to deliver "fast, intelligent capital to high-growth companies"
-~- Developed investment products including the creation of the Guaranteed Venture Portfolio Loan (GVPL), which he raised £15.85m for as the first of its kind in the world
**Previous Companies**:
-~- Fig VC (Dec 2009-2023) - Founder
-~- U Account (Jan-Jun 2019)
-~- Wazoku (Jan 2011-Jun 2019) - Founder
-~- Brightsparks (Oct 2012-Jul 2015)
-~- MuJo (Jan 2011-Nov 2014) – Co-Founder
-~- Students Work (Apr 2008-Dec 2009)
-~- KPMG (Sep 2004-Aug 2005)
## Education
-~- BSc Computing (Scholarship) 2:1 Leeds University (2005-2008)
-~- FCA Authorised principal
-~- Previous Education:
-~- Leicester Grammar (3As, 2Bs at A-Level 2003)
-~- Imperial College (Computer Engineering first year)
-~- Kimbolton School (GCSEs and French AS)
## Key Achievements & Skills
-~- Raised hundreds of millions in Debt and Equity
-~- Delivered >30% IRR for past 15 years
-~- Created Guaranteed Venture Portfolio Loan product, a new way of funding venture companies
**Core Skills**: Financial Modelling, Deal structuring, Strategy development, Investment Analysis
**Management Experience**: Teams up to 40 people, FCA MiFID compliance, professional qualification oversight
## Technical Expertise
-~- Full-stack developer specializing in TypeScript, Svelte, and web technologies
-~- Created GVPL Calculator - a sophisticated financial modelling platform
-~- Developed myAImemory - AI memory synchronization tool
-~- Built multiple Model Context Protocol (MCP) frameworks
-~- Systems thinking and practical application to real-world problems
# Personal Characteristics & Thinking Style
-~- Excellent pattern recognition across different domains
-~- Ability to see multiple perspectives ("windows") that others miss
-~- Strong focus on fairness and equity in systems
-~- Analytical approach to problems with multifaceted thinking
-~- Quick to grasp concepts and translate complex ideas for others
-~- Values transparency and documentation (always keen to see detailed records)
-~- Draws clear boundaries when core principles are at stake
-~- Weighs endurance/principles based on the significance of the issue
-~- Willing to make personal sacrifices to establish precedents or prove concepts
-~- Learning style: develops systematic approaches through direct observation, conversation and reading with a keen eye for evaluating the quality of sources
-~- Incredibly quick to understand incentives and their implications
# Interests
-~- Rugby (qualified coach and referee)
-~- Chess
-~- Photography
-~- Science and Technology
-~- Snowboarding and Skiing
-~- Golf
-~- Guitar
-~- Audiobooks and literature
-~- Systems thinking and pattern recognition
-~- His children and anything they do
# Company Information
**New Model Venture Capital**:
-~- Mark Hanington (Managing Director)
-~- James Stephenson (Head of Analysis)
-~- Christian Fallesen (NED)
-~- Keith Morris OBE (Advisor)
-~- Matt Cunningham (Legal Counsel)
-~- Team of 8 including legal, finance, and operations specialists
## Current Coding Projects
-~- GVPL Calculator - Financial modelling platform for investment optimization
-~- myAImemory - AI memory synchronization tool (Last modified: March 21, 2025)
-~- myKYCpal - Know Your Client platform (Last modified: March 19, 2025)
-~- serveMyAPI - API service for integrating with AI models
-~- Multiple web applications using Svelte/TypeScript/Vercel/Neon including a Fantasy Rugby App
# Technical Preferences
## Refer to this when considering examples and user experience testing
-~- Frontend: Svelte 5
-~- Development: Windsurf IDE
-~- Hosting: Vercel
-~- Database: Neon
-~- Hardware: Mac Mini M4, MacBook Pro, iOS devices (iPhone 15 Pro, iPhone 16, iPad Pro)
-~- Other devices: Apple TV, HomePod mini, HomePod, XReal One, GoPro 13 Hero Black, Nikon D50, Whoop fitness tracking
-~- Visual Aids: uses visual explanations for complex concepts
# AI & MCP Preferences
## Use this as a guide when working on technical projects
-~- File Access: If a file is in .gitignore and need to read it, ask for permission to use the filesystem MCP
-~- API credentials/services: Use the serveMyAPI MCP by @Jktfe
-~- Response Style: Concise, UK English spelling, GBP (£) as default currency
-~- Technical Documentation: Maintain "Project Variables" document with details on variables, functions, tables, etc.
-~- AI Tools: Prefer Claude-based systems with pattern recognition capabilities
-~- MCP Framework: Utilize multiple platform synchronization where possible
-~- when creating an MCP it's important to add a proper MCP.js script with JSON-RPC handling
# Communication Preferences
-~- Respond in English
-~- Use UK English Spellings
-~- Use £ (GBP) as the default currency, if you need to use conversions put them in brackets i.e. £1.10 ($1.80)
-~- Direct and straightforward communication
-~- Appreciation for humour and casual conversation
-~- Values authenticity over formality
-~- Prefers evidence-based discussions
-~- Open to new perspectives but requires logical reasoning
-~- Expects transparency and honesty in professional relationships
-~- Willing to challenge conventional wisdom when it doesn't align with practical outcomes
-~- Respects expertise but will question assumptions that don't match observed reality
# Available MCPs
## Use these details combined with serveMyAPI to create mcp config files
## Ask which servers to install, from this list;
-~- "apple-shortcuts" - 1 tool: run_shortcut. Provides natural language access to Apple Shortcuts automation, allowing creation and triggering of macOS shortcuts.
-~- "brave-search" - 2 tools: brave_web_search and brave_local_search. Enables web searches using Brave's privacy-focused search engine with filtering and customisation options.
-~- "fastAPItoSVG" - 1 tool: generate_api_diagram. Converts FastAPI documentation to SVG diagrams for visualising API endpoints and schemas.
-~- "fetch" - 1 tool: fetch. Retrieves content from web URLs with options to extract text, process HTML, and manage content length.
-~- "filesystem" - 5 tools: ls, cat, write_file, rm, and mkdir. Provides file operations and directory management for local filesystem access.
-~- "fooocus" - 9 tools: configure_api, check_status, start_server, stop_server, generate_image, get_job_status, get_available_styles, get_available_models, and upscale_or_vary_image. Interface to the Fooocus image generation AI with style presets, various models and upscaling options.
-~- "google-search" - 1 tool: google_search. Performs web searches using Google's search engine with customisable parameters.
-~- "localviz" - 6 tools: test_api, manage_api, list_styles, list_aspect_ratios, generate_image, and check_job_status. Local image generation interface for Fooocus with style presets and aspect ratio controls.
-~- "leonardoAI" - 3 tools: generate_image, get_models, and check_generation. Creates AI-generated images with Leonardo.ai's advanced image generation capabilities.
-~- "markdownify" - 1 tool: markdownify. Converts content between different formats with a focus on generating clean markdown.
-~- "neon" - 11 tools: create_project, describe_project, list_projects, delete_project, create_branch, delete_branch, describe_branch, get_connection_string, get_database_tables, describe_table_schema, and run_sql. Manages Neon serverless PostgreSQL databases with branch, migration and query functionality.
-~- "myai-memory-sync" - 8 tools: get_template, update_template, get_section, update_section, list_platforms, sync_platforms, list_presets, and create_preset. Synchronises and manages AI memory sections and templates across platforms.
-~- "puppeteer" - 7 tools: navigate, screenshot, evaluate, click, fill, hover, and select. Automates browser interactions for web scraping, testing and automated workflows.
-~- "sequential-thinking" - 1 tool: sequentialthinking. Facilitates step-by-step problem-solving through structured thought processes.
-~- "serveMyAPI" - 4 tools: store-api-key, get-api-key, delete-api-key, and list-api-keys. Securely stores and retrieves API keys from the macOS Keychain for use across projects.
-~- "wcgw" - 1 tool: analyze_code. "What Could Go Wrong" AI-powered code analysis for identifying potential issues and bugs.
-~- "agentql" - 2 tools: create_agent and query_agent. Integrates with AgentQL to build and manage autonomous agents with various capabilities.
-~- "mcp-compass" - 2 tools: get_coordinates and get_directions. Navigation and location-based services with mapping and direction capabilities.
-~- "xcode-server" - 4 tools: list_projects, build_project, run_tests, and deploy_app. Interfaces with Xcode for iOS/macOS development workflows and build processes.
## once selected output the json with this format
'''
{
"mcpServers": {
[mcpserver details][,]
}
}
'''
# the individual mcp server details
'''
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
}
'''
'''
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/jamesking/"
]
}
'''
'''
"puppeteer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-puppeteer"
]
}
'''
'''
"markdownify": {
"command": "node",
"args": [
"/Users/jamesking/CascadeProjects/markdownify-mcp/dist/index.js"
],
"env": {
"UV_PATH": "/Users/jamesking/.local/bin/uv"
}
}
'''
'''
"apple-shortcuts": {
"command": "npx",
"args": [
"/Users/jamesking/CascadeProjects/mcp-server-apple-shortcuts/build/index.js"
]
}
'''
'''
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"BRAVE_API_KEY": "${await serveMyAPI.getKey('brave_search')}"
}
}
'''
'''
"serveMyAPI": {
"command": "node",
"args": [
"/Users/jamesking/CascadeProjects/serveMyAPI/dist/index.js"
]
}
'''
'''
"perplexity-ask": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PERPLEXITY_API_KEY",
"mcp/perplexity-ask"
],
"env": {
"PERPLEXITY_API_KEY": "${await serveMyAPI.getKey('perplexity')}"
}
}
'''
'''
"google-search": {
"command": "npx",
"args": [
"-y",
"@adenot/mcp-google-search"
],
"env": {
"GOOGLE_API_KEY": "${await serveMyAPI.getKey('google_search')}",
"GOOGLE_SEARCH_ENGINE_ID": "${await serveMyAPI.getKey('google_search_engine_id')}"
}
}
'''
'''
"myai-memory-sync": {
"command": "node",
"args": [
"/Users/jamesking/CascadeProjects/myAImemory/dist/index.js"
],
"transport":"stdio"
}
'''
'''
"neon": {
"command": "npx",
"args": [
"-y",
"@neondatabase/mcp-server-neon",
"start",
"${await serveMyAPI.getKey('neon_database')}"
]
}
'''
'''
"wcgw": {
"command": "uv",
"args": [
"tool",
"run",
"--from",
"wcgw@latest",
"--python",
"3.12",
"wcgw_mcp"
]
}
'''
'''
"agentql": {
"command": "npx",
"args": [
"-y",
"agentql-mcp"
],
"env": {
"AGENTQL_API_KEY": "${await serveMyAPI.getKey('agentql')}"
}
}
'''
'''
"mcp-compass": {
"command": "npx",
"args": [
"-y",
"@liuyoshio/mcp-compass"
]
}
'''
'''
"server-sequential-thinking": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@smithery-ai/server-sequential-thinking",
"--config",
"\"{}\""
]
}
'''
'''
"fooocus": {
"command": "bash",
"args": [
"/Users/jamesking/CascadeProjects/localViz/fooocus_mcp_wrapper.sh"
],
"transport": "stdio",
"functions": [
{
"name": "configure_api",
"description": "Configure the Fooocus API connection settings with host, port, paths and auto-start options"
},
{
"name": "check_status",
"description": "Check if the Fooocus API is responding and get version information"
},
{
"name": "start_server",
"description": "Start the Fooocus API server if it's not already running, with optional paths"
},
{
"name": "stop_server",
"description": "Stop the Fooocus API server if it was started by this instance"
},
{
"name": "generate_image",
"description": "Generate images from text prompt using Fooocus with style, seed and resolution options"
},
{
"name": "get_job_status",
"description": "Get the status of a previously submitted asynchronous generation job"
},
{
"name": "get_available_styles",
"description": "Get all available style presets from Fooocus"
},
{
"name": "get_available_models",
"description": "Get all available AI models from Fooocus"
},
{
"name": "upscale_or_vary_image",
"description": "Upscale or create variations of an existing image with specified parameters"
}
]
}
'''
'''
"localviz": {
"command": "bash",
"args": [
"/Users/jamesking/CascadeProjects/localViz-mcp/start-v1.sh"
],
"transport": "stdio",
"env": {
"FOOOCUS_API_PATH": "/Users/jamesking/CascadeProjects/Fooocus-API",
"FOOOCUS_PATH": "/Users/jamesking/CascadeProjects/Fooocus",
"OUTPUT_DIR": "/Users/jamesking/New Model Dropbox/James King/Air - JK Work/imageGens",
"FOOOCUS_API_URL": "http://127.0.0.1:8888",
"MANAGE_API": "true"
},
"functions": [
{
"name": "test_api",
"description": "Test connection to the Fooocus API"
},
{
"name": "manage_api",
"description": "Manually start or stop the Fooocus API"
},
{
"name": "list_styles",
"description": "List all available style presets for image generation"
},
{
"name": "list_aspect_ratios",
"description": "List available aspect ratios for image generation"
},
{
"name": "generate_image",
"description": "Generate an image based on a text description using Fooocus API. Results will be saved locally."
},
{
"name": "check_job_status",
"description": "Check the status of an image generation job"
}
]
}
'''
'''
"leonardoAI": {
"command": "npm",
"args": [
"start"
],
"cwd": "/Users/jamesking/CascadeProjects/leoViz",
"transport": "stdio",
"env": {
"LEONARDO_API_KEY": "${await serveMyAPI.getKey('cMax Leonardo API')}"
}
}
'''