{"_id":"@ainecto/mcp","_rev":"4-b714eb92b008db4938bc5cbcf4740b54","name":"@ainecto/mcp","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@ainecto/mcp","version":"0.1.0","_id":"@ainecto/mcp@0.1.0","maintainers":[{"name":"ryan9071","email":"ryan@codelive.co.kr"}],"bin":{"mcp":"dist/bin/mcp.js","ainecto":"dist/bin/ainecto.js","ainecto-mcp":"dist/bin/mcp.js"},"dist":{"shasum":"42e8af18ee7b54c43cd85ecf8e3b0d6b10baf8d6","tarball":"https://registry.npmjs.org/@ainecto/mcp/-/mcp-0.1.0.tgz","fileCount":6,"integrity":"sha512-gGHIKt+euDQN3KRmegsR/9bWOofk2TaEPs2yrvnTIP4I/j6BrzMO+0QfJtADsyhq+hDMvz0oTGSPMRvRDbz3bw==","signatures":[{"sig":"MEUCIQDufnHu9sBb5Wgceur5F8GWZCa6XgiR2S6Xffnk+XoVFQIgXiPdggNFdcF1cHXEMiobGxuTHnxZB2Dr1kvQMraDjKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":477380},"type":"module","engines":{"node":">=18"},"gitHead":"946b9b6bb077cb14d78b633624528b37e3b5d145","private":false,"scripts":{"test":"vitest run","build":"tsup && node scripts/chmod-bins.mjs","prepack":"npm run typecheck && npm test && npm run build","smoke:mcp":"tsx scripts/smoke-mcp.ts","typecheck":"tsc -p tsconfig.json --noEmit","sync:tools":"tsx scripts/sync-tools.ts","catalog:fixture":"vitest run test/catalog.test.ts","smoke:attachments":"tsx scripts/smoke-attachment-upload.ts"},"_npmUser":{"name":"ryan9071","email":"ryan@codelive.co.kr"},"_npmVersion":"10.9.3","description":"Ainecto MCP connector and first-party CLI.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^20.19.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1783668848649_0.7972363786014742","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ainecto/mcp","version":"0.1.2","license":"UNLICENSED","_id":"@ainecto/mcp@0.1.2","maintainers":[{"name":"ryan9071","email":"ryan@codelive.co.kr"}],"homepage":"https://ainecto.com","bugs":{"url":"https://github.com/codelives/ainecto/issues"},"bin":{"mcp":"dist/bin/mcp.js","ainecto":"dist/bin/ainecto.js","ainecto-mcp":"dist/bin/mcp.js"},"dist":{"shasum":"11f8a416c88cc6e5ceb94f5bd512f557bff361de","tarball":"https://registry.npmjs.org/@ainecto/mcp/-/mcp-0.1.2.tgz","fileCount":6,"integrity":"sha512-NFuNEg+LEP0ygIcQtKQybklrAQ13Bl7JkathA84fUU42779OJJ8o7ikR9advcTDxIzwveVD83SvyT41PkCeouA==","signatures":[{"sig":"MEYCIQDUo1ZXFn3nhmwFgIKWgh7BwbUYW5TSeyIRua3++n6YFwIhAIS1c7OMd0K2GRANwn99Bk3hPQkWbQmzCecHkRbXCcJI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478482},"type":"module","engines":{"node":">=18"},"gitHead":"65551fa48b4c1bf815e9417b058c0dab1f050485","mcpName":"io.github.codelives/ainecto","private":false,"scripts":{"test":"vitest run","build":"tsup && node scripts/chmod-bins.mjs","prepack":"npm run typecheck && npm test && npm run build","smoke:mcp":"tsx scripts/smoke-mcp.ts","typecheck":"tsc -p tsconfig.json --noEmit","sync:tools":"tsx scripts/sync-tools.ts","catalog:fixture":"vitest run test/catalog.test.ts","smoke:attachments":"tsx scripts/smoke-attachment-upload.ts"},"_npmUser":{"name":"ryan9071","email":"ryan@codelive.co.kr"},"repository":{"url":"git+https://github.com/codelives/ainecto.git","type":"git"},"_npmVersion":"10.9.3","description":"Ainecto MCP connector and first-party CLI.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^20.19.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.2_1783671190635_0.24987293738156757","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ainecto/mcp","version":"0.1.3","license":"UNLICENSED","_id":"@ainecto/mcp@0.1.3","maintainers":[{"name":"ryan9071","email":"ryan@codelive.co.kr"}],"homepage":"https://ainecto.com","bugs":{"url":"https://github.com/codelives/ainecto/issues"},"bin":{"mcp":"dist/bin/mcp.js","ainecto":"dist/bin/ainecto.js","ainecto-mcp":"dist/bin/mcp.js"},"dist":{"shasum":"87961473f8b87b1ea13c7fa3baebbc8d92f67511","tarball":"https://registry.npmjs.org/@ainecto/mcp/-/mcp-0.1.3.tgz","fileCount":6,"integrity":"sha512-f8YN5NMSBuDSqG9bPFTXHmNVbJ+aE5UALbtT+kJhsVLeP20XoHaqgnxip4UO8nTpJ3/W40F/KYEnX7c/lFHCPg==","signatures":[{"sig":"MEUCIBJAKTMRr1QT89VOKHgKJVsiPhHQT4NtKs5McjgCMhCMAiEAuGEzjqWa8kUJgiOLHbT81rB7xP4Czc22GIV4xtJVzSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691055},"type":"module","engines":{"node":">=18"},"gitHead":"47c819a3f5dd7d175f126e00b03517d92d67250a","mcpName":"io.github.codelives/ainecto","private":false,"scripts":{"test":"vitest run","build":"tsup && node scripts/chmod-bins.mjs","prepack":"npm run typecheck && npm test && npm run build","smoke:mcp":"tsx scripts/smoke-mcp.ts","typecheck":"tsc -p tsconfig.json --noEmit","sync:tools":"tsx scripts/sync-tools.ts","catalog:fixture":"vitest run test/catalog.test.ts","smoke:attachments":"tsx scripts/smoke-attachment-upload.ts"},"_npmUser":{"name":"ryan9071","email":"ryan@codelive.co.kr"},"repository":{"url":"git+https://github.com/codelives/ainecto.git","type":"git"},"_npmVersion":"10.9.3","description":"Ainecto MCP connector and first-party CLI.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^20.19.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.3_1783852113524_0.9369157448333334","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ainecto/mcp","version":"0.1.4","description":"Ainecto MCP connector and first-party CLI.","mcpName":"io.github.codelives/ainecto","type":"module","private":false,"license":"UNLICENSED","homepage":"https://ainecto.com","repository":{"type":"git","url":"git+https://github.com/codelives/ainecto.git"},"engines":{"node":">=18"},"bin":{"mcp":"dist/bin/mcp.js","ainecto-mcp":"dist/bin/mcp.js","ainecto":"dist/bin/ainecto.js"},"scripts":{"build":"tsup && node scripts/chmod-bins.mjs","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run","sync:tools":"tsx scripts/sync-tools.ts","smoke:mcp":"tsx scripts/smoke-mcp.ts","smoke:attachments":"tsx scripts/smoke-attachment-upload.ts","catalog:fixture":"vitest run test/catalog.test.ts","prepack":"npm run typecheck && npm test && npm run build"},"devDependencies":{"@types/node":"^20.19.8","tsup":"^8.5.0","tsx":"^4.20.3","typescript":"^5.8.3","vitest":"^3.2.4"},"_id":"@ainecto/mcp@0.1.4","gitHead":"77d06a368027167d216cd9d2ddb0cd636c60aae0","bugs":{"url":"https://github.com/codelives/ainecto/issues"},"_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-XIOZN5Gql34m2ehbAllqVUJk+ccrFGoDcJ+cvP95HPKwQ8uLWCy+Ix9rEGSsUZZwye5TBBh3A6Mky40Ft6t6yA==","shasum":"79f3533305e7f0c8bc75a65a0df34a0ab3776e4b","tarball":"https://registry.npmjs.org/@ainecto/mcp/-/mcp-0.1.4.tgz","fileCount":6,"unpackedSize":719646,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDLWycc3wXToN+ZWVOdms3UYlc9BoD+QcUYhIYjoxrpiAIgX0bxKBcG1rGRaZvqNqUzc6DcN8dkhJ3A+GPDgmA352M="}]},"_npmUser":{"name":"ryan9071","email":"ryan@codelive.co.kr"},"directories":{},"maintainers":[{"name":"ryan9071","email":"ryan@codelive.co.kr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.4_1783853487013_0.43000886541746386"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T07:34:08.473Z","modified":"2026-07-12T10:51:27.310Z","0.1.0":"2026-07-10T07:34:08.806Z","0.1.2":"2026-07-10T08:13:10.790Z","0.1.3":"2026-07-12T10:28:33.678Z","0.1.4":"2026-07-12T10:51:27.186Z"},"bugs":{"url":"https://github.com/codelives/ainecto/issues"},"license":"UNLICENSED","homepage":"https://ainecto.com","repository":{"type":"git","url":"git+https://github.com/codelives/ainecto.git"},"description":"Ainecto MCP connector and first-party CLI.","maintainers":[{"name":"ryan9071","email":"ryan@codelive.co.kr"}],"readme":"# @ainecto/mcp\n\nAinecto MCP connector and first-party CLI.\n\nThis package exposes two entry points:\n\n- `npx -y @ainecto/mcp` or `ainecto mcp`: raw stdio-to-HTTP JSON-RPC proxy for Ainecto MCP.\n- `ainecto <command>`: human CLI for auth and low-level tool calls.\n\nPhase 1 keeps the connector as a raw proxy. File, stdin, and inline JSON parsing are only available in first-party CLI commands.\n\n## Local Setup\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run build\nnpm link\n```\n\n## Commands\n\n```bash\nainecto auth login --env dev\nainecto auth status --env dev\nainecto auth logout --env dev\n\nainecto tools list --env dev\nainecto tools call mcp__ainecto__list_projects --env dev --json\nainecto tools call mcp__ainecto__erd_apply_changes -f changes.json --json\ncat payload.json | ainecto tools call mcp__ainecto__erd_apply_changes --json\n\nainecto projects list --env dev\nainecto task list-tasks --env dev --document-uuid <documentUuid> --json\nainecto erd apply-changes --env dev -f erd-operations.json --yes\n```\n\nEndpoint resolution priority:\n\n1. `--endpoint <url>`\n2. `AINECTO_MCP_ENDPOINT`\n3. `--env dev`\n4. production default, `https://ainecto.com/mcp`\n\nEndpoint URLs must use `https:`. Plain `http:` is accepted only for localhost loopback targets such as `127.0.0.1`. When `AINECTO_TOKEN` is set, the CLI only sends it to the default prod/dev endpoints unless `AINECTO_ALLOW_CUSTOM_ENDPOINT_TOKEN=1` is set for an explicitly trusted custom endpoint.\n\n## Connector Mode\n\n```bash\nnpx -y @ainecto/mcp\nainecto mcp --env dev\n```\n\nThe connector proxies `initialize`, `tools/list`, and `tools/call` to the resolved `/mcp` endpoint. It does not rewrite remote schemas or interpret local file references.\n\n## MCP Client Installation\n\nUse the direct package configuration until the server is published to the official MCP Registry.\n\n```json\n{\n  \"mcpServers\": {\n    \"ainecto\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ainecto/mcp\"]\n    }\n  }\n}\n```\n\nFor a non-production endpoint, pass CLI flags through the package args:\n\n```json\n{\n  \"mcpServers\": {\n    \"ainecto-dev\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ainecto/mcp\", \"--env\", \"dev\"]\n    }\n  }\n}\n```\n\nThe planned official Registry server name is `io.github.codelives/ainecto`, backed by the public npm package `@ainecto/mcp`. Registry publication requires the npm package version referenced by `server.json` to include a matching `mcpName` field in `package.json`.\n\n## Catalog Sync\n\n`sync:tools --check` is intended for publish-time live drift checks. It fails fast when `AINECTO_CATALOG_SYNC_TOKEN` is missing, so automatic publish cannot silently fall back to fixtures.\nFor local development, `sync:tools` can also use credentials from `ainecto auth login --env <env>`.\n\n```bash\nAINECTO_CATALOG_SYNC_TOKEN=... npm run sync:tools -- --env prod --check\nAINECTO_CATALOG_SYNC_TOKEN=... npm run sync:tools -- --env dev --check\n```\n\nThe checked-in generated catalogs are deterministic output from `tools/list`. The prod and dev catalogs are live-synced snapshots from `https://ainecto.com/mcp` and `https://dev.ainecto.com/mcp`. Presentation metadata lives separately in `src/core/catalog/enrichments.ts`.\n\n`ainecto tools catalog` prints the local generated catalog. Rerun authenticated `sync:tools` when prod or dev `tools/list` changes.\n\n## Generated Friendly Commands\n\nEvery checked-in generated catalog tool is reachable through its deterministic command path. Scalar schema fields are exposed as flags, with both kebab-case and schema-case accepted:\n\n```bash\nainecto task list-tasks --env dev --document-uuid <documentUuid>\nainecto task list-tasks --env dev --documentUuid <documentUuid>\n```\n\nArray or object payloads use the existing first-party CLI JSON payload reader:\n\n```bash\nainecto documents create --env dev -f create-documents.json\ncat task-ops.json | ainecto task apply-changes --env dev --json\n```\n\nDestructive generated commands prompt in human mode unless `--yes` is supplied. In `--json` mode they fail with a structured error unless `--yes` is present.\n\nAttachment file upload is available through a bespoke command that performs the upload-token, raw PUT, and attachment registration flow:\n\n```bash\nainecto attachments upload --env dev --document-uuid <documentUuid> ./diagram.png ./notes.pdf\n```\n\nThe generated `request_upload_token` and `upload_attachments` paths remain raw MCP argument-contract commands and do not read local files.\n\n## Local Tarball Smoke\n\n```bash\nnpm pack\nnpx -y ./ainecto-mcp-0.1.4.tgz --help\nnpm exec --package ./ainecto-mcp-0.1.4.tgz -- ainecto --help\n```\n\n## Live Dev MCP Smoke\n\nThis requires an authenticated dev token from `ainecto auth login --env dev` or a local developer `AINECTO_TOKEN`.\n\n```bash\nnpm run smoke:mcp -- --env dev\n```\n\nThe smoke initializes MCP, reads `tools/list`, calls `mcp__ainecto__list_projects`, and prints only aggregate metadata such as tool count and Task tool exposure.\n\n## Local Attachment Upload Smoke\n\nThis exercises the full `attachments upload` flow against a local `ainecto-api` dev server:\nOAuth MCP token issue, REST fixture document creation, CLI upload, `list_attachments`, and server filesystem byte verification.\n\n```bash\nnpm run smoke:attachments -- --base-url http://localhost:8080 --endpoint http://localhost:8080/mcp --api-root /Users/ryan/project/workspace/codelive/ainecto-api\n```\n\nThe smoke creates a temporary user/workspace/project/document and removes the fixture account, local temp file, and stored upload file unless `--keep` is supplied.\n\n## Known Limitations\n\n- The MCP connector currently implements newline-delimited stdio JSON-RPC to HTTP JSON-RPC. Streamable HTTP SSE responses and `MCP-Session-Id` session handling are not implemented in Phase 1.\n\nOfficial MCP Registry publish is pending GitHub namespace owner authentication with `mcp-publisher` and metadata submission.\n","readmeFilename":"README.md"}