@mcphero/examples 1.1.6 → 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/.turbo/turbo-check.log +6 -4
- package/package.json +8 -6
- package/resources/0b60d5f8-2e09-4359-8134-b026aa8d5268 +1 -0
- package/resources/0b60d5f8-2e09-4359-8134-b026aa8d5268.json +1 -0
- package/resources/4fb60792-6922-497b-8211-93df007ea6d5 +1 -0
- package/resources/4fb60792-6922-497b-8211-93df007ea6d5.json +1 -0
- package/resources/7e0cc969-c956-42de-b0e1-7a796c53ff41 +1 -0
- package/resources/7e0cc969-c956-42de-b0e1-7a796c53ff41.json +1 -0
- package/src/actions/UserAction.ts +13 -0
- package/src/http-auth.ts +31 -0
- package/src/http-oauth.ts +31 -0
- package/store.json +72 -0
package/.turbo/turbo-check.log
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
> @mcphero/examples@1.1.
|
|
2
|
+
> @mcphero/examples@1.1.7 check /Users/atomic/projects/ai/mcphero/example
|
|
3
3
|
> pnpm lint && pnpm typecheck
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @mcphero/examples@1.1.
|
|
6
|
+
> @mcphero/examples@1.1.7 lint /Users/atomic/projects/ai/mcphero/example
|
|
7
7
|
> eslint
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
|
|
10
|
+
> @mcphero/examples@1.1.7 typecheck /Users/atomic/projects/ai/mcphero/example
|
|
11
|
+
> tsc --noEmit
|
|
12
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcphero/examples",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "MCP Hero Examples",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
"main": "build/index.js",
|
|
12
12
|
"types": "build/index.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@mcphero/
|
|
15
|
-
"@mcphero/
|
|
16
|
-
"@mcphero/
|
|
17
|
-
"@mcphero/
|
|
18
|
-
"@mcphero/
|
|
14
|
+
"@mcphero/core": "1.2.0",
|
|
15
|
+
"@mcphero/cli": "1.2.0",
|
|
16
|
+
"@mcphero/auth": "1.2.0",
|
|
17
|
+
"@mcphero/logger": "1.2.0",
|
|
18
|
+
"@mcphero/fastify": "1.2.0",
|
|
19
|
+
"@mcphero/mcp": "1.2.0",
|
|
20
|
+
"@mcphero/vercel": "1.2.0"
|
|
19
21
|
},
|
|
20
22
|
"devDependencies": {
|
|
21
23
|
"@eslint/js": "^10.0.1",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
the secret code is "pirates"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"0b60d5f8-2e09-4359-8134-b026aa8d5268","name":"SECRET.md","contentType":"text/plain","size":28}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
the secret code is "pirates"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"4fb60792-6922-497b-8211-93df007ea6d5","name":"SECRET.md","contentType":"text/plain","size":28}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
the secret code is "pirates"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"7e0cc969-c956-42de-b0e1-7a796c53ff41","name":"SECRET.md","contentType":"text/plain","size":28}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthInfo } from '@mcphero/auth'
|
|
2
|
+
import { createAction } from '@mcphero/core'
|
|
3
|
+
import z from 'zod'
|
|
4
|
+
|
|
5
|
+
export const UserAction = createAction({
|
|
6
|
+
name: 'user',
|
|
7
|
+
description: 'Retrieve current Oauth User',
|
|
8
|
+
input: z.object({}),
|
|
9
|
+
run: async (_, context) => {
|
|
10
|
+
const auth = context.get<AuthInfo>('auth')
|
|
11
|
+
return { success: true, auth }
|
|
12
|
+
}
|
|
13
|
+
})
|
package/src/http-auth.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AuthConfig } from '@mcphero/auth'
|
|
2
|
+
import { mcphero } from '@mcphero/core'
|
|
3
|
+
import { http } from '@mcphero/mcp'
|
|
4
|
+
import { randomUUID } from 'crypto'
|
|
5
|
+
import { HelloAction } from './actions/HelloAction.js'
|
|
6
|
+
import { TaskAction } from './actions/TaskAction.js'
|
|
7
|
+
|
|
8
|
+
const API_TOKEN = process.env.API_TOKEN ?? 'test-token'
|
|
9
|
+
|
|
10
|
+
const auth: AuthConfig = {
|
|
11
|
+
verifyToken: async (token) => {
|
|
12
|
+
if (token === API_TOKEN) {
|
|
13
|
+
return { token, clientId: 'example-client', scopes: ['read', 'write'] }
|
|
14
|
+
}
|
|
15
|
+
return undefined
|
|
16
|
+
},
|
|
17
|
+
resourceUrl: 'http://localhost:8080',
|
|
18
|
+
authorizationServers: ['https://accounts.google.com']
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function main() {
|
|
22
|
+
console.log(`Starting MCP HTTP server with auth (token: ${API_TOKEN})`)
|
|
23
|
+
await mcphero({ name: 'mcphero-auth', description: 'MCPHero with Auth', version: '1.0.0' })
|
|
24
|
+
.set('sessionId', randomUUID)
|
|
25
|
+
.adapter(http({ host: 'localhost', port: 8080, allowedHosts: ['localhost'], auth }))
|
|
26
|
+
.action(HelloAction)
|
|
27
|
+
.action(TaskAction)
|
|
28
|
+
.start()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
main()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createJsonStore, google } from '@mcphero/auth'
|
|
2
|
+
import { mcphero } from '@mcphero/core'
|
|
3
|
+
import { http } from '@mcphero/mcp'
|
|
4
|
+
import { HelloAction } from './actions/HelloAction.js'
|
|
5
|
+
import { TaskAction } from './actions/TaskAction.js'
|
|
6
|
+
import { UserAction } from './actions/UserAction.js'
|
|
7
|
+
|
|
8
|
+
const store = createJsonStore('store.json')
|
|
9
|
+
|
|
10
|
+
const auth = google({
|
|
11
|
+
clientId: process.env.GOOGLE_CLIENT_ID!,
|
|
12
|
+
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
|
|
13
|
+
resourceUrl: 'http://localhost:8080',
|
|
14
|
+
redirectUris: ['http://localhost:*', 'http://127.0.0.1:*', 'https://claude.ai/*', 'https://app.mcpjam.com/*', 'mcpjam://*'],
|
|
15
|
+
requiredScopes: ['openid', 'https://www.googleapis.com/auth/userinfo.email'],
|
|
16
|
+
callbackPath: '/auth/callback',
|
|
17
|
+
signingKey: 'c937130a-73d9-4c12-96bf-b12d70867685',
|
|
18
|
+
store
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
async function main() {
|
|
22
|
+
console.log('Starting MCP HTTP server with Google OAuth')
|
|
23
|
+
await mcphero({ name: 'mcphero-oauth', description: 'MCPHero with Google OAuth', version: '1.0.0' })
|
|
24
|
+
.adapter(http({ host: 'localhost', port: 8080, allowedHosts: ['localhost'], auth }))
|
|
25
|
+
.action(HelloAction)
|
|
26
|
+
.action(TaskAction)
|
|
27
|
+
.action(UserAction)
|
|
28
|
+
.start()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
main()
|
package/store.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"authCodes": {
|
|
3
|
+
"czgma3QT1ejEx5K09e6Q-0MJsVKrpybLqrD1b5kITJA": {
|
|
4
|
+
"clientId": "https://www.mcpjam.com/.well-known/oauth/client-metadata.json",
|
|
5
|
+
"redirectUri": "http://127.0.0.1:6274/oauth/callback/debug",
|
|
6
|
+
"codeChallenge": "ObpId7hl-RudWb67mmbalyzeoV0VMIKXfnBG-eSW43I",
|
|
7
|
+
"codeChallengeMethod": "S256",
|
|
8
|
+
"scopes": [
|
|
9
|
+
"openid",
|
|
10
|
+
"https://www.googleapis.com/auth/userinfo.email"
|
|
11
|
+
],
|
|
12
|
+
"upstreamAccessToken": "ya29.a0Aa7MYioRCGrm87qglCWj9BsyVvpKbfoKc_2p9EflDYdBkqxYcvlp80of-wRMe3lkTM8DrZ-9JSx163Gtmuz0R5rYeY47Akq15cAB81_fXgupbBXwyF6ADXwiVu8zGFpTgI83fSGxFIjRo3ljZ_-AFuerWyjApA-ZXheArtkfdRX5EDj7mnwomLc0TCV9uVUqP0VSNe7b9TJ6-jLlnXtFD7yAooBxRANtFdfaoW_RIR5vgZ3rlgvDVwfMcOiKWEHEoGLpgTWj_1F8d6t2q2pKAX2dG-DFoQaCgYKAT8SARMSFQHGX2MiIyJBVEwSZNTmWNRvtZOWmA0293",
|
|
13
|
+
"upstreamIdToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImNjZTRlMDI0YTUxYWEwYzFjNDFjMWE0NTE1YTQxZGQ3ZTk2MTkzNmIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMjIwMjcyNjc5MDctZWtoc2wwaHZmaHZlMzdrN3Y0NXFobm5uYmRxZXQxMmUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMjIwMjcyNjc5MDctZWtoc2wwaHZmaHZlMzdrN3Y0NXFobm5uYmRxZXQxMmUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDk3NTc2OTAwMjk5MDk2NjY0MzkiLCJoZCI6ImF0b21pYy5iaSIsImVtYWlsIjoidG9iaWFzLnN0cmViaXR6ZXJAYXRvbWljLmJpIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImF0X2hhc2giOiJQY2dBNWZoWHY5OE5tQlkwb1hzQmxnIiwiaWF0IjoxNzc1NTQ3OTA3LCJleHAiOjE3NzU1NTE1MDd9.MwxCKBb6AP0kY5SYYzIi2mfaiHjhuFxfd0mAgs5nXpUxeGk4uBJcYn0yHHyY0aiA7_QG4jW4868-LR2AfNIvljUkrK_qcydVp4POcqDTnNAUUvGAc7-MuEi9RS9XNHpRNTOkI66lf2J1nD253HbauiDaTrYT5nd5R5XVLK7eWNfMe-vEkU33vl5wWHrXjiPdoZ4HKf6yqMnspTUzrMZHaaLVU036efJWZykxqhYb4kl9APoWBSXT_taDI1L2OrHCPhOPVopzgILHszo0eRwZ8bLTCHMfQZ2mfb1Hp3OJysKNz6q0HaU9pYS6DkfJuYW51ef73VA5EI0cXlS0iocY4Q",
|
|
14
|
+
"email": "tobias.strebitzer@atomic.bi",
|
|
15
|
+
"sub": "109757690029909666439",
|
|
16
|
+
"expiresAt": 1775548507.489
|
|
17
|
+
},
|
|
18
|
+
"UU-fBDGAhAw13uWx06zrUJyYzXLrP_n9JL1u8pi8OiI": {
|
|
19
|
+
"clientId": "https://www.mcpjam.com/.well-known/oauth/client-metadata.json",
|
|
20
|
+
"redirectUri": "http://127.0.0.1:6274/oauth/callback/debug",
|
|
21
|
+
"codeChallenge": "sup1knJHacpTXX-r77_JgCV4yJwVJKOhxgJzuyU2NvU",
|
|
22
|
+
"codeChallengeMethod": "S256",
|
|
23
|
+
"scopes": [
|
|
24
|
+
"openid",
|
|
25
|
+
"https://www.googleapis.com/auth/userinfo.email"
|
|
26
|
+
],
|
|
27
|
+
"upstreamAccessToken": "ya29.a0Aa7MYioMHI6c4mkMZJeueUJ0uepFmMQeCt1hDJ6xlxP-bvOnuLwxymH6MNUKN38Pw5ZRfAvtUkYMhRP0_wqJjOSAqpAtO2bJjZjgEpgnkumAazVbitDwK1tRrJPZxvKC5ivETLuf-5fWgsL4Ll4HUa7UzcpEJvRAOoaKJWWX5J20h6oW6GTreXxaJpD-eLVerhVLJxgA9LwXNmD3k62BSkDhrOWGhkJwis0ZFC1Kz6MlWNpeJacVbdCEUx7zEIiHiNDyCmxltWgS4Ri_aTotWX9SsR3sBwaCgYKAU4SARMSFQHGX2MipIHf_k5x-ZJqkyHrUdikcQ0293",
|
|
28
|
+
"upstreamIdToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImNjZTRlMDI0YTUxYWEwYzFjNDFjMWE0NTE1YTQxZGQ3ZTk2MTkzNmIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIyMjIwMjcyNjc5MDctZWtoc2wwaHZmaHZlMzdrN3Y0NXFobm5uYmRxZXQxMmUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIyMjIwMjcyNjc5MDctZWtoc2wwaHZmaHZlMzdrN3Y0NXFobm5uYmRxZXQxMmUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDk3NTc2OTAwMjk5MDk2NjY0MzkiLCJoZCI6ImF0b21pYy5iaSIsImVtYWlsIjoidG9iaWFzLnN0cmViaXR6ZXJAYXRvbWljLmJpIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImF0X2hhc2giOiJHVm5IRlBXZGRES2RHOTBiS2RuQVpRIiwiaWF0IjoxNzc1NTQ3OTgxLCJleHAiOjE3NzU1NTE1ODF9.d_6k5OoBSlUsVPDylPCFJiyjLQJVREMPNWX2NCan3OKB0l3de_I8wb1Kg8jtojo9jcz-kBCxVWhPdj7EMkZEq40si03HIkr4_bsnDR7H8peg5VCMeiwJwGK_mk5gyrfgZsycvytlqqlc3vXt0xQXN2uCPQqD2Y-FeerVfCOjHTTMEQXMI66GTGrJvWWVYFVXzWD8KkFseDwe-u8nFtAmqUVUVlIgDis5BSFhPTck1ACbKarwbJHdoi9Y3Qb2e5fprqrb3GoIbknp_L43j0K9rWjewUBuaByYUUcaAw5jYWhaSWsY1mp4UDeh1p7pNwdzU7Atn8ZvCkr5Zvh1KNvjhA",
|
|
29
|
+
"email": "tobias.strebitzer@atomic.bi",
|
|
30
|
+
"sub": "109757690029909666439",
|
|
31
|
+
"expiresAt": 1775548581.311
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"pendingAuths": {},
|
|
35
|
+
"pkceVerifiers": {},
|
|
36
|
+
"clients": {
|
|
37
|
+
"https://www.mcpjam.com/.well-known/oauth/client-metadata.json": {
|
|
38
|
+
"clientId": "https://www.mcpjam.com/.well-known/oauth/client-metadata.json",
|
|
39
|
+
"clientSecret": "",
|
|
40
|
+
"redirectUris": [
|
|
41
|
+
"mcpjam://oauth/callback",
|
|
42
|
+
"mcpjam://authkit/callback",
|
|
43
|
+
"http://127.0.0.1:6274/oauth/callback",
|
|
44
|
+
"http://127.0.0.1:6274/callback",
|
|
45
|
+
"http://127.0.0.1:6274/oauth/callback/debug",
|
|
46
|
+
"http://localhost:6274/oauth/callback",
|
|
47
|
+
"http://localhost:6274/callback",
|
|
48
|
+
"http://localhost:6274/oauth/callback/debug",
|
|
49
|
+
"http://127.0.0.1:5173/oauth/callback",
|
|
50
|
+
"http://127.0.0.1:5173/oauth/callback/debug",
|
|
51
|
+
"http://localhost:5173/oauth/callback",
|
|
52
|
+
"http://localhost:5173/oauth/callback/debug",
|
|
53
|
+
"https://app.mcpjam.com/oauth/callback",
|
|
54
|
+
"https://app.mcpjam.com/oauth/callback/debug"
|
|
55
|
+
],
|
|
56
|
+
"clientName": "MCPJam",
|
|
57
|
+
"createdAt": 1775547902.675
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"refreshTokens": {
|
|
61
|
+
"q2VL5wRiFitlZgF_TomrsBhnRhYqlwcKLBGrELhoxZ4": {
|
|
62
|
+
"clientId": "https://www.mcpjam.com/.well-known/oauth/client-metadata.json",
|
|
63
|
+
"scopes": [
|
|
64
|
+
"openid",
|
|
65
|
+
"https://www.googleapis.com/auth/userinfo.email"
|
|
66
|
+
],
|
|
67
|
+
"email": "tobias.strebitzer@atomic.bi",
|
|
68
|
+
"sub": "109757690029909666439",
|
|
69
|
+
"expiresAt": 1778140111
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|