@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.
@@ -1,10 +1,12 @@
1
1
 
2
- > @mcphero/examples@1.1.6 check /Users/atomic/projects/ai/mcphero/example
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 lint /Users/atomic/projects/ai/mcphero/example
6
+ > @mcphero/examples@1.1.7 lint /Users/atomic/projects/ai/mcphero/example
7
7
  > eslint
8
8
 
9
-  ELIFECYCLE  Command failed.
10
-  ELIFECYCLE  Command failed.
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.1.6",
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/cli": "1.1.6",
15
- "@mcphero/core": "1.1.6",
16
- "@mcphero/logger": "1.1.6",
17
- "@mcphero/fastify": "1.1.6",
18
- "@mcphero/mcp": "1.1.6"
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
+ })
@@ -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
+ }