[{"data":1,"prerenderedAt":467},["ShallowReactive",2],{"integrations-ja:/integrations/mcp":3},{"id":4,"title":5,"active":6,"body":7,"description":454,"extension":253,"eyebrow":455,"icon":456,"image":457,"meta":458,"name":459,"navTitle":459,"navigation":6,"order":460,"path":461,"seo":462,"slug":173,"status":463,"stem":464,"summary":465,"toc":457,"__hash__":466},"integrations_en/integrations/mcp.md","Generic MCP clients + OpenPets",true,{"type":8,"value":9,"toc":437},"minimark",[10,108,132,190,231,280,319,378],[11,12,16,17,16,22,16,26,16,97],"section",{"id":13,"className":14},"overview",[15],"docs-section","\n  ",[18,19,21],"h2",{"id":20},"what-this-integration-does","What this integration does",[23,24,25],"p",{},"\n    The Generic MCP integration is for any assistant or editor that can launch a\n    stdio MCP server. Instead of using a dedicated OpenPets setup flow, you add\n    the OpenPets MCP command to your client's MCP configuration.\n  ",[27,28,31,32,16],"div",{"className":29},[30],"docs-table-wrap","\n    ",[33,34,35,36,35,53,31],"table",{},"\n      ",[37,38,39,40,35],"thead",{},"\n        ",[41,42,43,47,50],"tr",{},[44,45,46],"th",{},"Tool",[44,48,49],{},"Purpose",[44,51,52],{},"Safety model",[54,55,39,56,39,71,39,84,35],"tbody",{},[41,57,58,65,68],{},[59,60,61],"td",{},[62,63,64],"code",{},"openpets_status",[59,66,67],{},"Checks whether OpenPets is reachable and which pet is targeted.",[59,69,70],{},"Read-only setup and health check.",[41,72,73,78,81],{},[59,74,75],{},[62,76,77],{},"openpets_react",[59,79,80],{},"Changes the pet reaction without showing text.",[59,82,83],{},"Use for silent states like thinking, testing, waiting, success, or error.",[41,85,86,91,94],{},[59,87,88],{},[62,89,90],{},"openpets_say",[59,92,93],{},"Shows one short visible speech bubble.",[59,95,96],{},"Rejects long, multiline, code-like, URL/path-like, or secret-looking messages.",[23,98,99,100,103,104,107],{},"\n    Runtime is local. Your MCP client launches ",[62,101,102],{},"@open-pets/mcp",", the MCP\n    server uses ",[62,105,106],{},"@open-pets/client",", and the client talks to the running\n    OpenPets desktop app over local IPC.\n  ",[11,109,16,112,16,115],{"id":110,"className":111},"requirements",[15],[18,113,114],{"id":110},"Requirements",[116,117,31,118,31,122,31,125,16],"ul",{},[119,120,121],"li",{},"The OpenPets desktop app must be running for pet updates to work.",[119,123,124],{},"Your assistant or editor must support stdio MCP servers.",[119,126,127,128,131],{},"Node.js and npm must be available if you use the published ",[62,129,130],{},"npx"," command.",[11,133,16,136,16,140,16,143,16,164],{"id":134,"className":135},"config",[15],[18,137,139],{"id":138},"generic-mcp-config","Generic MCP config",[23,141,142],{},"\n    MCP clients use different root keys, but the command and arguments are the\n    important part. Adapt the wrapper shape to your client's MCP format.\n  ",[27,144,31,147,31,158,16],{"className":145},[146],"docs-code",[27,148,151,155],{"className":149},[150],"docs-code-bar",[152,153,154],"span",{},"Generic stdio MCP server",[152,156,157],{},"json",[159,160,161],"pre",{},[62,162,163],{},"{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets/mcp@latest\"]\n    }\n  }\n}",[23,165,166,167,170,171,174,175,178,179,182,183,185,186,189],{},"\n    Some clients use a ",[62,168,169],{},"servers",", ",[62,172,173],{},"mcp",", or ",[62,176,177],{},"context_servers","\n    root instead of ",[62,180,181],{},"mcpServers",". Keep the command as\n    ",[62,184,130],{}," and the args as ",[62,187,188],{},"[\"-y\", \"@open-pets/mcp@latest\"]"," unless\n    your client requires a different executable format.\n  ",[11,191,16,194,16,197,16,204,16,220],{"id":192,"className":193},"pet-routing",[15],[18,195,196],{"id":192},"Pet routing",[23,198,199,200,203],{},"\n    By default, the MCP server targets the desktop app's default pet. Add\n    ",[62,201,202],{},"--pet \u003Cpet-id>"," when you want this MCP process to request a specific\n    installed pet.\n  ",[27,205,31,207,31,215,16],{"className":206},[146],[27,208,210,213],{"className":209},[150],[152,211,212],{},"Target a specific pet",[152,214,157],{},[159,216,217],{},[62,218,219],{},"{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets/mcp@latest\", \"--pet\", \"fixer\"]\n    }\n  }\n}",[116,221,31,222,31,225,31,228,16],{},[119,223,224],{},"If the requested pet is available, OpenPets routes this MCP session to that pet.",[119,226,227],{},"If the requested pet is missing or unavailable, OpenPets falls back safely instead of breaking the assistant.",[119,229,230],{},"Explicit pet routing uses a short lease so agent pets can clean up automatically.",[11,232,16,235,16,239,16,242],{"id":233,"className":234},"instructions",[15],[18,236,238],{"id":237},"recommended-assistant-instructions","Recommended assistant instructions",[23,240,241],{},"\n    MCP gives your assistant tools, but instructions teach it how to use those\n    tools without leaking private context into a visible desktop bubble. Add a\n    short rule block wherever your MCP client stores assistant instructions.\n  ",[27,243,31,245,31,254],{"className":244},[146],[27,246,248,251],{"className":247},[150],[152,249,250],{},"OpenPets assistant guidance",[152,252,253],{},"md",[159,255,256,259],{},[62,257,258],{},"OpenPets MCP tools may be available.\n",[116,260,261,275],{},[62,262,263,266,269,272],{},[119,264,265],{},"Use openpets_status before using OpenPets or when debugging availability.",[119,267,268],{},"Use openpets_react for silent state changes like thinking, editing, testing, waiting, success, or error.",[119,270,271],{},"Use openpets_say only for short visible status messages.",[119,273,274],{},"Never send code, logs, command output, file paths, URLs, secrets, tokens, user prompts, or private data to openpets_say.",[119,276,277],{},[62,278,279],{},"Do not spam every internal step.",[11,281,16,284,16,288,16,291,16,308],{"id":282,"className":283},"test",[15],[18,285,287],{"id":286},"test-the-connection","Test the connection",[23,289,290],{},"\n    After your MCP client loads the server, ask it to use OpenPets intentionally:\n  ",[27,292,31,294,31,303,16],{"className":293},[146],[27,295,297,300],{"className":296},[150],[152,298,299],{},"Test prompt",[152,301,302],{},"text",[159,304,305],{},[62,306,307],{},"Check OpenPets status. If it is available, send a short \"connected\" message and a waving reaction.",[23,309,310,311,170,313,315,316,318],{},"\n    If your client exposes MCP tool calls in a debug panel, you should see\n    ",[62,312,64],{},[62,314,77],{},", and\n    ",[62,317,90],{},".\n  ",[11,320,16,323,16,327],{"id":321,"className":322},"safety",[15],[18,324,326],{"id":325},"safety-and-behavior","Safety and behavior",[27,328,31,330,16],{"className":329},[30],[33,331,35,332,35,342,31],{},[37,333,334],{},[41,335,336,339],{},[44,337,338],{},"Protection",[44,340,341],{},"Behavior",[54,343,39,344,39,354,39,362,39,370,35],{},[41,345,346,349],{},[59,347,348],{},"Short speech",[59,350,351,353],{},[62,352,90],{}," accepts messages up to 140 characters.",[41,355,356,359],{},[59,357,358],{},"Single line",[59,360,361],{},"Multiline messages are rejected.",[41,363,364,367],{},[59,365,366],{},"No code or logs",[59,368,369],{},"Code-like text, command output, URLs, file paths, and secret-looking text are rejected.",[41,371,372,375],{},[59,373,374],{},"Best-effort availability",[59,376,377],{},"If the desktop app is closed, tools return an MCP error instead of crashing your assistant.",[11,379,16,382,16,385,16,390,16,408,16,412,16,430,16,434],{"id":380,"className":381},"troubleshooting",[15],[18,383,384],{"id":380},"Troubleshooting",[386,387,389],"h3",{"id":388},"the-mcp-tools-do-not-appear","The MCP tools do not appear",[116,391,31,392,31,395,31,398,31,405,16],{},[119,393,394],{},"Restart or reload your MCP client after changing config.",[119,396,397],{},"Confirm the client supports stdio MCP servers.",[119,399,400,401,404],{},"Run ",[62,402,403],{},"npx -y @open-pets/mcp@latest --help"," in a terminal to confirm npm can resolve the package.",[119,406,407],{},"Check that your config uses the correct root key for your client.",[386,409,411],{"id":410},"the-tools-appear-but-openpets-is-unavailable","The tools appear but OpenPets is unavailable",[116,413,31,414,31,417,31,423,16],{},[119,415,416],{},"Open the OpenPets desktop app first.",[119,418,419,420,422],{},"Ask the assistant to call ",[62,421,64],{},".",[119,424,425,426,429],{},"If using ",[62,427,428],{},"--pet",", confirm the pet id is installed with the OpenPets desktop app or the OpenPets CLI.",[386,431,433],{"id":432},"should-i-use-generic-mcp-or-a-dedicated-integration","Should I use Generic MCP or a dedicated integration?",[23,435,436],{},"\n    Use Claude Code or OpenCode pages when you use those tools; they include\n    dedicated setup flows and managed instructions. Use Generic MCP when your\n    tool supports MCP but OpenPets does not yet have a dedicated setup page for it.\n  ",{"title":438,"searchDepth":439,"depth":439,"links":440},"",2,[441,442,443,444,445,446,447,448],{"id":20,"depth":439,"text":21},{"id":110,"depth":439,"text":114},{"id":138,"depth":439,"text":139},{"id":192,"depth":439,"text":196},{"id":237,"depth":439,"text":238},{"id":286,"depth":439,"text":287},{"id":325,"depth":439,"text":326},{"id":380,"depth":439,"text":384,"children":449},[450,452,453],{"id":388,"depth":451,"text":389},3,{"id":410,"depth":451,"text":411},{"id":432,"depth":451,"text":433},"Connect any stdio MCP-capable assistant to OpenPets with the published OpenPets MCP server, safe tools, pet routing, and local desktop IPC.","stdio MCP","fa6-solid:plug",null,{},"Generic MCP",6,"/integrations/mcp",{"title":5,"description":454},"Active","integrations/mcp","Connect any assistant with stdio MCP support to OpenPets using the published @open-pets/mcp server.","PmKC6fyeiEP1ld2goHCy1VMoBXmalOVS3qYRYQH9e9E",1781360000091]