MCP Anthropic Server (mcp-anthropic
)
An MCP (Model Context Protocol) server providing tools to interact with Anthropic's experimental prompt engineering APIs.
Features
Provides the following tools:
generate_prompt
: Generates a prompt based on a task description.improve_prompt
: Improves an existing prompt based on feedback.templatize_prompt
: Converts a concrete prompt example into a reusable template.
Setup
- Clone the repository (if applicable)
- Navigate to the project directory:
- Install dependencies:
- Configure API Key:
- Create a
.env
file in the project root (./mcp-anthropic/.env
). - Add your Anthropic API key to the
.env
file:ANTHROPIC_KEY=your_anthropic_api_key_here
- Ensure this file is not committed to version control (it should be covered by
.gitignore
). - Note for LibreChat Integration: For specific instructions on setting up and running this server as a child process within LibreChat (including API key handling), please refer to the
documentation.md
file.
Running the Server
- Build the TypeScript code:
- Start the server:The server will start and listen for MCP connections. You should see output indicating the server has started and which tools are registered.
generate_prompt
Generates a prompt based on a task description.
Input Schema:
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "A description of the task the prompt should be designed for (e.g., \"a chef for a meal prep planning service\")."
},
"target_model": {
"type": "string",
"description": "The target Anthropic model identifier (e.g., \"claude-3-opus-20240229\")."
}
},
"required": ["task", "target_model"]
}
improve_prompt
Improves an existing prompt based on feedback.
Input Schema:
{
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": { "type": "string", "description": "Role (e.g., 'user', 'assistant')." },
"content": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string", "description": "Content type (e.g., 'text')." },
"text": { "type": "string", "description": "Text content." }
},
"required": ["type", "text"]
},
"description": "Content blocks."
}
},
"required": ["role", "content"]
},
"description": "The sequence of messages representing the prompt conversation."
},
"system": {
"type": "string",
"description": "(Optional) A system prompt to guide the model."
},
"feedback": {
"type": "string",
"description": "Specific feedback on how to improve the prompt (e.g., \"Make it more detailed\")."
},
"target_model": {
"type": "string",
"description": "The target Anthropic model identifier (e.g., \"claude-3-opus-20240229\")."
}
},
"required": ["messages", "feedback", "target_model"]
}
templatize_prompt
Converts a concrete prompt example into a reusable template.
Input Schema:
{
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": { "type": "string", "description": "Role (e.g., 'user', 'assistant')." },
"content": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string", "description": "Content type (e.g., 'text')." },
"text": { "type": "string", "description": "Text content." }
},
"required": ["type", "text"]
},
"description": "Content blocks."
}
},
"required": ["role", "content"]
},
"description": "The sequence of messages representing the prompt conversation example."
},
"system": {
"type": "string",
"description": "(Optional) A system prompt associated with the example."
}
},
"required": ["messages"]
}