Skip to content

Latest commit

 

History

History
499 lines (438 loc) · 16.2 KB

CLAUDE.md

File metadata and controls

499 lines (438 loc) · 16.2 KB

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: [email protected] | 07793988228 -- Personal Contact: [email protected] | 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')}" } } '''