paput-mcp 2.4.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.
@@ -0,0 +1,102 @@
1
+ # MCP Directory Submission Notes
2
+
3
+ This document collects public submission information for PaPut MCP.
4
+
5
+ ## Server Summary
6
+
7
+ - Name: PaPut MCP
8
+ - Website: https://paput.io
9
+ - Remote MCP server URL: https://mcp.paput.io
10
+ - Transport: Streamable HTTP
11
+ - Authentication: OAuth 2.1-style authorization code with PKCE
12
+ - Dynamic client registration: Supported through PaPut OAuth metadata
13
+ - Data model: Data-only MCP server
14
+ - UI widgets: None
15
+ - Primary use: Give AI assistants controlled access to PaPut memos, notes, skill sheets, and reusable knowledge workflows
16
+
17
+ ## OAuth Metadata
18
+
19
+ - Protected resource metadata: `https://mcp.paput.io/.well-known/oauth-protected-resource`
20
+ - Authorization server: `https://api.paput.io`
21
+ - Authorization server metadata: `https://api.paput.io/.well-known/oauth-authorization-server`
22
+ - Authorization endpoint: `https://api.paput.io/oauth/authorize`
23
+ - Token endpoint: `https://api.paput.io/oauth/token`
24
+ - Registration endpoint: `https://api.paput.io/oauth/register`
25
+ - Supported scopes: `paput.read`, `paput.write`
26
+ - Token endpoint auth method: `none`
27
+ - PKCE method: `S256`
28
+
29
+ ## Claude Connector Preparation
30
+
31
+ Recommended listing details:
32
+
33
+ - Connector name: PaPut
34
+ - Description: Connect Claude to PaPut memos, notes, skill sheets, and knowledge capture workflows.
35
+ - Server URL: `https://mcp.paput.io`
36
+ - Authentication: OAuth
37
+ - Transport: Streamable HTTP
38
+ - Scopes: `paput.read paput.write`
39
+ - Category: Productivity, knowledge management, developer tools
40
+ - Data access summary: Reads and writes PaPut content only after the user authorizes access through PaPut OAuth.
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.
43
+
44
+ Validation checklist:
45
+
46
+ Status: verified with Claude custom connector UI.
47
+
48
+ 1. Add `https://mcp.paput.io` as a remote MCP connector in Claude.
49
+ 2. Complete the PaPut OAuth consent flow.
50
+ 3. Confirm `tools/list` returns PaPut tools.
51
+ 4. Call a read-only tool such as `paput_get_categories`.
52
+ 5. Call a search tool such as `paput_search_memo` with a low `limit`.
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.
56
+
57
+ ## ChatGPT Developer Mode Preparation
58
+
59
+ Recommended listing details:
60
+
61
+ - App name: PaPut
62
+ - Remote MCP server URL: `https://mcp.paput.io`
63
+ - Authentication: OAuth with dynamic client registration
64
+ - Transport: Streamable HTTP
65
+ - Tool access: Full MCP tools, data-only, no UI widgets
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.
69
+
70
+ Developer Mode validation checklist:
71
+
72
+ Status: verified with ChatGPT Developer Mode.
73
+
74
+ 1. Enable Developer Mode in ChatGPT settings.
75
+ 2. Create an app for the remote MCP server URL `https://mcp.paput.io`.
76
+ 3. Use OAuth without static credentials so dynamic client registration is exercised.
77
+ 4. Complete the PaPut OAuth flow in the browser.
78
+ 5. Refresh the app tools and confirm PaPut tools are listed.
79
+ 6. Start a conversation with Developer Mode enabled and select the PaPut app.
80
+ 7. Prompt: `Use the PaPut app to get my categories. Do not use other tools.`
81
+ 8. Confirm `paput_get_categories` succeeds.
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.
84
+
85
+ ## Submission Positioning
86
+
87
+ PaPut MCP should be submitted as a data-only MCP connector. It should not request UI widget support. The connector should emphasize:
88
+
89
+ - User-owned PaPut data access through OAuth.
90
+ - Knowledge management and session knowledge capture.
91
+ - Explicit confirmation for write and destructive operations.
92
+ - No broad web browsing, scraping, or unrelated third-party data access.
93
+
94
+ ## Public References
95
+
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
100
+ - OpenAI ChatGPT Developer Mode documentation: https://platform.openai.com/docs/guides/developer-mode
101
+ - OpenAI MCP documentation: https://platform.openai.com/docs/mcp/
102
+ - Anthropic remote MCP connector documentation: https://support.anthropic.com/en/articles/11175166-getting-started-with-custom-integrations-using-remote-mcp
@@ -0,0 +1,61 @@
1
+ # Privacy Policy
2
+
3
+ Effective date: June 1, 2026
4
+
5
+ PaPut MCP Server connects AI assistants and MCP clients to PaPut through the Model Context Protocol. This policy explains what data is handled when you use the PaPut MCP Server.
6
+
7
+ ## Data The Server Handles
8
+
9
+ Depending on the tools you use, the server may process:
10
+
11
+ - PaPut memos, notes, categories, skill sheet data, and related project metadata.
12
+ - OAuth access tokens used to authenticate requests to PaPut.
13
+ - MCP request and response metadata needed to execute tool calls.
14
+ - Local Claude or Codex session metadata and transcripts when you explicitly use local knowledge capture tools.
15
+ - Local pending knowledge candidates and cache data stored on your device.
16
+
17
+ ## How Data Is Used
18
+
19
+ Data is used only to provide the MCP tools you invoke, including:
20
+
21
+ - Searching, reading, creating, and updating PaPut memos and notes.
22
+ - Reading and updating your PaPut skill sheet.
23
+ - Synchronizing PaPut memo metadata into a local cache for duplicate detection.
24
+ - Scanning local AI session logs and preparing reusable knowledge candidates.
25
+ - Completing OAuth authorization and token-based requests to the PaPut API.
26
+
27
+ ## Authentication
28
+
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
+
31
+ Local stdio usage uses OAuth tokens created by `paput-mcp login`. You are responsible for keeping local token and configuration files private.
32
+
33
+ ## Local Data
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, 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
+
37
+ ## Logging
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 OAuth tokens or full private content intentionally.
40
+
41
+ ## Sharing
42
+
43
+ PaPut MCP does not sell personal data. Data may be processed by PaPut infrastructure providers only as needed to operate the service. Data may also be disclosed if required by law or to protect the security and integrity of PaPut, users, or the service.
44
+
45
+ ## User Control
46
+
47
+ You can:
48
+
49
+ - Revoke OAuth access from PaPut account settings when available.
50
+ - Remove local MCP configuration from your client.
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.
53
+ - Delete or update PaPut content using PaPut or authorized MCP tools.
54
+
55
+ ## Security
56
+
57
+ PaPut MCP uses OAuth for remote access and supports read/write tool annotations so clients can request user confirmation for write or destructive actions. You should review tool calls before approving actions that create, update, delete, publish, or discard data.
58
+
59
+ ## Contact
60
+
61
+ For privacy questions, use the contact method provided on https://paput.io.
package/docs/tools.md ADDED
@@ -0,0 +1,70 @@
1
+ # Tools And Use Cases
2
+
3
+ PaPut MCP is a data-only MCP server. It exposes tools and resources for PaPut data. It does not provide UI widgets.
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
+
9
+ ## Confirmation Policy
10
+
11
+ Clients and assistants should follow these rules:
12
+
13
+ - Read-only tools may be used when they are relevant to the user's request.
14
+ - Create, update, save, publish, discard, and delete tools should be used only when the user's intent is clear.
15
+ - Destructive tools require explicit confirmation before execution.
16
+ - `paput_save_pending_candidate` requires explicit user approval because it creates a PaPut memo from a local pending candidate.
17
+ - `paput_delete_skill_sheet_project` should be used only when the user clearly intends to remove a project.
18
+ - `paput_set_skill_sheet_skills` replaces the full skill list and should be used only when the complete desired final list is known.
19
+ - `paput_discard_pending_candidate` removes a pending item from the save flow and should be confirmed when the candidate may still be useful.
20
+ - Update and upsert tools should preserve existing data unless the user requested the change.
21
+
22
+ ## Memo Tools
23
+
24
+ | Tool | Safety | Use case |
25
+ | ---------------------- | ----------------- | -------------------------------------------------------------------------------- |
26
+ | `paput_create_memo` | Write | Create a PaPut memo when the user explicitly asks to save content directly. |
27
+ | `paput_search_memo` | Read-only | Search memos by keyword, category, IDs, date, visibility, or pagination. |
28
+ | `paput_get_memo` | Read-only | Read the full details of a memo by ID. |
29
+ | `paput_update_memo` | Destructive/write | Update an existing memo title, body, visibility, categories, or linked projects. |
30
+ | `paput_get_categories` | Read-only | List categories before assigning categories or checking duplicates. |
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
+
36
+ ## Note Tools
37
+
38
+ | Tool | Safety | Use case |
39
+ | -------------------- | ----------------- | ------------------------------------------------------ |
40
+ | `paput_create_note` | Write | Create a note that groups existing memo IDs. |
41
+ | `paput_search_notes` | Read-only | Search notes by keyword, visibility, and pagination. |
42
+ | `paput_get_note` | Read-only | Read a note and its attached memos. |
43
+ | `paput_update_note` | Destructive/write | Update a note title, visibility, or attached memo IDs. |
44
+
45
+ ## Skill Sheet Tools
46
+
47
+ | Tool | Safety | Use case |
48
+ | ------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------ |
49
+ | `paput_get_skill_sheet` | Read-only | Read the user's PaPut skill sheet. |
50
+ | `paput_update_skill_sheet_basic_info` | Destructive/write | Update profile fields such as nearest station, gender, birth date, or years of experience. |
51
+ | `paput_update_skill_sheet_self_pr` | Destructive/write | Update the self PR section. |
52
+ | `paput_set_skill_sheet_skills` | Destructive/write | Replace the full skill list with a known final state. |
53
+ | `paput_upsert_skill_sheet_project` | Destructive/write | Add or update a skill sheet project by ID or exact title match. |
54
+ | `paput_delete_skill_sheet_project` | Destructive | Delete a skill sheet project by ID. |
55
+
56
+ ## Knowledge Capture And Local Cache Tools
57
+
58
+ These tools are local CLI mode only. They are not listed by the remote HTTP MCP
59
+ server.
60
+
61
+ | Tool | Safety | Use case |
62
+ | --------------------------------- | ---------------------------- | ----------------------------------------------------------------------------- |
63
+ | `paput_cache_status` | Read-only | Inspect local cache, pending candidates, processed sessions, and sync status. |
64
+ | `paput_sync_remote_memos` | Write to local cache | Sync existing PaPut memos into the local cache for duplicate detection. |
65
+ | `paput_scan_sessions` | Read-only | Scan local Claude and Codex session logs for reusable knowledge sources. |
66
+ | `paput_get_session_transcript` | Read-only | Read a selected local Claude or Codex session transcript. |
67
+ | `paput_add_knowledge_candidates` | Write to local pending queue | Add extracted reusable knowledge candidates before they are saved to PaPut. |
68
+ | `paput_list_pending_candidates` | Read-only | List pending candidates for review. |
69
+ | `paput_save_pending_candidate` | Write | Save an approved pending candidate as a PaPut memo. |
70
+ | `paput_discard_pending_candidate` | Destructive local action | Remove a pending candidate from the save flow. |
@@ -0,0 +1,106 @@
1
+ # Usage Examples
2
+
3
+ These examples show typical ways to use PaPut MCP from an AI assistant.
4
+
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
21
+
22
+ Prompt:
23
+
24
+ ```text
25
+ Search my PaPut memos for existing notes about OAuth dynamic client registration before creating a new knowledge candidate.
26
+ ```
27
+
28
+ Expected tool flow:
29
+
30
+ 1. `paput_search_memo`
31
+ 2. `paput_add_knowledge_candidates` only when no duplicate or near-duplicate exists
32
+ 3. `paput_list_pending_candidates` when the user wants to review pending items
33
+
34
+ Use case: avoid duplicate long-term knowledge while preserving useful decisions from engineering work.
35
+
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
40
+
41
+ Prompt:
42
+
43
+ ```text
44
+ Scan recent Codex sessions, find the OAuth implementation session, and extract reusable knowledge candidates.
45
+ ```
46
+
47
+ Expected tool flow:
48
+
49
+ 1. `paput_scan_sessions`
50
+ 2. `paput_get_session_transcript`
51
+ 3. `paput_add_knowledge_candidates`
52
+
53
+ Use case: turn completed development work into reviewable knowledge without immediately publishing it to PaPut.
54
+
55
+ Local mode note: session scanning and transcript reading are local CLI mode
56
+ tools.
57
+
58
+ ## 4. Save An Approved Pending Candidate
59
+
60
+ Prompt:
61
+
62
+ ```text
63
+ Review my pending PaPut knowledge candidates and save the OAuth metadata candidate if it is not a duplicate.
64
+ ```
65
+
66
+ Expected tool flow:
67
+
68
+ 1. `paput_list_pending_candidates`
69
+ 2. `paput_search_memo`
70
+ 3. `paput_save_pending_candidate` only after explicit user approval
71
+
72
+ Use case: keep the user in control before creating a permanent PaPut memo.
73
+
74
+ Local mode note: pending candidate tools are local CLI mode tools.
75
+
76
+ ## 5. Update A Skill Sheet Project
77
+
78
+ Prompt:
79
+
80
+ ```text
81
+ Update my PaPut skill sheet project for the MCP server work with the latest technologies and responsibilities.
82
+ ```
83
+
84
+ Expected tool flow:
85
+
86
+ 1. `paput_get_skill_sheet`
87
+ 2. `paput_upsert_skill_sheet_project`
88
+ 3. `paput_get_skill_sheet` to verify the final result
89
+
90
+ Use case: maintain an accurate skill sheet after project milestones.
91
+
92
+ ## 6. Organize Memos Into A Note
93
+
94
+ Prompt:
95
+
96
+ ```text
97
+ Find my MCP-related memos and create a PaPut note that groups the most relevant ones.
98
+ ```
99
+
100
+ Expected tool flow:
101
+
102
+ 1. `paput_search_memo`
103
+ 2. `paput_create_note`
104
+ 3. `paput_get_note` to verify attached memo IDs
105
+
106
+ Use case: create curated collections from existing PaPut memos.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paput-mcp",
3
- "version": "2.4.0",
3
+ "version": "2.6.0",
4
4
  "description": "PaPut MCP Server",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -11,7 +11,11 @@
11
11
  "build": "tsc",
12
12
  "test": "vitest run",
13
13
  "start": "node dist/index.js",
14
+ "start:http": "node dist/http.js",
14
15
  "dev": "ts-node --esm src/index.ts",
16
+ "dev:http": "ts-node --esm src/http.ts",
17
+ "check:http": "ts-node --esm src/check-http.ts",
18
+ "test:mcp:transports": "vitest run src/transport.test.ts",
15
19
  "prepare": "npm run build",
16
20
  "format": "prettier --write .",
17
21
  "type-check": "tsc --noEmit"
@@ -28,6 +32,7 @@
28
32
  "homepage": "https://paput.io",
29
33
  "files": [
30
34
  "dist",
35
+ "docs",
31
36
  "README.md",
32
37
  "LICENSE.txt"
33
38
  ],