{"_id":"@alanse/fish-audio-mcp-server","_rev":"11-1c3be41bae7c6a8e8cf87cab568badf5","name":"@alanse/fish-audio-mcp-server","dist-tags":{"latest":"0.6.1"},"versions":{"0.1.2":{"name":"@alanse/fish-audio-mcp-server","version":"0.1.2","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.1.2","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"86debed113c10f9d4d0abd7ea4110f1e581811cc","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.1.2.tgz","fileCount":23,"integrity":"sha512-5je6sTc+HHOqlkpaKkvrp1oIbny2ynbZjYlGg1ZsGoLOf85qPpZssfsFK9RpAqdIxhqHJctcXDpEHV6qzhg03g==","signatures":[{"sig":"MEUCIQCBqfi4kV9zi36njy3VJ3gPYC0KugQYz1ifFTitxaj+/QIgBGUytf+28WPnP6ANIMTn6AdneJlfBPbvS91fkidiYH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44148},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"acce32ea24c3aed789b8fd3026bd978c81e36abf","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"axios":"^1.6.2","dotenv":"^16.3.1","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.1.2_1751559920224_0.5452387655869735","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alanse/fish-audio-mcp-server","version":"0.2.0","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.2.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"27f2de71c3d71bf60b6ad8af9bb9346eacc8326e","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.2.0.tgz","fileCount":27,"integrity":"sha512-UHHUJbQ238jXOCxqKUQxZc7nnbY5lyonz/uTmndpFvNP0TJuYm5pHOAWnMv4kjbLyN7lBAZKnQQej0El4C8ZUA==","signatures":[{"sig":"MEYCIQC3Doqy9Myt3z24PPi3WmePge7tqtyLzCJKrNkDjH1MBAIhAOtrLLyynx8bHDYSOoAj+jfAcx/f/iFZ1F3vY0igF4DQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49803},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6f3b4730b2e947ec2f962f0d3034960484139793","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"axios":"^1.6.2","dotenv":"^16.3.1","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.2.0_1751560494495_0.14512267881424679","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alanse/fish-audio-mcp-server","version":"0.4.0","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.4.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"c1dcc47d8f9bd20f41f58f3446ef17d41545cc42","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.4.0.tgz","fileCount":43,"integrity":"sha512-/fwscMqXufFNtFktR421mXoSeS+t8LcV7R4DhYbrSyLAQYOcra+AIWu3f3PIH6KdvsGHcLgvU2B9FTK3vlsCUQ==","signatures":[{"sig":"MEYCIQCp7oz/v/NEHmHyC4kqVofJ/BhfPLKM+/8dtImSLYzbVwIhALmmYMtSakqFyGne9c6+8iTWxxV3XnPeHZPAawN5Iigt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96840},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d355f1fd3fd6340d01807ad2b42bc8dce6a77ece","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.4.0_1751561738983_0.34416383751617863","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@alanse/fish-audio-mcp-server","version":"0.4.1","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.4.1","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"ff17c2f7f8b0f396e977bb83ffb26de3732dda3d","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.4.1.tgz","fileCount":43,"integrity":"sha512-t7+OLA+cI9pThh27p/7fUOhPKc9C2xMcRS/tHleMbHx5XjdGaGsiGMdsw+Hg6iUIuuwSbnP9YDyIn1sRsipD4w==","signatures":[{"sig":"MEUCIAH4ZnG7mhP/y8f3wri5X9kB2zGh+rSmYAkzlFmCofwKAiEAqIs/WLtFUXAPrNX3MndKDZMM7qAUYBGj6MkfvRJI0ww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98548},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7283a1f16154a06bc2bfbfc867b1684ad6ea02e3","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.4.1_1751562914614_0.693402510432763","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alanse/fish-audio-mcp-server","version":"0.5.0","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.5.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"b312dbbf31bc0687f5e00858ff9b714d5a98d7b5","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.5.0.tgz","fileCount":43,"integrity":"sha512-aUfWmDMyqQ8FPRHm9NQAMq6VS6I5cOeKyw5kCD+XVWWq+ZcrM+MP5HmPnzjdSVbZrfelfZU7P5nHpEPmdwSSKg==","signatures":[{"sig":"MEYCIQCwng5QVC/KaUJvF62ANHj/XE+CYCF2Rc2EcJpKp3RqhwIhAJnlkaK/mdDlq5fuIIZgczMOfPyDcBrBll0qfpZ8fAn0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98231},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bf78f30287887b335bc1c5ead57fae9efc4d8471","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.5.0_1751563241223_0.4522634480655703","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@alanse/fish-audio-mcp-server","version":"0.5.1","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.5.1","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"329fb4aa9374c5fe83ea5b1eab1a14840c6e19a8","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.5.1.tgz","fileCount":43,"integrity":"sha512-dXUuu8UmT0OZhaTVbowvbrbnnWBDJc1dVS5qf48L0yThIxZugOsqRo07qSqWrcIZG6mZ0/NvG+zWqRbrs9hceA==","signatures":[{"sig":"MEYCIQDinegQTsYOY+qoMrlHC/GgOvZNp96MtkUbw+cxwP5h2gIhAKhIV8W8oTxXvvqcTm984ewr0IdgWdqHq3kFx1udKS2W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98529},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"580d118719727306bcb2e14606575fa4501ed2fe","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.5.1_1751563495520_0.5022008867288703","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@alanse/fish-audio-mcp-server","version":"0.5.2","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.5.2","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"ef73e97a86dcdb204e77e1015f7f24cdb2fd11ee","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.5.2.tgz","fileCount":43,"integrity":"sha512-ErcQi5WvXVuHyxmTGdjeNEiTa335Wvp1PwuqaI7UxZCe5uiLqpSK9bu2dZntU/m5RPGlWRDcnS0bOHUCCs9Ezw==","signatures":[{"sig":"MEQCIAQnv8qngwi1JQPgn3IPGpv81q6yygKYzk1n+uNaPVJDAiARjWKKqua9c6U+UFPwKK9Owfwq1gSWSD554IVz+9SqQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99132},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"780cb638bf3b251a6605175a16032289b713add4","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.5.2_1751564165912_0.6657574657922565","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@alanse/fish-audio-mcp-server","version":"0.5.3","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.5.3","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"847135a6155ca32ac1efa918cfac054285ac7e6b","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.5.3.tgz","fileCount":43,"integrity":"sha512-MGj5PdydO7+uJnlV7nGO+ZAtxdR76icT1BuNJV/pBgPXe2UcCmwq/7NKD0qIe07YSY9SodUDgFke2xwgHaxBbg==","signatures":[{"sig":"MEQCIHdCOuGsh/IJTv2N7nYcSo6fSzKbgPDgrFVjwu1h2fo0AiA+4nFkt4scCDqltNbgYdpoV8nR24H8Lx0tubrJs7+k8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99289},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6b9d00fbd827ec5986df0493d61716e753c8cb48","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","zod":"^3.23.8","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.5.3_1751564579317_0.7380808180216978","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@alanse/fish-audio-mcp-server","version":"0.5.4","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.5.4","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"1ec67b9719adba9b5567328401fdb919fc9c4e98","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.5.4.tgz","fileCount":43,"integrity":"sha512-FnPwz7vcccnO/Wl1yZoq6XXyC3urQtpWkZ7cFTbHLwubi4Cdv+4nu3pNtHmxQbxfWc596FrCt0Yznl4T+aHsDw==","signatures":[{"sig":"MEUCIF7V+jJ6eWr9jX1OLFmwDN15y5PkgHn6jeGF9se7W0OWAiEAoW+IvSiZ/pVq9I5g7622chu9HIxLakjkdOEqL+YksLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99466},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1c436c24218adef9d893b6f2ddfda7eddcd00bbe","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","zod":"3.23.8","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.5.4_1751565457795_0.6889839231722303","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alanse/fish-audio-mcp-server","version":"0.6.0","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","_id":"@alanse/fish-audio-mcp-server@0.6.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"bin":{"fish-audio-mcp-server":"dist/index.js"},"dist":{"shasum":"4a39cd1da8e64d2338253dfd9cdbdab6a2253f35","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.6.0.tgz","fileCount":51,"integrity":"sha512-ejwYgC7zOG0zJOTLG+9MEqbQRAw297dj6/l2QzTZGwbjeOcgZ0YxyMTg+EZxA/tv5RYgx0pexqFlS/rmpNRkfQ==","signatures":[{"sig":"MEQCIAEmoQIkMwt3llb1zcBRiI8Qae/MajIBzqDTVGP7NpzLAiB518sfKAET1N55wn8ZizGc/R98HU1PK7WGWljONUKEVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119985},"icon":"./dcos/icon_fish-audio.webp","main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c0066fac5348493682b9bdaf18099a6667fec91d","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanse-daichi","actor":{"name":"alanse-daichi","type":"user","email":"daichi.okazaki@alanse.co.jp"},"email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for Fish Audio Text-to-Speech integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3","zod":"3.23.8","axios":"^1.6.2","dotenv":"^16.3.1","msgpackr":"^1.11.4","fish-audio-sdk":"^2025.6.8","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","prettier":"^3.2.5","@types/ws":"^8.18.1","typescript":"^5.3.3","@types/node":"^20.11.24","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/fish-audio-mcp-server_0.6.0_1751597985847_0.5003023805266436","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alanse/fish-audio-mcp-server","version":"0.6.1","description":"MCP server for Fish Audio Text-to-Speech integration","main":"dist/index.js","type":"module","bin":{"fish-audio-mcp-server":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","test":"jest","lint":"eslint src --ext .ts","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"author":{"name":"Daichi Okazaki"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^0.6.0","axios":"^1.6.2","dotenv":"^16.3.1","fish-audio-sdk":"^2025.6.8","msgpackr":"^1.11.4","ws":"^8.18.3","zod":"3.23.8"},"devDependencies":{"@types/node":"^20.11.24","@types/ws":"^8.18.1","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","eslint":"^8.57.0","jest":"^29.7.0","prettier":"^3.2.5","ts-jest":"^29.1.2","tsx":"^4.7.1","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git"},"bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","icon":"./dcos/icon_fish-audio.webp","_id":"@alanse/fish-audio-mcp-server@0.6.1","gitHead":"f158e9e396614e2dc856d2f65d828f90e255704c","types":"./dist/index.d.ts","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-ndadJ+JuTfRc5p+EcK7GOgEy1B6TEoLG2YGPFUXGVq/jQcdyOwG0UP8mS83UMmo5JhBf2lPnRJHY6nLvKGrRfA==","shasum":"b9aea3000be9409c90ef801eccf52bae7631143d","tarball":"https://registry.npmjs.org/@alanse/fish-audio-mcp-server/-/fish-audio-mcp-server-0.6.1.tgz","fileCount":55,"unpackedSize":123124,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEHys1VSlaJEtcMvB7M1ZUlQIowA6f7EzoJAPxKp6OX9AiEAkAxwH9odX4JlpYYCMvpCMe80UKH2pqGcDEVCICWn1vk="}]},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp","actor":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp","type":"user"}},"directories":{},"maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fish-audio-mcp-server_0.6.1_1751623373059_0.047392542519029135"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-03T16:25:20.093Z","modified":"2025-07-04T10:02:53.500Z","0.1.2":"2025-07-03T16:25:20.411Z","0.2.0":"2025-07-03T16:34:54.678Z","0.4.0":"2025-07-03T16:55:39.169Z","0.4.1":"2025-07-03T17:15:14.824Z","0.5.0":"2025-07-03T17:20:41.379Z","0.5.1":"2025-07-03T17:24:55.710Z","0.5.2":"2025-07-03T17:36:06.114Z","0.5.3":"2025-07-03T17:42:59.563Z","0.5.4":"2025-07-03T17:57:37.963Z","0.6.0":"2025-07-04T02:59:46.035Z","0.6.1":"2025-07-04T10:02:53.306Z"},"bugs":{"url":"https://github.com/da-okazaki/mcp-fish-audio-server/issues"},"author":{"name":"Daichi Okazaki"},"license":"MIT","homepage":"https://github.com/da-okazaki/mcp-fish-audio-server#readme","keywords":["mcp","model-context-protocol","fish-audio","tts","text-to-speech","ai","llm"],"repository":{"type":"git","url":"git+https://github.com/da-okazaki/mcp-fish-audio-server.git"},"description":"MCP server for Fish Audio Text-to-Speech integration","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"readme":"# Fish Audio MCP Server\n\n<div align=\"center\">\n  <img src=\"./dcos/icon_fish-audio.webp\" alt=\"Fish Audio Logo\" width=\"300\" height=\"300\" />\n</div>\n\n[![npm version](https://badge.fury.io/js/@alanse%2Ffish-audio-mcp-server.svg)](https://badge.fury.io/js/@alanse%2Ffish-audio-mcp-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\nAn MCP (Model Context Protocol) server that provides seamless integration between Fish Audio's Text-to-Speech API and LLMs like Claude, enabling natural language-driven speech synthesis.\n\n## What is Fish Audio?\n\n[Fish Audio](https://fish.audio/) is a cutting-edge Text-to-Speech platform that offers:\n\n- 🌊 **State-of-the-art voice synthesis** with natural-sounding output\n- 🎯 **Voice cloning capabilities** to create custom voice models\n- 🌍 **Multilingual support** including English, Japanese, Chinese, and more\n- ⚡ **Low-latency streaming** for real-time applications\n- 🎨 **Fine-grained control** over speech prosody and emotions\n\nThis MCP server brings Fish Audio's powerful capabilities directly to your LLM workflows.\n\n## Features\n\n- 🎙️ **High-Quality TTS**: Leverage Fish Audio's state-of-the-art TTS models\n- 🌊 **Streaming Support**: Real-time audio streaming for low-latency applications\n- 🎨 **Multiple Voices**: Support for custom voice models via reference IDs\n- 🎯 **Smart Voice Selection**: Select voices by ID, name, or tags\n- 📚 **Voice Library Management**: Configure and manage multiple voice references\n- 🔧 **Flexible Configuration**: Environment variable-based configuration\n- 📦 **Multiple Audio Formats**: Support for MP3, WAV, PCM, and Opus\n- 🚀 **Easy Integration**: Simple setup with any MCP-compatible client\n\n## Quick Start\n\n### Installation\n\nYou can run this MCP server directly using npx:\n\n```bash\nnpx @alanse/fish-audio-mcp-server\n```\n\nOr install it globally:\n\n```bash\nnpm install -g @alanse/fish-audio-mcp-server\n```\n\n### Configuration\n\n1. Get your Fish Audio API key from [Fish Audio](https://fish.audio/)\n\n2. Set up environment variables:\n\n```bash\nexport FISH_API_KEY=your_fish_audio_api_key_here\n```\n\n3. Add to your MCP settings configuration:\n\n#### Single Voice Mode (Simple)\n```json\n{\n  \"mcpServers\": {\n    \"fish-audio\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanse/fish-audio-mcp-server\"],\n      \"env\": {\n        \"FISH_API_KEY\": \"your_fish_audio_api_key_here\",\n        \"FISH_MODEL_ID\": \"speech-1.6\",\n        \"FISH_REFERENCE_ID\": \"your_voice_reference_id_here\",\n        \"FISH_OUTPUT_FORMAT\": \"mp3\",\n        \"FISH_STREAMING\": \"false\",\n        \"FISH_LATENCY\": \"balanced\",\n        \"FISH_MP3_BITRATE\": \"128\",\n        \"FISH_AUTO_PLAY\": \"false\",\n        \"AUDIO_OUTPUT_DIR\": \"~/.fish-audio-mcp/audio_output\"\n      }\n    }\n  }\n}\n```\n\n#### Multiple Voice Mode (Advanced)\n```json\n{\n  \"mcpServers\": {\n    \"fish-audio\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanse/fish-audio-mcp-server\"],\n      \"env\": {\n        \"FISH_API_KEY\": \"your_fish_audio_api_key_here\",\n        \"FISH_MODEL_ID\": \"speech-1.6\",\n        \"FISH_REFERENCES\": \"[{'reference_id':'id1','name':'Alice','tags':['female','english']},{'reference_id':'id2','name':'Bob','tags':['male','japanese']},{'reference_id':'id3','name':'Carol','tags':['female','japanese','anime']}]\",\n        \"FISH_DEFAULT_REFERENCE\": \"id1\",\n        \"FISH_OUTPUT_FORMAT\": \"mp3\",\n        \"FISH_STREAMING\": \"false\",\n        \"FISH_LATENCY\": \"balanced\",\n        \"FISH_MP3_BITRATE\": \"128\",\n        \"FISH_AUTO_PLAY\": \"false\",\n        \"AUDIO_OUTPUT_DIR\": \"~/.fish-audio-mcp/audio_output\"\n      }\n    }\n  }\n}\n```\n\n## Environment Variables\n\n| Variable | Description | Default | Required |\n|----------|-------------|---------|----------|\n| `FISH_API_KEY` | Your Fish Audio API key | - | Yes |\n| `FISH_MODEL_ID` | TTS model to use (s1, speech-1.5, speech-1.6) | `s1` | Optional |\n| `FISH_REFERENCE_ID` | Default voice reference ID (single reference mode) | - | Optional |\n| `FISH_REFERENCES` | Multiple voice references (see below) | - | Optional |\n| `FISH_DEFAULT_REFERENCE` | Default reference ID when using multiple references | - | Optional |\n| `FISH_OUTPUT_FORMAT` | Default audio format (mp3, wav, pcm, opus) | `mp3` | Optional |\n| `FISH_STREAMING` | Enable streaming mode (HTTP/WebSocket) | `false` | Optional |\n| `FISH_LATENCY` | Latency mode (normal, balanced) | `balanced` | Optional |\n| `FISH_MP3_BITRATE` | MP3 bitrate (64, 128, 192) | `128` | Optional |\n| `FISH_AUTO_PLAY` | Auto-play audio and enable real-time playback | `false` | Optional |\n| `AUDIO_OUTPUT_DIR` | Directory for audio file output | `~/.fish-audio-mcp/audio_output` | Optional |\n\n### Configuring Multiple Voice References\n\nYou can configure multiple voice references in two ways:\n\n#### JSON Array Format (Recommended)\nUse the `FISH_REFERENCES` environment variable with a JSON array:\n\n```bash\nFISH_REFERENCES='[\n  {\"reference_id\":\"id1\",\"name\":\"Alice\",\"tags\":[\"female\",\"english\"]},\n  {\"reference_id\":\"id2\",\"name\":\"Bob\",\"tags\":[\"male\",\"japanese\"]},\n  {\"reference_id\":\"id3\",\"name\":\"Carol\",\"tags\":[\"female\",\"japanese\",\"anime\"]}\n]'\nFISH_DEFAULT_REFERENCE=\"id1\"\n```\n\n#### Individual Format (Backward Compatibility)\nUse numbered environment variables:\n\n```bash\nFISH_REFERENCE_1_ID=id1\nFISH_REFERENCE_1_NAME=Alice\nFISH_REFERENCE_1_TAGS=female,english\n\nFISH_REFERENCE_2_ID=id2\nFISH_REFERENCE_2_NAME=Bob\nFISH_REFERENCE_2_TAGS=male,japanese\n```\n\n## Usage\n\nOnce configured, the Fish Audio MCP server provides two tools to LLMs.\n\n### Tool 1: `fish_audio_tts`\n\nGenerates speech from text using Fish Audio's TTS API.\n\n#### Parameters\n\n- `text` (required): Text to convert to speech (max 10,000 characters)\n- `reference_id` (optional): Voice model reference ID\n- `reference_name` (optional): Select voice by name\n- `reference_tag` (optional): Select voice by tag\n- `streaming` (optional): Enable streaming mode\n- `format` (optional): Output format (mp3, wav, pcm, opus)\n- `mp3_bitrate` (optional): MP3 bitrate (64, 128, 192)\n- `normalize` (optional): Enable text normalization (default: true)\n- `latency` (optional): Latency mode (normal, balanced)\n- `output_path` (optional): Custom output file path\n- `auto_play` (optional): Automatically play the generated audio\n- `websocket_streaming` (optional): Use WebSocket streaming instead of HTTP\n- `realtime_play` (optional): Play audio in real-time during WebSocket streaming\n\n**Voice Selection Priority**: reference_id > reference_name > reference_tag > default\n\n### Tool 2: `fish_audio_list_references`\n\nLists all configured voice references.\n\n#### Parameters\n\nNo parameters required.\n\n#### Returns\n\n- List of configured voice references with their IDs, names, and tags\n- Default reference ID\n\n### Examples\n\n#### Basic Text-to-Speech\n\n```\nUser: \"Generate speech saying 'Hello, world! Welcome to Fish Audio TTS.'\"\n\nClaude: I'll generate speech for that text using Fish Audio TTS.\n\n[Uses fish_audio_tts tool with text parameter]\n\nResult: Audio file saved to ./audio_output/tts_2025-01-03T10-30-00.mp3\n```\n\n#### Using Custom Voice by ID\n\n```\nUser: \"Generate speech with voice model xyz123 saying 'This is a custom voice test'\"\n\nClaude: I'll generate speech using the specified voice model.\n\n[Uses fish_audio_tts tool with text and reference_id parameters]\n\nResult: Audio generated with custom voice model xyz123\n```\n\n#### Using Voice by Name\n\n```\nUser: \"Use Alice's voice to say 'Hello from Alice'\"\n\nClaude: I'll generate speech using Alice's voice.\n\n[Uses fish_audio_tts tool with reference_name: \"Alice\"]\n\nResult: Audio generated with Alice's voice\n```\n\n#### Using Voice by Tag\n\n```\nUser: \"Generate Japanese speech saying 'こんにちは' with an anime voice\"\n\nClaude: I'll generate Japanese speech with an anime-style voice.\n\n[Uses fish_audio_tts tool with reference_tag: \"anime\"]\n\nResult: Audio generated with anime voice style\n```\n\n#### List Available Voices\n\n```\nUser: \"What voices are available?\"\n\nClaude: I'll list all configured voice references.\n\n[Uses fish_audio_list_references tool]\n\nResult:\n- Alice (id: id1) - Tags: female, english [Default]\n- Bob (id: id2) - Tags: male, japanese\n- Carol (id: id3) - Tags: female, japanese, anime\n```\n\n#### HTTP Streaming Mode\n\n```\nUser: \"Generate a long speech in streaming mode about the benefits of AI\"\n\nClaude: I'll generate the speech in streaming mode for faster response.\n\n[Uses fish_audio_tts tool with streaming: true]\n\nResult: Streaming audio saved to ./audio_output/tts_2025-01-03T10-35-00.mp3\n```\n\n#### WebSocket Real-time Streaming\n\n```\nUser: \"Stream and play in real-time: 'Welcome to the future of AI'\"\n\nClaude: I'll stream the speech via WebSocket and play it in real-time.\n\n[Uses fish_audio_tts tool with websocket_streaming: true, realtime_play: true]\n\nResult: Audio streamed and played in real-time via WebSocket\n```\n\n## Development\n\n### Local Development\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/da-okazaki/mcp-fish-audio-server.git\ncd mcp-fish-audio-server\n```\n\n2. Install dependencies:\n```bash\nnpm install\n```\n\n3. Create `.env` file:\n```bash\ncp .env.example .env\n# Edit .env with your API key\n```\n\n4. Build the project:\n```bash\nnpm run build\n```\n\n5. Run in development mode:\n```bash\nnpm run dev\n```\n\n### Testing\n\nRun the test suite:\n```bash\nnpm test\n```\n\n### Project Structure\n\n```\nmcp-fish-audio-server/\n├── src/\n│   ├── index.ts          # MCP server entry point\n│   ├── tools/\n│   │   └── tts.ts        # TTS tool implementation\n│   ├── services/\n│   │   └── fishAudio.ts  # Fish Audio API client\n│   ├── types/\n│   │   └── index.ts      # TypeScript definitions\n│   └── utils/\n│       └── config.ts     # Configuration management\n├── tests/                # Test files\n├── audio_output/         # Default audio output directory\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n## API Documentation\n\n### Fish Audio Service\n\nThe service provides two main methods:\n\n1. **generateSpeech**: Standard TTS generation\n   - Returns audio buffer\n   - Suitable for short texts\n   - Lower memory usage\n\n2. **generateSpeechStream**: Streaming TTS generation\n   - Returns audio stream\n   - Suitable for long texts\n   - Real-time processing\n\n### Error Handling\n\nThe server handles various error scenarios:\n\n- **INVALID_API_KEY**: Invalid or missing API key\n- **NETWORK_ERROR**: Connection issues with Fish Audio API\n- **INVALID_PARAMS**: Invalid request parameters\n- **QUOTA_EXCEEDED**: API rate limit exceeded\n- **SERVER_ERROR**: Fish Audio server errors\n\n## Troubleshooting\n\n### Common Issues\n\n1. **\"FISH_API_KEY environment variable is required\"**\n   - Ensure you've set the `FISH_API_KEY` environment variable\n   - Check that the API key is valid\n\n2. **\"Network error: Unable to reach Fish Audio API\"**\n   - Check your internet connection\n   - Verify Fish Audio API is accessible\n   - Check for proxy/firewall issues\n\n3. **\"Text length exceeds maximum limit\"**\n   - Split long texts into smaller chunks\n   - Maximum supported length is 10,000 characters\n\n4. **Audio files not appearing**\n   - Check the `AUDIO_OUTPUT_DIR` path exists\n   - Ensure write permissions for the directory\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [Fish Audio](https://fish.audio/) for providing the excellent TTS API\n- [Anthropic](https://anthropic.com/) for creating the Model Context Protocol\n- The MCP community for inspiration and examples\n\n## Support\n\nFor issues, questions, or contributions, please visit the [GitHub repository](https://github.com/da-okazaki/mcp-fish-audio-server).\n\n## Changelog\n\n### v0.6.0 (2025-01-03)\n- Added multiple voice reference management system\n- New tool: `fish_audio_list_references` to list configured voices\n- Voice selection by name or tag in addition to ID\n- Support for configuring multiple voices with metadata\n- Added FISH_REFERENCES and FISH_DEFAULT_REFERENCE environment variables\n- Enhanced voice selection with priority: ID > Name > Tag > Default\n\n### v0.5.4 (2025-01-03)\n- Fixed zod version compatibility issues\n- Resolved dependency conflicts between MCP SDK and Fish Audio SDK\n- Verified local dev and build functionality\n\n### v0.5.3 (2025-01-03)\n- Fixed missing zod dependency causing module resolution errors\n- Improved compatibility when running via npx\n\n### v0.5.2 (2025-01-03)\n- Fixed audio playback issue with FISH_STREAMING=true\n- Fixed tilde (~) expansion in AUDIO_OUTPUT_DIR\n- Improved stability by separating HTTP and WebSocket streaming\n\n### v0.5.1 (2025-01-03)\n- Improved documentation formatting and clarity\n- Updated environment variables table for better readability\n- Made documentation more generic for all MCP clients\n\n### v0.5.0 (2025-01-03)\n- Simplified environment variables: removed FISH_WEBSOCKET_STREAMING and FISH_REALTIME_PLAY\n- WebSocket streaming now controlled by FISH_STREAMING\n- Real-time playback now controlled by FISH_AUTO_PLAY\n- Cleaner configuration with unified controls\n\n### v0.4.1 (2025-01-03)\n- Added intelligent environment variable mapping\n- FISH_WEBSOCKET_STREAMING defaults to FISH_STREAMING\n- FISH_REALTIME_PLAY defaults to FISH_AUTO_PLAY\n- Simplified configuration with smart defaults\n\n### v0.4.0 (2025-01-03)\n- Refactored to use official Fish Audio SDK\n- Improved WebSocket streaming implementation\n- Fixed auto-play functionality\n- Better error handling and connection stability\n- Latency parameter now properly supported (normal/balanced)\n- Cleaner codebase with SDK integration\n\n### v0.3.0 (2025-01-03)\n- Added WebSocket streaming support for real-time TTS\n- Added real-time audio playback during WebSocket streaming\n- New parameters: `websocket_streaming` and `realtime_play`\n- Support for both HTTP and WebSocket streaming modes\n- Real-time player for immediate audio output\n\n### v0.2.0 (2025-01-03)\n- Added automatic audio playback feature with `auto_play` parameter\n- Added FISH_AUTO_PLAY environment variable for default behavior\n- Support for cross-platform audio playback (macOS, Windows, Linux)\n- HTTP streaming mode implementation\n\n### v0.1.2 (2025-01-03)\n- Changed npm package name to @alanse/fish-audio-mcp-server\n\n### v0.1.1 (2025-01-03)\n- Fixed directory creation error when running via npx\n- Changed default audio output to user's home directory\n\n### v0.1.0 (2025-01-03)\n- Initial release\n- Basic TTS functionality\n- Streaming support\n- Environment variable configuration\n- Multiple audio format support\n","readmeFilename":"README.md"}