Add StoreMembers tool and update endpoints; enhance README
This commit is contained in:
74
.github/prompts/create-mcp-tool-from-openapi.prompt.md
vendored
Normal file
74
.github/prompts/create-mcp-tool-from-openapi.prompt.md
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
# Reusable Prompt: Add a new MCP tool from `fsopenapi.json`
|
||||
|
||||
Use this prompt when adding a new MCP tool to this project.
|
||||
|
||||
---
|
||||
|
||||
You are working in the `fsmcp` workspace.
|
||||
|
||||
## Goal
|
||||
Add a new MCP tool for this endpoint:
|
||||
- **Endpoint path:** `<ENDPOINT_PATH>`
|
||||
- **HTTP method:** `<HTTP_METHOD>`
|
||||
|
||||
Use `fsopenapi.json` as the source of truth for request/response schemas and constraints.
|
||||
|
||||
## Required implementation rules
|
||||
1. **Read OpenAPI docs first**
|
||||
- Find endpoint details in `fsopenapi.json`:
|
||||
- summary/description
|
||||
- parameters (path/query/body)
|
||||
- response schema(s)
|
||||
- relevant referenced component schemas and enums
|
||||
- Use exact API field names via `JsonPropertyName`.
|
||||
|
||||
2. **Update endpoint constants**
|
||||
- Add a new endpoint constant/function in `FsMcp/Endpoints.cs`.
|
||||
- Follow existing style (`ApiBase`, interpolation, naming consistency).
|
||||
|
||||
3. **Create a new tool class**
|
||||
- Create file in `FsMcp/Tools/` named after the endpoint purpose, e.g. `RegionStoresTools.cs`.
|
||||
- Add one MCP tool method with `[McpServerTool]` and detailed `[Description]`.
|
||||
- Inject and use `FoodsharingApiClient`.
|
||||
- Always call `await _apiClient.EnsureLoginAsync();` before HTTP calls.
|
||||
- Validate input parameters where appropriate (e.g. IDs > 0).
|
||||
- Use strongly typed request/response models (`record` types).
|
||||
- Add rich per-field `[Description]` metadata on model properties.
|
||||
- Reuse existing shared models if already present (avoid duplication).
|
||||
|
||||
4. **Register tool in host**
|
||||
- Add `.WithTools<YourNewToolsClass>()` in `FsMcp/Program.cs`.
|
||||
|
||||
5. **Extend documentation**
|
||||
- Update `FsMcp/README.md` with a new section for the tool including:
|
||||
- tool name
|
||||
- endpoint + purpose
|
||||
- input parameters
|
||||
- auth behavior (`USERNAME`, `PASSWORD`, CSRF)
|
||||
- output shape highlights
|
||||
- enum/date/data-quality notes that help consumers
|
||||
|
||||
6. **Validate**
|
||||
- Build with:
|
||||
- `dotnet build FsMcp/FsMcp.csproj -c Debug`
|
||||
- If build fails due to pre-existing unrelated issues, clearly state that and confirm whether new files are clean.
|
||||
|
||||
## Style constraints
|
||||
- Keep changes minimal and focused.
|
||||
- Match existing C# style and naming.
|
||||
- Do not add unrelated refactors.
|
||||
- Preserve API payload shape; do not rename wire-level JSON fields.
|
||||
|
||||
## Output format expected from you
|
||||
At the end, provide:
|
||||
1. Short summary of what changed.
|
||||
2. List of changed files.
|
||||
3. Validation result.
|
||||
4. Any blockers or follow-up suggestions.
|
||||
|
||||
## Variables to fill before running this prompt
|
||||
- `<ENDPOINT_PATH>` e.g. `/api/regions/{regionId}/stores`
|
||||
- `<HTTP_METHOD>` e.g. `GET`
|
||||
|
||||
## Example invocation
|
||||
"Add a new MCP tool for `GET /api/regions/{regionId}/stores` using this reusable prompt and implement all required steps."
|
||||
Reference in New Issue
Block a user