paput-mcp 2.5.0 → 2.6.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/README.md +35 -6
- package/dist/cli/index.js +29 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/login.js +235 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logout.js +65 -0
- package/dist/cli/logout.js.map +1 -0
- package/dist/handlers/create-memo/handler.js +3 -23
- package/dist/handlers/create-memo/handler.js.map +1 -1
- package/dist/handlers/memo-projects.js +29 -0
- package/dist/handlers/memo-projects.js.map +1 -0
- package/dist/handlers/update-memo/handler.js +3 -23
- package/dist/handlers/update-memo/handler.js.map +1 -1
- package/dist/http.js +7 -3
- package/dist/http.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schemas/tool-input.js +16 -0
- package/dist/schemas/tool-input.js.map +1 -1
- package/dist/server.js +5 -2
- package/dist/server.js.map +1 -1
- package/dist/services/api/client.js +7 -7
- package/dist/services/api/client.js.map +1 -1
- package/dist/services/oauth/local-auth.js +128 -0
- package/dist/services/oauth/local-auth.js.map +1 -0
- package/dist/tool.js +21 -7
- package/dist/tool.js.map +1 -1
- package/docs/directory-submission.md +15 -4
- package/docs/privacy-policy.md +5 -4
- package/docs/tools.md +11 -0
- package/docs/usage-examples.md +28 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { MCPServer } from './server.js';
|
|
3
3
|
import { runCli } from './cli/index.js';
|
|
4
|
-
if (runCli(process.argv.slice(2))) {
|
|
4
|
+
if (await runCli(process.argv.slice(2))) {
|
|
5
5
|
process.exit(process.exitCode || 0);
|
|
6
6
|
}
|
|
7
7
|
const server = new MCPServer();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;AAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -73,6 +73,14 @@ const toolInputSchemas = {
|
|
|
73
73
|
.describe('Memo creation timestamp in ISO 8601 format, for example 2026-05-30T12:34:56Z')
|
|
74
74
|
.optional(),
|
|
75
75
|
categories: z.array(z.string()).describe('Memo categories').optional(),
|
|
76
|
+
projects: z
|
|
77
|
+
.array(projectReferenceSchema)
|
|
78
|
+
.describe('Projects to link when creating the memo')
|
|
79
|
+
.optional(),
|
|
80
|
+
project_match: z
|
|
81
|
+
.string()
|
|
82
|
+
.describe('Project title fragment to search and link when projects are not provided')
|
|
83
|
+
.optional(),
|
|
76
84
|
}),
|
|
77
85
|
paput_search_memo: z.object({
|
|
78
86
|
word: z.string().describe('Search keyword').optional(),
|
|
@@ -92,6 +100,14 @@ const toolInputSchemas = {
|
|
|
92
100
|
body: z.string().describe('Memo body'),
|
|
93
101
|
is_public: z.boolean().describe('Whether to publish the memo'),
|
|
94
102
|
categories: z.array(memoCategorySchema).describe('Categories').optional(),
|
|
103
|
+
projects: z
|
|
104
|
+
.array(projectReferenceSchema)
|
|
105
|
+
.describe('Projects to link when updating the memo')
|
|
106
|
+
.optional(),
|
|
107
|
+
project_match: z
|
|
108
|
+
.string()
|
|
109
|
+
.describe('Project title fragment to search and link when projects are not provided')
|
|
110
|
+
.optional(),
|
|
95
111
|
}),
|
|
96
112
|
paput_get_categories: emptySchema,
|
|
97
113
|
paput_create_note: z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-input.js","sourceRoot":"","sources":["../../src/schemas/tool-input.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-input.js","sourceRoot":"","sources":["../../src/schemas/tool-input.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -6,7 +6,6 @@ import { setupErrorHandling } from './utils/error-handler.js';
|
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
const packageJson = require('../package.json');
|
|
8
8
|
export function createMcpServer(options = {}) {
|
|
9
|
-
const apiKey = options.apiKey ?? process.env.PAPUT_API_KEY;
|
|
10
9
|
const accessToken = options.accessToken;
|
|
11
10
|
const apiUrl = options.apiUrl ?? process.env.PAPUT_API_URL ?? 'https://api.paput.io';
|
|
12
11
|
const server = new Server({
|
|
@@ -18,7 +17,11 @@ export function createMcpServer(options = {}) {
|
|
|
18
17
|
resources: {},
|
|
19
18
|
},
|
|
20
19
|
});
|
|
21
|
-
setupTool(server, apiUrl,
|
|
20
|
+
setupTool(server, apiUrl, accessToken, {
|
|
21
|
+
projectMatch: options.projectMatch,
|
|
22
|
+
}, {
|
|
23
|
+
includeLocalTools: options.includeLocalTools,
|
|
24
|
+
});
|
|
22
25
|
setupErrorHandling(server);
|
|
23
26
|
return server;
|
|
24
27
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAStE,MAAM,UAAU,eAAe,CAAC,UAA4B,EAAE;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,sBAAsB,CAAC;IAExE,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;SACd;KACF,CACF,CAAC;IAEF,SAAS,CACP,MAAM,EACN,MAAM,EACN,WAAW,EACX;QACE,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,EACD;QACE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CACF,CAAC;IACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,SAAS;IACZ,MAAM,CAAS;IAEvB,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,SAAS,CAAC,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { getValidStoredAccessToken } from '../oauth/local-auth.js';
|
|
1
2
|
export async function apiRequest(config, endpoint, method, body) {
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
const accessToken = config.accessToken ?? (await getValidStoredAccessToken(config.apiUrl));
|
|
4
|
+
if (!accessToken) {
|
|
5
|
+
throw new Error('PaPut authentication is not configured. Run `paput-mcp login`.');
|
|
4
6
|
}
|
|
5
7
|
const url = endpoint.startsWith('http')
|
|
6
8
|
? endpoint
|
|
@@ -8,9 +10,7 @@ export async function apiRequest(config, endpoint, method, body) {
|
|
|
8
10
|
const options = {
|
|
9
11
|
method,
|
|
10
12
|
headers: {
|
|
11
|
-
|
|
12
|
-
? { Authorization: `Bearer ${config.accessToken}` }
|
|
13
|
-
: { 'X-API-Key': config.apiKey ?? '' }),
|
|
13
|
+
Authorization: `Bearer ${accessToken}`,
|
|
14
14
|
...(method !== 'GET' && method !== 'DELETE'
|
|
15
15
|
? { 'Content-Type': 'application/json' }
|
|
16
16
|
: {}),
|
|
@@ -42,8 +42,8 @@ export async function apiRequest(config, endpoint, method, body) {
|
|
|
42
42
|
return {};
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
export function createApiClient(apiUrl,
|
|
46
|
-
const config = { apiUrl,
|
|
45
|
+
export function createApiClient(apiUrl, accessToken) {
|
|
46
|
+
const config = { apiUrl, accessToken };
|
|
47
47
|
return {
|
|
48
48
|
get: (endpoint) => apiRequest(config, endpoint, 'GET'),
|
|
49
49
|
post: (endpoint, body) => apiRequest(config, endpoint, 'POST', body),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/api/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { chmodSync, rmSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
const REFRESH_SKEW_MS = 5 * 60 * 1000;
|
|
5
|
+
export function getOAuthSessionPath() {
|
|
6
|
+
const paputHome = process.env.PAPUT_HOME || join(homedir(), '.paput');
|
|
7
|
+
return join(paputHome, 'oauth.json');
|
|
8
|
+
}
|
|
9
|
+
export function readStoredOAuthSession() {
|
|
10
|
+
const path = getOAuthSessionPath();
|
|
11
|
+
if (!existsSync(path))
|
|
12
|
+
return undefined;
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
15
|
+
if (!isStoredOAuthSession(parsed))
|
|
16
|
+
return undefined;
|
|
17
|
+
return parsed;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function writeStoredOAuthSession(session) {
|
|
24
|
+
const path = getOAuthSessionPath();
|
|
25
|
+
ensurePrivateDirectory(dirname(path));
|
|
26
|
+
const tmpPath = `${path}.tmp`;
|
|
27
|
+
writeFileSync(tmpPath, `${JSON.stringify(session, null, 2)}\n`, {
|
|
28
|
+
encoding: 'utf8',
|
|
29
|
+
mode: 0o600,
|
|
30
|
+
});
|
|
31
|
+
renameSync(tmpPath, path);
|
|
32
|
+
chmodSync(path, 0o600);
|
|
33
|
+
}
|
|
34
|
+
export function deleteStoredOAuthSession() {
|
|
35
|
+
rmSync(getOAuthSessionPath(), { force: true });
|
|
36
|
+
}
|
|
37
|
+
export async function getValidStoredAccessToken(apiUrl) {
|
|
38
|
+
const session = readStoredOAuthSession();
|
|
39
|
+
if (!session || !sameOrigin(session.api_url, apiUrl))
|
|
40
|
+
return undefined;
|
|
41
|
+
if (new Date(session.expires_at).getTime() > Date.now() + REFRESH_SKEW_MS) {
|
|
42
|
+
return session.access_token;
|
|
43
|
+
}
|
|
44
|
+
const refreshed = await refreshStoredOAuthSession(session);
|
|
45
|
+
return refreshed?.access_token;
|
|
46
|
+
}
|
|
47
|
+
async function refreshStoredOAuthSession(session) {
|
|
48
|
+
const metadata = await fetchAuthorizationServerMetadata(session.api_url);
|
|
49
|
+
const response = await fetch(metadata.token_endpoint, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
52
|
+
body: new URLSearchParams({
|
|
53
|
+
grant_type: 'refresh_token',
|
|
54
|
+
client_id: session.client_id,
|
|
55
|
+
refresh_token: session.refresh_token,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok)
|
|
59
|
+
return undefined;
|
|
60
|
+
const token = (await response.json());
|
|
61
|
+
const refreshed = buildStoredOAuthSession({
|
|
62
|
+
apiUrl: session.api_url,
|
|
63
|
+
clientId: session.client_id,
|
|
64
|
+
issuer: metadata.issuer,
|
|
65
|
+
redirectUri: session.redirect_uri,
|
|
66
|
+
token,
|
|
67
|
+
});
|
|
68
|
+
writeStoredOAuthSession(refreshed);
|
|
69
|
+
return refreshed;
|
|
70
|
+
}
|
|
71
|
+
export async function fetchAuthorizationServerMetadata(apiUrl) {
|
|
72
|
+
const issuer = new URL(apiUrl).origin;
|
|
73
|
+
const response = await fetch(`${issuer}/.well-known/oauth-authorization-server`);
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
throw new Error(`Failed to load OAuth metadata: HTTP ${response.status}`);
|
|
76
|
+
}
|
|
77
|
+
const metadata = (await response.json());
|
|
78
|
+
if (!metadata.authorization_endpoint ||
|
|
79
|
+
!metadata.issuer ||
|
|
80
|
+
!metadata.registration_endpoint ||
|
|
81
|
+
!metadata.token_endpoint) {
|
|
82
|
+
throw new Error('OAuth metadata is missing required endpoints.');
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
authorization_endpoint: metadata.authorization_endpoint,
|
|
86
|
+
issuer: metadata.issuer,
|
|
87
|
+
registration_endpoint: metadata.registration_endpoint,
|
|
88
|
+
revocation_endpoint: metadata.revocation_endpoint,
|
|
89
|
+
token_endpoint: metadata.token_endpoint,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function buildStoredOAuthSession(params) {
|
|
93
|
+
return {
|
|
94
|
+
access_token: params.token.access_token,
|
|
95
|
+
api_url: params.apiUrl,
|
|
96
|
+
client_id: params.clientId,
|
|
97
|
+
expires_at: new Date(Date.now() + params.token.expires_in * 1000).toISOString(),
|
|
98
|
+
issuer: params.issuer,
|
|
99
|
+
redirect_uri: params.redirectUri,
|
|
100
|
+
refresh_token: params.token.refresh_token,
|
|
101
|
+
scope: params.token.scope,
|
|
102
|
+
token_type: params.token.token_type,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function isStoredOAuthSession(value) {
|
|
106
|
+
return (typeof value.access_token === 'string' &&
|
|
107
|
+
typeof value.api_url === 'string' &&
|
|
108
|
+
typeof value.client_id === 'string' &&
|
|
109
|
+
typeof value.expires_at === 'string' &&
|
|
110
|
+
typeof value.issuer === 'string' &&
|
|
111
|
+
typeof value.redirect_uri === 'string' &&
|
|
112
|
+
typeof value.refresh_token === 'string' &&
|
|
113
|
+
typeof value.scope === 'string' &&
|
|
114
|
+
typeof value.token_type === 'string');
|
|
115
|
+
}
|
|
116
|
+
function sameOrigin(left, right) {
|
|
117
|
+
try {
|
|
118
|
+
return new URL(left).origin === new URL(right).origin;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function ensurePrivateDirectory(path) {
|
|
125
|
+
mkdirSync(path, { mode: 0o700, recursive: true });
|
|
126
|
+
chmodSync(path, 0o700);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=local-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-auth.js","sourceRoot":"","sources":["../../../src/services/oauth/local-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/tool.js
CHANGED
|
@@ -2,9 +2,9 @@ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSche
|
|
|
2
2
|
import { createApiClient } from './services/api/index.js';
|
|
3
3
|
import { getGeneratedInputSchema } from './schemas/tool-input.js';
|
|
4
4
|
import { createMemoTool, searchMemoTool, getMemoTool, updateMemoTool, getCategoriesTool, createNoteTool, searchNotesTool, getNoteTool, updateNoteTool, getSkillSheetTool, updateSkillSheetBasicInfoTool, updateSkillSheetSelfPrTool, setSkillSheetSkillsTool, upsertSkillSheetProjectTool, deleteSkillSheetProjectTool, cacheStatusTool, syncRemoteMemosTool, scanSessionsTool, getSessionTranscriptTool, addKnowledgeCandidatesTool, listPendingCandidatesTool, savePendingCandidateTool, discardPendingCandidateTool, } from './handlers/index.js';
|
|
5
|
-
export function setupTool(server, apiUrl,
|
|
6
|
-
const apiClient = createApiClient(apiUrl,
|
|
7
|
-
const tools = getRegisteredTools();
|
|
5
|
+
export function setupTool(server, apiUrl, accessToken, context = {}, registeredToolsOptions = {}) {
|
|
6
|
+
const apiClient = createApiClient(apiUrl, accessToken);
|
|
7
|
+
const tools = getRegisteredTools(registeredToolsOptions);
|
|
8
8
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
9
9
|
tools: tools.map((tool) => tool.definition),
|
|
10
10
|
}));
|
|
@@ -21,7 +21,7 @@ export function setupTool(server, apiUrl, apiKey, accessToken) {
|
|
|
21
21
|
isError: true,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
return await tool.handler(request.params.arguments, apiClient);
|
|
24
|
+
return await tool.handler(request.params.arguments, apiClient, context);
|
|
25
25
|
});
|
|
26
26
|
// Handler that lists resources
|
|
27
27
|
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
@@ -64,8 +64,9 @@ export function setupTool(server, apiUrl, apiKey, accessToken) {
|
|
|
64
64
|
};
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
export function getRegisteredTools() {
|
|
68
|
-
|
|
67
|
+
export function getRegisteredTools(options = {}) {
|
|
68
|
+
const includeLocalTools = options.includeLocalTools ?? true;
|
|
69
|
+
const tools = [
|
|
69
70
|
createMemoTool,
|
|
70
71
|
searchMemoTool,
|
|
71
72
|
getMemoTool,
|
|
@@ -89,7 +90,10 @@ export function getRegisteredTools() {
|
|
|
89
90
|
listPendingCandidatesTool,
|
|
90
91
|
savePendingCandidateTool,
|
|
91
92
|
discardPendingCandidateTool,
|
|
92
|
-
]
|
|
93
|
+
];
|
|
94
|
+
return tools
|
|
95
|
+
.filter((tool) => includeLocalTools || !isLocalOnlyTool(tool.definition.name))
|
|
96
|
+
.map(withToolAnnotations);
|
|
93
97
|
}
|
|
94
98
|
function withToolAnnotations(tool) {
|
|
95
99
|
const name = tool.definition.name;
|
|
@@ -134,4 +138,14 @@ function isIdempotentTool(name) {
|
|
|
134
138
|
name.startsWith('paput_update_') ||
|
|
135
139
|
name === 'paput_set_skill_sheet_skills');
|
|
136
140
|
}
|
|
141
|
+
function isLocalOnlyTool(name) {
|
|
142
|
+
return (name === 'paput_cache_status' ||
|
|
143
|
+
name === 'paput_sync_remote_memos' ||
|
|
144
|
+
name === 'paput_scan_sessions' ||
|
|
145
|
+
name === 'paput_get_session_transcript' ||
|
|
146
|
+
name === 'paput_add_knowledge_candidates' ||
|
|
147
|
+
name === 'paput_list_pending_candidates' ||
|
|
148
|
+
name === 'paput_save_pending_candidate' ||
|
|
149
|
+
name === 'paput_discard_pending_candidate');
|
|
150
|
+
}
|
|
137
151
|
//# sourceMappingURL=tool.js.map
|
package/dist/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,15 +39,20 @@ Recommended listing details:
|
|
|
39
39
|
- Category: Productivity, knowledge management, developer tools
|
|
40
40
|
- Data access summary: Reads and writes PaPut content only after the user authorizes access through PaPut OAuth.
|
|
41
41
|
- Safety summary: Read-only tools are annotated. Write and destructive tools require clear user intent and should be confirmed by the client.
|
|
42
|
+
- Callback URL handling: Claude registers its redirect URI through dynamic client registration. PaPut validates the registered redirect URI during authorization instead of relying on a preconfigured static callback URL.
|
|
42
43
|
|
|
43
44
|
Validation checklist:
|
|
44
45
|
|
|
46
|
+
Status: verified with Claude custom connector UI.
|
|
47
|
+
|
|
45
48
|
1. Add `https://mcp.paput.io` as a remote MCP connector in Claude.
|
|
46
49
|
2. Complete the PaPut OAuth consent flow.
|
|
47
50
|
3. Confirm `tools/list` returns PaPut tools.
|
|
48
51
|
4. Call a read-only tool such as `paput_get_categories`.
|
|
49
52
|
5. Call a search tool such as `paput_search_memo` with a low `limit`.
|
|
50
|
-
6.
|
|
53
|
+
6. Call one write tool with test-safe content.
|
|
54
|
+
7. Confirm write/destructive tools show user confirmation before execution.
|
|
55
|
+
8. Confirm the created or changed data is visible in PaPut.
|
|
51
56
|
|
|
52
57
|
## ChatGPT Developer Mode Preparation
|
|
53
58
|
|
|
@@ -59,9 +64,13 @@ Recommended listing details:
|
|
|
59
64
|
- Transport: Streamable HTTP
|
|
60
65
|
- Tool access: Full MCP tools, data-only, no UI widgets
|
|
61
66
|
- Scopes: `paput.read paput.write`
|
|
67
|
+
- Description: Connect PaPut to ChatGPT so you can search, read, create, and organize your PaPut memos, notes, skill sheet, and reusable knowledge. PaPut MCP uses OAuth and only accesses your PaPut data after you authorize the connection.
|
|
68
|
+
- Callback URL handling: ChatGPT should register its redirect URI through dynamic client registration. PaPut validates registered redirect URIs before issuing authorization codes.
|
|
62
69
|
|
|
63
70
|
Developer Mode validation checklist:
|
|
64
71
|
|
|
72
|
+
Status: verified with ChatGPT Developer Mode.
|
|
73
|
+
|
|
65
74
|
1. Enable Developer Mode in ChatGPT settings.
|
|
66
75
|
2. Create an app for the remote MCP server URL `https://mcp.paput.io`.
|
|
67
76
|
3. Use OAuth without static credentials so dynamic client registration is exercised.
|
|
@@ -71,6 +80,7 @@ Developer Mode validation checklist:
|
|
|
71
80
|
7. Prompt: `Use the PaPut app to get my categories. Do not use other tools.`
|
|
72
81
|
8. Confirm `paput_get_categories` succeeds.
|
|
73
82
|
9. Prompt a write action in a test-safe way and confirm the client asks for approval before execution.
|
|
83
|
+
10. Confirm the created or changed data is visible in PaPut.
|
|
74
84
|
|
|
75
85
|
## Submission Positioning
|
|
76
86
|
|
|
@@ -83,9 +93,10 @@ PaPut MCP should be submitted as a data-only MCP connector. It should not reques
|
|
|
83
93
|
|
|
84
94
|
## Public References
|
|
85
95
|
|
|
86
|
-
- Privacy Policy:
|
|
87
|
-
- Usage Examples:
|
|
88
|
-
- Tools And Use Cases:
|
|
96
|
+
- Privacy Policy: https://github.com/mizulba-dev/paput-mcp/blob/main/docs/privacy-policy.md
|
|
97
|
+
- Usage Examples: https://github.com/mizulba-dev/paput-mcp/blob/main/docs/usage-examples.md
|
|
98
|
+
- Tools And Use Cases: https://github.com/mizulba-dev/paput-mcp/blob/main/docs/tools.md
|
|
99
|
+
- Directory Submission Notes: https://github.com/mizulba-dev/paput-mcp/blob/main/docs/directory-submission.md
|
|
89
100
|
- OpenAI ChatGPT Developer Mode documentation: https://platform.openai.com/docs/guides/developer-mode
|
|
90
101
|
- OpenAI MCP documentation: https://platform.openai.com/docs/mcp/
|
|
91
102
|
- Anthropic remote MCP connector documentation: https://support.anthropic.com/en/articles/11175166-getting-started-with-custom-integrations-using-remote-mcp
|
package/docs/privacy-policy.md
CHANGED
|
@@ -9,7 +9,7 @@ PaPut MCP Server connects AI assistants and MCP clients to PaPut through the Mod
|
|
|
9
9
|
Depending on the tools you use, the server may process:
|
|
10
10
|
|
|
11
11
|
- PaPut memos, notes, categories, skill sheet data, and related project metadata.
|
|
12
|
-
- OAuth access tokens
|
|
12
|
+
- OAuth access tokens used to authenticate requests to PaPut.
|
|
13
13
|
- MCP request and response metadata needed to execute tool calls.
|
|
14
14
|
- Local Claude or Codex session metadata and transcripts when you explicitly use local knowledge capture tools.
|
|
15
15
|
- Local pending knowledge candidates and cache data stored on your device.
|
|
@@ -28,15 +28,15 @@ Data is used only to provide the MCP tools you invoke, including:
|
|
|
28
28
|
|
|
29
29
|
Remote MCP connections use OAuth. PaPut issues tokens after you sign in and approve the requested scopes. The MCP server receives bearer tokens on requests and forwards them to the PaPut API. The MCP server does not intentionally persist OAuth access tokens.
|
|
30
30
|
|
|
31
|
-
Local stdio usage
|
|
31
|
+
Local stdio usage uses OAuth tokens created by `paput-mcp login`. You are responsible for keeping local token and configuration files private.
|
|
32
32
|
|
|
33
33
|
## Local Data
|
|
34
34
|
|
|
35
|
-
When local knowledge capture features are used, PaPut MCP may store cache files under `~/.paput` or a configured cache directory. This local data can include synced memo summaries, pending knowledge candidates, processed session markers, and
|
|
35
|
+
When local knowledge capture features are used, PaPut MCP may store cache files under `~/.paput` or a configured cache directory. This local data can include synced memo summaries, pending knowledge candidates, processed session markers, session metadata, and local OAuth tokens created by `paput-mcp login`. The default OAuth token directory is created with `0700` permissions and the token file is written with `0600` permissions. It remains on your device unless you choose to save a pending candidate to PaPut or remove the local token cache with `paput-mcp logout`.
|
|
36
36
|
|
|
37
37
|
## Logging
|
|
38
38
|
|
|
39
|
-
Hosted infrastructure and MCP clients may record operational logs such as request timestamps, status codes, errors, and connection metadata. Logs are used for reliability, troubleshooting, abuse prevention, and security. The server is designed not to log
|
|
39
|
+
Hosted infrastructure and MCP clients may record operational logs such as request timestamps, status codes, errors, and connection metadata. Logs are used for reliability, troubleshooting, abuse prevention, and security. The server is designed not to log OAuth tokens or full private content intentionally.
|
|
40
40
|
|
|
41
41
|
## Sharing
|
|
42
42
|
|
|
@@ -49,6 +49,7 @@ You can:
|
|
|
49
49
|
- Revoke OAuth access from PaPut account settings when available.
|
|
50
50
|
- Remove local MCP configuration from your client.
|
|
51
51
|
- Delete local cache data stored under `~/.paput` or your configured cache directory.
|
|
52
|
+
- Run `paput-mcp logout` to revoke and remove the local OAuth token cache.
|
|
52
53
|
- Delete or update PaPut content using PaPut or authorized MCP tools.
|
|
53
54
|
|
|
54
55
|
## Security
|
package/docs/tools.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
PaPut MCP is a data-only MCP server. It exposes tools and resources for PaPut data. It does not provide UI widgets.
|
|
4
4
|
|
|
5
|
+
Remote HTTP mode exposes API-backed PaPut tools only. Local cache, pending
|
|
6
|
+
candidate, and session transcript tools are available in local CLI mode because
|
|
7
|
+
they read or write files on the user's device.
|
|
8
|
+
|
|
5
9
|
## Confirmation Policy
|
|
6
10
|
|
|
7
11
|
Clients and assistants should follow these rules:
|
|
@@ -25,6 +29,10 @@ Clients and assistants should follow these rules:
|
|
|
25
29
|
| `paput_update_memo` | Destructive/write | Update an existing memo title, body, visibility, categories, or linked projects. |
|
|
26
30
|
| `paput_get_categories` | Read-only | List categories before assigning categories or checking duplicates. |
|
|
27
31
|
|
|
32
|
+
`paput_create_memo` and `paput_update_memo` can link projects through explicit
|
|
33
|
+
`projects`, a `project_match` input, or local `PAPUT_PROJECT_MATCH` in local CLI
|
|
34
|
+
mode.
|
|
35
|
+
|
|
28
36
|
## Note Tools
|
|
29
37
|
|
|
30
38
|
| Tool | Safety | Use case |
|
|
@@ -47,6 +55,9 @@ Clients and assistants should follow these rules:
|
|
|
47
55
|
|
|
48
56
|
## Knowledge Capture And Local Cache Tools
|
|
49
57
|
|
|
58
|
+
These tools are local CLI mode only. They are not listed by the remote HTTP MCP
|
|
59
|
+
server.
|
|
60
|
+
|
|
50
61
|
| Tool | Safety | Use case |
|
|
51
62
|
| --------------------------------- | ---------------------------- | ----------------------------------------------------------------------------- |
|
|
52
63
|
| `paput_cache_status` | Read-only | Inspect local cache, pending candidates, processed sessions, and sync status. |
|
package/docs/usage-examples.md
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
These examples show typical ways to use PaPut MCP from an AI assistant.
|
|
4
4
|
|
|
5
|
-
## 1.
|
|
5
|
+
## 1. Create A Memo From A Remote MCP Client
|
|
6
|
+
|
|
7
|
+
Prompt:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Create a private PaPut memo summarizing this conversation.
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Expected tool flow:
|
|
14
|
+
|
|
15
|
+
1. `paput_create_memo`
|
|
16
|
+
2. `paput_search_memo` or `paput_get_memo` when the user wants to verify the result
|
|
17
|
+
|
|
18
|
+
Use case: quickly save useful content from Claude, ChatGPT, Codex, or another remote MCP client.
|
|
19
|
+
|
|
20
|
+
## 2. Search Existing Memos Before Creating Knowledge
|
|
6
21
|
|
|
7
22
|
Prompt:
|
|
8
23
|
|
|
@@ -18,7 +33,10 @@ Expected tool flow:
|
|
|
18
33
|
|
|
19
34
|
Use case: avoid duplicate long-term knowledge while preserving useful decisions from engineering work.
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
Local mode note: `paput_add_knowledge_candidates` and pending review tools are
|
|
37
|
+
local CLI mode tools.
|
|
38
|
+
|
|
39
|
+
## 3. Capture Reusable Knowledge From A Codex Session
|
|
22
40
|
|
|
23
41
|
Prompt:
|
|
24
42
|
|
|
@@ -34,7 +52,10 @@ Expected tool flow:
|
|
|
34
52
|
|
|
35
53
|
Use case: turn completed development work into reviewable knowledge without immediately publishing it to PaPut.
|
|
36
54
|
|
|
37
|
-
|
|
55
|
+
Local mode note: session scanning and transcript reading are local CLI mode
|
|
56
|
+
tools.
|
|
57
|
+
|
|
58
|
+
## 4. Save An Approved Pending Candidate
|
|
38
59
|
|
|
39
60
|
Prompt:
|
|
40
61
|
|
|
@@ -50,7 +71,9 @@ Expected tool flow:
|
|
|
50
71
|
|
|
51
72
|
Use case: keep the user in control before creating a permanent PaPut memo.
|
|
52
73
|
|
|
53
|
-
|
|
74
|
+
Local mode note: pending candidate tools are local CLI mode tools.
|
|
75
|
+
|
|
76
|
+
## 5. Update A Skill Sheet Project
|
|
54
77
|
|
|
55
78
|
Prompt:
|
|
56
79
|
|
|
@@ -66,7 +89,7 @@ Expected tool flow:
|
|
|
66
89
|
|
|
67
90
|
Use case: maintain an accurate skill sheet after project milestones.
|
|
68
91
|
|
|
69
|
-
##
|
|
92
|
+
## 6. Organize Memos Into A Note
|
|
70
93
|
|
|
71
94
|
Prompt:
|
|
72
95
|
|