nworks 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -190
- package/README.ja.md +393 -395
- package/README.ko.md +393 -395
- package/README.md +393 -395
- package/dist/index.js +28 -12
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +28 -12
- package/dist/mcp.js.map +1 -1
- package/package.json +58 -58
package/dist/mcp.js
CHANGED
|
@@ -1435,39 +1435,55 @@ var doctorCommand = new Command("doctor").description("Check nworks configuratio
|
|
|
1435
1435
|
function registerTools(server) {
|
|
1436
1436
|
server.tool(
|
|
1437
1437
|
"nworks_setup",
|
|
1438
|
-
"NAVER WORKS API \uC778\uC99D \uC815\uBCF4\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.
|
|
1438
|
+
"NAVER WORKS API \uC778\uC99D \uC815\uBCF4\uB97C \uC124\uC815\uD569\uB2C8\uB2E4. \uBBFC\uAC10 \uC815\uBCF4(Client Secret, Private Key \uACBD\uB85C)\uB294 \uC774 tool\uC758 \uD30C\uB77C\uBBF8\uD130\uB85C \uBC1B\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uC0AC\uC6A9\uC790\uAC00 MCP \uC124\uC815 \uD30C\uC77C(\uC608: claude_desktop_config.json)\uC758 env \uD544\uB4DC\uC5D0 NWORKS_CLIENT_SECRET(\uD544\uC218)\uACFC NWORKS_PRIVATE_KEY_PATH(Service Account \uC0AC\uC6A9 \uC2DC)\uB97C \uBBF8\uB9AC \uC124\uC815\uD574\uC57C \uD569\uB2C8\uB2E4. Developer Console: https://dev.worksmobile.com. \uD658\uACBD\uBCC0\uC218\uAC00 \uC124\uC815\uB418\uC9C0 \uC54A\uC740 \uACBD\uC6B0, \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC124\uC815 \uBC29\uBC95\uC744 \uC548\uB0B4\uD558\uC138\uC694. \uBA54\uC2DC\uC9C0/\uAD6C\uC131\uC6D0\uC870\uD68C\uB294 Service Account \uC778\uC99D(serviceAccount, botId + \uD658\uACBD\uBCC0\uC218 NWORKS_PRIVATE_KEY_PATH \uD544\uC694). \uCE98\uB9B0\uB354/\uBA54\uC77C/\uD560\uC77C/\uB4DC\uB77C\uC774\uBE0C/\uAC8C\uC2DC\uD310\uC740 User OAuth \uC778\uC99D(\uC124\uC815 \uD6C4 nworks_login_user\uB85C \uBE0C\uB77C\uC6B0\uC800 \uB85C\uADF8\uC778 \uD544\uC694). OAuth Redirect URI: http://localhost:9876/callback",
|
|
1439
1439
|
{
|
|
1440
1440
|
clientId: z.string().describe("Client ID (Developer Console\uC5D0\uC11C \uBC1C\uAE09)"),
|
|
1441
|
-
clientSecret: z.string().optional().describe("Client Secret (Developer Console\uC5D0\uC11C \uBC1C\uAE09). \uD658\uACBD\uBCC0\uC218 NWORKS_CLIENT_SECRET\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 \uC0DD\uB7B5 \uAC00\uB2A5"),
|
|
1442
1441
|
serviceAccount: z.string().optional().describe("Service Account ID (\uC608: xxxxx.serviceaccount@domain)"),
|
|
1443
|
-
privateKeyPath: z.string().optional().describe("Private Key \uD30C\uC77C\uC758 \uB85C\uCEEC \uC808\uB300 \uACBD\uB85C (\uC11C\uBE44\uC2A4 \uACC4\uC815 \uC778\uC99D \uC2DC \uD544\uC694). \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uD30C\uC77C\uC774 \uC800\uC7A5\uB41C \uACBD\uB85C\uB97C \uC9C1\uC811 \uBB3C\uC5B4\uBCF4\uC138\uC694 (\uC608: C:\\Users\\me\\Downloads\\private.key). \uD30C\uC77C \uC5C5\uB85C\uB4DC\uAC00 \uC544\uB2CC \uACBD\uB85C \uBB38\uC790\uC5F4\uC785\uB2C8\uB2E4."),
|
|
1444
1442
|
botId: z.string().optional().describe("Bot ID (\uBA54\uC2DC\uC9C0 \uC804\uC1A1 \uC2DC \uD544\uC694)"),
|
|
1445
1443
|
domainId: z.string().optional().describe("Domain ID")
|
|
1446
1444
|
},
|
|
1447
|
-
async ({ clientId,
|
|
1445
|
+
async ({ clientId, serviceAccount, botId, domainId }) => {
|
|
1448
1446
|
try {
|
|
1449
|
-
const resolvedSecret =
|
|
1447
|
+
const resolvedSecret = process.env["NWORKS_CLIENT_SECRET"];
|
|
1450
1448
|
if (!resolvedSecret) {
|
|
1451
1449
|
return {
|
|
1452
|
-
content: [{ type: "text", text: JSON.stringify({
|
|
1450
|
+
content: [{ type: "text", text: JSON.stringify({
|
|
1451
|
+
error: true,
|
|
1452
|
+
message: "\uD658\uACBD\uBCC0\uC218 NWORKS_CLIENT_SECRET\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
|
|
1453
|
+
solution: "\uC0AC\uC6A9\uC790\uC5D0\uAC8C \uB2E4\uC74C \uC548\uB0B4\uB97C \uC804\uB2EC\uD558\uC138\uC694: MCP \uC124\uC815 \uD30C\uC77C(\uC608: claude_desktop_config.json)\uC758 nworks \uC11C\uBC84 \uC124\uC815\uC5D0 env \uD544\uB4DC\uB97C \uCD94\uAC00\uD574\uC57C \uD569\uB2C8\uB2E4.",
|
|
1454
|
+
example: {
|
|
1455
|
+
mcpServers: {
|
|
1456
|
+
nworks: {
|
|
1457
|
+
command: "npx",
|
|
1458
|
+
args: ["-y", "nworks", "mcp"],
|
|
1459
|
+
env: {
|
|
1460
|
+
NWORKS_CLIENT_SECRET: "<Developer Console\uC5D0\uC11C \uBC1C\uAE09\uBC1B\uC740 Client Secret>"
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
developerConsole: "https://dev.worksmobile.com"
|
|
1466
|
+
}) }],
|
|
1453
1467
|
isError: true
|
|
1454
1468
|
};
|
|
1455
1469
|
}
|
|
1470
|
+
const resolvedPrivateKeyPath = process.env["NWORKS_PRIVATE_KEY_PATH"];
|
|
1456
1471
|
await saveCredentials({
|
|
1457
1472
|
clientId,
|
|
1458
1473
|
clientSecret: resolvedSecret,
|
|
1459
1474
|
serviceAccount,
|
|
1460
|
-
privateKeyPath,
|
|
1475
|
+
privateKeyPath: resolvedPrivateKeyPath,
|
|
1461
1476
|
botId,
|
|
1462
1477
|
domainId
|
|
1463
1478
|
});
|
|
1464
1479
|
const nextSteps = [];
|
|
1465
|
-
if (serviceAccount &&
|
|
1480
|
+
if (serviceAccount && resolvedPrivateKeyPath && botId) {
|
|
1466
1481
|
nextSteps.push("Service Account \uC778\uC99D \uC900\uBE44 \uC644\uB8CC \u2014 \uBD07 \uBA54\uC2DC\uC9C0 \uB4F1 \uBC14\uB85C \uC0AC\uC6A9 \uAC00\uB2A5");
|
|
1482
|
+
} else if (serviceAccount && botId && !resolvedPrivateKeyPath) {
|
|
1483
|
+
nextSteps.push("NWORKS_PRIVATE_KEY_PATH \uD658\uACBD\uBCC0\uC218\uAC00 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. Service Account \uC778\uC99D\uC5D0\uB294 Private Key \uACBD\uB85C\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uC5D0\uAC8C MCP \uC124\uC815 \uD30C\uC77C(\uC608: claude_desktop_config.json)\uC758 env \uD544\uB4DC\uC5D0 NWORKS_PRIVATE_KEY_PATH\uB97C \uCD94\uAC00\uD558\uB3C4\uB85D \uC548\uB0B4\uD558\uC138\uC694. Private Key\uB294 Developer Console(https://dev.worksmobile.com)\uC5D0\uC11C \uB2E4\uC6B4\uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.");
|
|
1467
1484
|
}
|
|
1468
1485
|
nextSteps.push("User OAuth\uAC00 \uD544\uC694\uD55C API\uB294 nworks_login_user tool\uB85C \uBE0C\uB77C\uC6B0\uC800 \uB85C\uADF8\uC778\uC744 \uC9C4\uD589\uD558\uC138\uC694");
|
|
1469
1486
|
const mask = (s) => s.length <= 4 ? "****" : `****${s.slice(-Math.min(4, Math.floor(s.length / 3)))}`;
|
|
1470
|
-
const secretSource = clientSecret ? "\uD30C\uB77C\uBBF8\uD130" : "\uD658\uACBD\uBCC0\uC218";
|
|
1471
1487
|
return {
|
|
1472
1488
|
content: [
|
|
1473
1489
|
{
|
|
@@ -1477,9 +1493,9 @@ function registerTools(server) {
|
|
|
1477
1493
|
message: "\uC778\uC99D \uC815\uBCF4\uAC00 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
|
|
1478
1494
|
nextSteps,
|
|
1479
1495
|
clientId,
|
|
1480
|
-
clientSecret: `${mask(resolvedSecret)} (
|
|
1496
|
+
clientSecret: `${mask(resolvedSecret)} (\uD658\uACBD\uBCC0\uC218)`,
|
|
1481
1497
|
serviceAccount: serviceAccount ?? null,
|
|
1482
|
-
privateKeyPath:
|
|
1498
|
+
privateKeyPath: resolvedPrivateKeyPath ? `${mask(resolvedPrivateKeyPath)} (\uD658\uACBD\uBCC0\uC218)` : null,
|
|
1483
1499
|
botId: botId ?? null
|
|
1484
1500
|
})
|
|
1485
1501
|
}
|
|
@@ -1495,7 +1511,7 @@ function registerTools(server) {
|
|
|
1495
1511
|
);
|
|
1496
1512
|
server.tool(
|
|
1497
1513
|
"nworks_message_send",
|
|
1498
|
-
"NAVER WORKS \uBA54\uC2DC\uC9C0\uB97C \uC804\uC1A1\uD569\uB2C8\uB2E4 (\uBD07\uC774 \uC0AC\uC6A9\uC790 \uB610\uB294 \uCC44\uB110\uC5D0 \uBC1C\uC1A1). Service Account \uC778\uC99D \uC0AC\uC6A9 (nworks_setup\uC5D0\uC11C serviceAccount,
|
|
1514
|
+
"NAVER WORKS \uBA54\uC2DC\uC9C0\uB97C \uC804\uC1A1\uD569\uB2C8\uB2E4 (\uBD07\uC774 \uC0AC\uC6A9\uC790 \uB610\uB294 \uCC44\uB110\uC5D0 \uBC1C\uC1A1). Service Account \uC778\uC99D \uC0AC\uC6A9 (nworks_setup\uC5D0\uC11C serviceAccount, botId \uC124\uC815 + \uD658\uACBD\uBCC0\uC218 NWORKS_PRIVATE_KEY_PATH \uD544\uC694. User OAuth \uBD88\uD544\uC694)",
|
|
1499
1515
|
{
|
|
1500
1516
|
to: z.string().optional().describe("\uC218\uC2E0\uC790 userId (channel\uACFC \uD0DD 1). nworks_directory_members\uB85C userId \uC870\uD68C \uAC00\uB2A5"),
|
|
1501
1517
|
channel: z.string().optional().describe("\uCC44\uB110 channelId (to\uC640 \uD0DD 1). nworks_message_members\uB85C \uCC44\uB110 \uAD6C\uC131\uC6D0 \uD655\uC778 \uAC00\uB2A5"),
|