This project aims to create a personal MCP server for securely storing and accessing API keys across projects using the macOS Keychain.
- Setup:
npm install
- Start server:
npm run dev
- Test:
npm test
- Lint:
npm run lint
- Build:
npm run build
- 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
- TypeScript SDK for Model Context Protocol (MCP)
- macOS Keychain API for secure credential storage
- Express.js for API endpoints (if needed)
-- 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
-- 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)
-- 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
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)
-- 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)
-- 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
-- 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
-- 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
-- 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
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
-- 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
-- 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
-- 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
-- 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
-~- "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.
''' { "mcpServers": { [mcpserver 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')}" } } '''