create-claudeportal 0.2.1 → 0.2.3
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/dist/assets/index-Dk_0f6au.js +132 -0
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/server/lib/mcp-checker.js +18 -0
- package/server/routes/folder.js +22 -4
- package/dist/assets/index-DT9wvgYq.js +0 -132
package/dist/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Claude Portal</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-Dk_0f6au.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-BG0yZd9Y.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
package/package.json
CHANGED
|
@@ -88,6 +88,23 @@ const RECOMMENDED_MCPS = [
|
|
|
88
88
|
usefulFor: ['draft', 'extract', 'transform'],
|
|
89
89
|
category: 'automation',
|
|
90
90
|
},
|
|
91
|
+
{
|
|
92
|
+
id: 'composio',
|
|
93
|
+
name: 'Composio',
|
|
94
|
+
description: '250+ app integrations — CRM, email, social, databases',
|
|
95
|
+
installHint: 'claude mcp add composio -- npx -y composio-core mcp',
|
|
96
|
+
usefulFor: ['draft', 'extract', 'analyse', 'transform', 'summarize'],
|
|
97
|
+
category: 'automation',
|
|
98
|
+
},
|
|
99
|
+
// Social Media
|
|
100
|
+
{
|
|
101
|
+
id: 'postiz',
|
|
102
|
+
name: 'Postiz',
|
|
103
|
+
description: 'Schedule and manage social media posts across platforms',
|
|
104
|
+
installHint: 'claude mcp add postiz -- npx -y @postiz/mcp-server',
|
|
105
|
+
usefulFor: ['draft', 'transform'],
|
|
106
|
+
category: 'social',
|
|
107
|
+
},
|
|
91
108
|
// Meetings & Notes
|
|
92
109
|
{
|
|
93
110
|
id: 'fireflies',
|
|
@@ -155,6 +172,7 @@ const CATEGORY_LABELS = {
|
|
|
155
172
|
design: 'Design & Build',
|
|
156
173
|
workspace: 'Workspace',
|
|
157
174
|
automation: 'Automation',
|
|
175
|
+
social: 'Social Media',
|
|
158
176
|
meetings: 'Meetings',
|
|
159
177
|
projects: 'Project Management',
|
|
160
178
|
data: 'Data',
|
package/server/routes/folder.js
CHANGED
|
@@ -96,8 +96,26 @@ router.get('/read-file', (req, res) => {
|
|
|
96
96
|
if (stat.size > 10 * 1024 * 1024) {
|
|
97
97
|
return res.status(413).json({ error: 'File too large (max 10MB)' })
|
|
98
98
|
}
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
|
|
100
|
+
const ext = path.extname(resolved).toLowerCase()
|
|
101
|
+
const binaryTypes = ['.pdf', '.docx', '.doc', '.xlsx', '.xls', '.pptx', '.odt']
|
|
102
|
+
|
|
103
|
+
if (binaryTypes.includes(ext)) {
|
|
104
|
+
// Binary files can't be read as text — return metadata only
|
|
105
|
+
// Claude Code can read these directly via its file reading capability
|
|
106
|
+
res.json({
|
|
107
|
+
content: null,
|
|
108
|
+
binary: true,
|
|
109
|
+
path: resolved,
|
|
110
|
+
size: stat.size,
|
|
111
|
+
type: ext.slice(1),
|
|
112
|
+
modified: stat.mtime.toISOString(),
|
|
113
|
+
message: `${ext.slice(1).toUpperCase()} file — Claude will read this directly`,
|
|
114
|
+
})
|
|
115
|
+
} else {
|
|
116
|
+
const content = fs.readFileSync(resolved, 'utf8')
|
|
117
|
+
res.json({ content, path: resolved, size: stat.size, modified: stat.mtime.toISOString() })
|
|
118
|
+
}
|
|
101
119
|
} catch (err) {
|
|
102
120
|
res.status(500).json({ error: err.message })
|
|
103
121
|
}
|
|
@@ -170,12 +188,12 @@ router.get('/pick-file', (req, res) => {
|
|
|
170
188
|
let selected
|
|
171
189
|
if (process.platform === 'darwin') {
|
|
172
190
|
selected = execSync(
|
|
173
|
-
`osascript -e 'POSIX path of (choose file with prompt "Choose a document" of type {"md", "txt", "csv", "json", "html"})'`,
|
|
191
|
+
`osascript -e 'POSIX path of (choose file with prompt "Choose a document" of type {"md", "txt", "csv", "json", "html", "pdf", "docx", "doc", "xlsx", "xls", "pptx", "rtf", "odt", "tsv"})'`,
|
|
174
192
|
{ encoding: 'utf8', timeout: 60000 }
|
|
175
193
|
).trim()
|
|
176
194
|
} else if (process.platform === 'linux') {
|
|
177
195
|
selected = execSync(
|
|
178
|
-
'zenity --file-selection --title="Choose a document" --file-filter="Documents|*.md *.txt *.csv *.json *.html" 2>/dev/null',
|
|
196
|
+
'zenity --file-selection --title="Choose a document" --file-filter="Documents|*.md *.txt *.csv *.json *.html *.pdf *.docx *.doc *.xlsx *.xls *.pptx *.rtf *.odt *.tsv" 2>/dev/null',
|
|
179
197
|
{ encoding: 'utf8', timeout: 60000 }
|
|
180
198
|
).trim()
|
|
181
199
|
} else {
|