@appsai/mcp-server 1.0.3 โ†’ 1.0.5

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 CHANGED
@@ -1,153 +1,100 @@
1
- # MCP Registry
1
+ # AppsAI MCP Server
2
2
 
3
- The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
3
+ Build and deploy full-stack Next.js apps with AI. This MCP server connects Claude Code, Cursor, Windsurf, and other AI tools to your AppsAI projects.
4
4
 
5
- [**๐Ÿ“ค Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**โšก๏ธ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**๐Ÿ‘€ Ecosystem vision**](docs/design/ecosystem-vision.md) | ๐Ÿ“– **[Full documentation](./docs)**
6
-
7
- ## Development Status
8
-
9
- **2025-10-24 update**: The Registry API has entered an **API freeze (v0.1)** ๐ŸŽ‰. For the next month or more, the API will remain stable with no breaking changes, allowing integrators to confidently implement support. This freeze applies to v0.1 while development continues on v0. We'll use this period to validate the API in real-world integrations and gather feedback to shape v1 for general availability. Thank you to everyone for your contributions and patienceโ€”your involvement has been key to getting us here!
10
-
11
- **2025-09-08 update**: The registry has launched in preview ๐ŸŽ‰ ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
12
-
13
- Current key maintainers:
14
- - **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
15
- - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
16
- - **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
17
- - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov)
18
-
19
- ## Contributing
20
-
21
- We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
22
-
23
- Often (but not always) ideas flow through this pipeline:
24
-
25
- - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
- - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
- - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
- - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
29
-
30
- ### Quick start:
31
-
32
- #### Pre-requisites
33
-
34
- - **Docker**
35
- - **Go 1.24.x**
36
- - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
37
- - **golangci-lint v2.4.0**
38
-
39
- #### Running the server
5
+ ## Installation
40
6
 
7
+ ### Claude Code
41
8
  ```bash
42
- # Start full development environment
43
- make dev-compose
9
+ claude mcp add appsai -e APPSAI_API_KEY=your_key -- npx -y @appsai/mcp-server
44
10
  ```
45
11
 
46
- This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
47
-
48
- **Note:** The registry uses [ko](https://ko.build) to build container images. The `make dev-compose` command automatically builds the registry image with ko and loads it into your local Docker daemon before starting the services.
49
-
50
- By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`.
51
-
52
- The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
53
-
54
- <details>
55
- <summary>Alternative: Running a pre-built Docker image</summary>
56
-
57
- Pre-built Docker images are automatically published to GitHub Container Registry:
58
-
59
- ```bash
60
- # Run latest stable release
61
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
62
-
63
- # Run latest from main branch (continuous deployment)
64
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
65
-
66
- # Run specific release version
67
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
68
-
69
- # Run development build from main branch
70
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
12
+ ### Claude Desktop
13
+ Add to `claude_desktop_config.json`:
14
+ ```json
15
+ {
16
+ "mcpServers": {
17
+ "appsai": {
18
+ "command": "npx",
19
+ "args": ["-y", "@appsai/mcp-server"],
20
+ "env": {
21
+ "APPSAI_API_KEY": "your_key"
22
+ }
23
+ }
24
+ }
25
+ }
71
26
  ```
72
27
 
73
- **Available tags:**
74
- - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
- - **Continuous**: `main` (latest main branch build)
76
- - **Development**: `main-<date>-<sha>` (specific commit builds)
28
+ ### Cursor / Windsurf
29
+ Add to MCP settings with:
30
+ - **Command:** `npx -y @appsai/mcp-server`
31
+ - **Environment:** `APPSAI_API_KEY=your_key`
77
32
 
78
- </details>
33
+ ## Getting Your API Key
79
34
 
80
- #### Publishing a server
35
+ 1. Sign up at [appsai.com](https://appsai.com)
36
+ 2. Go to **Settings > Billing > API Keys**
37
+ 3. Click **Create API Key**
38
+ 4. Copy the key (shown once)
81
39
 
82
- To publish a server, we've built a simple CLI. You can use it with:
40
+ ## Tools (98 Total)
83
41
 
84
- ```bash
85
- # Build the latest CLI
86
- make publisher
42
+ | Category | Tools | Description |
43
+ |----------|-------|-------------|
44
+ | **Project** | 5 | Create, list, and manage projects |
45
+ | **Canvas** | 25 | Edit React components, styles, and assets |
46
+ | **Server** | 6 | Backend Parse Server development |
47
+ | **System** | 5 | Deploy frontend and backend |
48
+ | **AWS** | 23 | CloudFormation, S3, Lambda, and more |
49
+ | **MongoDB** | 18 | Database and collection management |
50
+ | **Agent** | 9 | AI prompt management |
51
+ | **Shared** | 7 | Cross-AI communication |
52
+
53
+ ## Example Usage
87
54
 
88
- # Use it!
89
- ./bin/mcp-publisher --help
90
55
  ```
56
+ "List my projects"
57
+ โ†’ project_LIST_PROJECTS
91
58
 
92
- See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
59
+ "Create a new Next.js app"
60
+ โ†’ project_CREATE_PROJECT
93
61
 
94
- #### Other commands
62
+ "Show the file tree for project abc123"
63
+ โ†’ canvas_LIST_FILES
95
64
 
96
- ```bash
97
- # Run lint, unit tests and integration tests
98
- make check
65
+ "Deploy the frontend"
66
+ โ†’ system_DEPLOY_FRONTEND
99
67
  ```
100
68
 
101
- There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
69
+ ## Resources
102
70
 
103
- <!--
104
- For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
- -->
71
+ The server provides project context as MCP resources:
72
+ - `appsai://projects` - List of your projects
73
+ - `appsai://project/{id}` - Project details and file structure
106
74
 
107
- ## Architecture
75
+ ## Prompts
108
76
 
109
- ### Project Structure
77
+ Built-in prompts for common workflows:
78
+ - `create-component` - Generate a new React component
79
+ - `fix-error` - Debug and fix an error
80
+ - `deploy` - Deploy your application
110
81
 
111
- ```
112
- โ”œโ”€โ”€ cmd/ # Application entry points
113
- โ”‚ โ””โ”€โ”€ publisher/ # Server publishing tool
114
- โ”œโ”€โ”€ data/ # Seed data
115
- โ”œโ”€โ”€ deploy/ # Deployment configuration (Pulumi)
116
- โ”œโ”€โ”€ docs/ # Documentation
117
- โ”œโ”€โ”€ internal/ # Private application code
118
- โ”‚ โ”œโ”€โ”€ api/ # HTTP handlers and routing
119
- โ”‚ โ”œโ”€โ”€ auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
120
- โ”‚ โ”œโ”€โ”€ config/ # Configuration management
121
- โ”‚ โ”œโ”€โ”€ database/ # Data persistence (PostgreSQL)
122
- โ”‚ โ”œโ”€โ”€ service/ # Business logic
123
- โ”‚ โ”œโ”€โ”€ telemetry/ # Metrics and monitoring
124
- โ”‚ โ””โ”€โ”€ validators/ # Input validation
125
- โ”œโ”€โ”€ pkg/ # Public packages
126
- โ”‚ โ”œโ”€โ”€ api/ # API types and structures
127
- โ”‚ โ”‚ โ””โ”€โ”€ v0/ # Version 0 API types
128
- โ”‚ โ””โ”€โ”€ model/ # Data models for server.json
129
- โ”œโ”€โ”€ scripts/ # Development and testing scripts
130
- โ”œโ”€โ”€ tests/ # Integration tests
131
- โ””โ”€โ”€ tools/ # CLI tools and utilities
132
- โ””โ”€โ”€ validate-*.sh # Schema validation tools
133
- ```
82
+ ## Requirements
134
83
 
135
- ### Authentication
84
+ - Node.js 18+
85
+ - AppsAI account with credits
86
+ - API key from Settings > Billing
136
87
 
137
- Publishing supports multiple authentication methods:
138
- - **GitHub OAuth** - For publishing by logging into GitHub
139
- - **GitHub OIDC** - For publishing from GitHub Actions
140
- - **DNS verification** - For proving ownership of a domain and its subdomains
141
- - **HTTP verification** - For proving ownership of a domain
88
+ ## Documentation
142
89
 
143
- The registry validates namespace ownership when publishing. E.g. to publish...:
144
- - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
145
- - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
90
+ - [AppsAI Docs](https://appsai.com/docs)
91
+ - [MCP Integration Guide](https://appsai.com/docs/mcp)
146
92
 
147
- ## Community Projects
93
+ ## Support
148
94
 
149
- Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
95
+ - [GitHub Issues](https://github.com/appsai-inc/mcp-server/issues)
96
+ - [Discord](https://discord.gg/appsai)
150
97
 
151
- ## More documentation
98
+ ## License
152
99
 
153
- See the [documentation](./docs) for more details if your question has not been answered here!
100
+ MIT
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
9
9
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
10
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
11
11
  import * as dotenv from 'dotenv';
12
12
  import { getAllTools, executeToolCall } from './tools.js';
13
13
  import { validateAPIKey, initializeParse } from './utils/parse.js';
@@ -46,6 +46,8 @@ async function createServer() {
46
46
  }, {
47
47
  capabilities: {
48
48
  tools: {},
49
+ resources: {},
50
+ prompts: {},
49
51
  },
50
52
  });
51
53
  // Handle tool listing
@@ -84,6 +86,152 @@ async function createServer() {
84
86
  };
85
87
  }
86
88
  });
89
+ // Handle resource listing
90
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
91
+ try {
92
+ await ensureAuthenticated();
93
+ return {
94
+ resources: [
95
+ {
96
+ uri: 'appsai://projects',
97
+ name: 'Projects',
98
+ description: 'List of your AppsAI projects',
99
+ mimeType: 'application/json',
100
+ },
101
+ ],
102
+ };
103
+ }
104
+ catch {
105
+ return { resources: [] };
106
+ }
107
+ });
108
+ // Handle resource reading
109
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
110
+ const { uri } = request.params;
111
+ console.error(`[MCP] Resource read: ${uri}`);
112
+ try {
113
+ const userId = await ensureAuthenticated();
114
+ if (uri === 'appsai://projects') {
115
+ const result = await executeToolCall('project_LIST_PROJECTS', {}, userId);
116
+ return {
117
+ contents: [
118
+ {
119
+ uri,
120
+ mimeType: 'application/json',
121
+ text: result.content[0].type === 'text' ? result.content[0].text : '[]',
122
+ },
123
+ ],
124
+ };
125
+ }
126
+ // Handle appsai://project/{id}
127
+ const projectMatch = uri.match(/^appsai:\/\/project\/(.+)$/);
128
+ if (projectMatch) {
129
+ const projectId = projectMatch[1];
130
+ const result = await executeToolCall('project_GET_PROJECT_DETAILS', { projectId }, userId);
131
+ return {
132
+ contents: [
133
+ {
134
+ uri,
135
+ mimeType: 'application/json',
136
+ text: result.content[0].type === 'text' ? result.content[0].text : '{}',
137
+ },
138
+ ],
139
+ };
140
+ }
141
+ throw new Error(`Unknown resource: ${uri}`);
142
+ }
143
+ catch (error) {
144
+ const message = error instanceof Error ? error.message : 'Unknown error';
145
+ throw new Error(`Failed to read resource: ${message}`);
146
+ }
147
+ });
148
+ // Handle prompt listing
149
+ server.setRequestHandler(ListPromptsRequestSchema, async () => {
150
+ return {
151
+ prompts: [
152
+ {
153
+ name: 'create-component',
154
+ description: 'Generate a new React component with best practices',
155
+ arguments: [
156
+ { name: 'name', description: 'Component name', required: true },
157
+ { name: 'projectId', description: 'Target project ID', required: true },
158
+ ],
159
+ },
160
+ {
161
+ name: 'fix-error',
162
+ description: 'Debug and fix an error in your project',
163
+ arguments: [
164
+ { name: 'error', description: 'Error message or description', required: true },
165
+ { name: 'projectId', description: 'Target project ID', required: true },
166
+ ],
167
+ },
168
+ {
169
+ name: 'deploy',
170
+ description: 'Deploy your application to production',
171
+ arguments: [
172
+ { name: 'projectId', description: 'Project to deploy', required: true },
173
+ { name: 'target', description: 'Deploy target: frontend, backend, or all', required: false },
174
+ ],
175
+ },
176
+ ],
177
+ };
178
+ });
179
+ // Handle prompt retrieval
180
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
181
+ const { name, arguments: args } = request.params;
182
+ const prompts = {
183
+ 'create-component': {
184
+ description: 'Generate a new React component',
185
+ content: `Create a new React component named "${args?.name || 'Component'}" in project ${args?.projectId || 'unknown'}.
186
+
187
+ Requirements:
188
+ - Use TypeScript with proper types
189
+ - Follow React best practices
190
+ - Include proper exports
191
+ - Add basic styling if appropriate
192
+
193
+ Use the canvas_SET_RAW_FILE tool to create the component file.`,
194
+ },
195
+ 'fix-error': {
196
+ description: 'Debug and fix an error',
197
+ content: `Fix the following error in project ${args?.projectId || 'unknown'}:
198
+
199
+ Error: ${args?.error || 'No error provided'}
200
+
201
+ Steps:
202
+ 1. Use canvas_LIST_FILES to find relevant files
203
+ 2. Use canvas_READ_RAW_FILE to examine the code
204
+ 3. Use canvas_SET_RAW_FILE to apply the fix
205
+ 4. Explain what caused the error and how you fixed it`,
206
+ },
207
+ 'deploy': {
208
+ description: 'Deploy application',
209
+ content: `Deploy project ${args?.projectId || 'unknown'} to production.
210
+
211
+ Target: ${args?.target || 'all'}
212
+
213
+ Use the appropriate system tool:
214
+ - system_DEPLOY_FRONTEND for frontend only
215
+ - system_DEPLOY_BACKEND for backend only
216
+ - system_DEPLOY_ALL for full deployment
217
+
218
+ After deployment, use system_GET_ENVIRONMENT_STATUS to verify.`,
219
+ },
220
+ };
221
+ const prompt = prompts[name];
222
+ if (!prompt) {
223
+ throw new Error(`Unknown prompt: ${name}`);
224
+ }
225
+ return {
226
+ description: prompt.description,
227
+ messages: [
228
+ {
229
+ role: 'user',
230
+ content: { type: 'text', text: prompt.content },
231
+ },
232
+ ],
233
+ };
234
+ });
87
235
  return server;
88
236
  }
89
237
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,8 @@ export async function runCloudFunction(functionName, params, sessionToken) {
39
39
  export async function validateAPIKey(apiKey) {
40
40
  initializeParse();
41
41
  try {
42
- const result = await Parse.Cloud.run('validateMCPAPIKey', { apiKey }, { useMasterKey: true });
42
+ // No useMasterKey - the cloud function handles auth internally
43
+ const result = await Parse.Cloud.run('validateMCPAPIKey', { apiKey });
43
44
  return result;
44
45
  }
45
46
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,oCAAoC,CAAC;IACvF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0CAA0C,CAAC;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE/C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5B,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAAoB,EACpB,MAA+B,EAC/B,YAAqB;IAErB,eAAe,EAAE,CAAC;IAElB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAe,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,eAAe,EAAE,CAAC;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAI3F,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/utils/parse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,oCAAoC,CAAC;IACvF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0CAA0C,CAAC;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE/C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5B,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAAoB,EACpB,MAA+B,EAC/B,YAAqB;IAErB,eAAe,EAAE,CAAC;IAElB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAe,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,eAAe,EAAE,CAAC;IAElB,IAAI,CAAC;QACH,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAInE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appsai/mcp-server",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Official MCP server for AppsAI - connect Claude Code to your AppsAI projects",
5
5
  "mcpName": "com.appsai/mcp-server",
6
6
  "type": "module",
package/server.json CHANGED
@@ -6,13 +6,13 @@
6
6
  "url": "https://github.com/appsai-inc/mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.0.3",
9
+ "version": "1.0.5",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "registryBaseUrl": "https://registry.npmjs.org",
14
14
  "identifier": "@appsai/mcp-server",
15
- "version": "1.0.3",
15
+ "version": "1.0.5",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },