AI App MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI App MCPsearch knowledge base for MCP server setup"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI App MCP
A production-ready Python MCP server that supports both stdio and Streamable HTTP transports.
Features
health_check: return server health and runtime configuration.normalize_user_query: normalize user text before retrieval or agent routing.search_knowledge_base: search local.md,.txt, and.jsonfiles.get_document: read a safe document from the configured knowledge directory.build_rag_prompt: build a grounded RAG prompt.config://runtime: expose safe runtime configuration.rag_answer_prompt: reusable RAG prompt template.
Related MCP server: Python MCP Server Template
Install
cd D:\projects\codex\single\mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Copy-Item .env.example .envTransport 1: stdio
Use stdio when an AI client starts this MCP server as a local child process.
ai-app-mcp --transport stdioEquivalent module command:
python -m ai_app_mcp.server --transport stdioClient configuration example:
{
"mcpServers": {
"ai-app-mcp": {
"command": "python",
"args": [
"-m",
"ai_app_mcp.server",
"--transport",
"stdio"
],
"env": {
"MCP_KNOWLEDGE_DIR": "D:/projects/codex/single/mcp/knowledge"
}
}
}
}In stdio mode, stdout is used for MCP protocol messages. Logs are written to stderr.
Transport 2: Streamable HTTP
Use Streamable HTTP for MCP Inspector, HTTP debugging, or service-to-service integration.
ai-app-mcp --transport streamable-http --host 127.0.0.1 --port 8000Equivalent module command:
python -m ai_app_mcp.server --transport streamable-http --host 127.0.0.1 --port 8000MCP endpoint:
http://127.0.0.1:8000/mcpDo not open this endpoint directly as a normal web page. It is a JSON-RPC MCP endpoint and requires an MCP client.
Debug With MCP Inspector
Start this MCP server:
ai-app-mcp --transport streamable-http --host 127.0.0.1 --port 8000Start Inspector:
npx -y @modelcontextprotocol/inspectorOpen:
http://localhost:6274Use:
Transport: Streamable HTTP
URL: http://127.0.0.1:8000/mcpEnvironment
Copy .env.example to .env and adjust values:
MCP_SERVER_NAME=ai-app-mcp
MCP_LOG_LEVEL=INFO
MCP_KNOWLEDGE_DIR=./knowledge
MCP_MAX_TEXT_CHARS=12000Knowledge Directory
By default, the server reads files from ./knowledge. Only .md, .txt, and .json files are allowed. Paths are resolved safely so clients cannot read files outside the knowledge directory.
Test
pytestAvailable Tools
5 toolsbuild_rag_promptB
Build a grounded RAG prompt from a question and retrieved context.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | ||
| question | Yes | ||
| answer_style | No | concise |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure burden. It only states the tool 'builds' a prompt without explaining how the question and context are combined, what operational meaning 'grounded' has, or whether this is a pure transformation with no side effects. This is a purpose statement rather than a behavioral specification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler or redundancy. It is front-loaded and efficient, though the minimalism contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description still lacks guidance on prerequisites, when to use this tool versus siblings, and how answer_style alters the output. For an agent making a selection decision, the description is not sufficiently complete to ensure correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It only paraphrases 'question' and 'context' without adding format, constraints, examples, or semantics, and it entirely omits the answer_style parameter beyond what the schema's enum already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (build) and the resource (a grounded RAG prompt) from question and retrieved context, which distinguishes it from the sibling search/retrieval tools. It doesn't fully elaborate on what a 'grounded RAG prompt' entails, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'retrieved context' implies this tool should be used after retrieval tools like search_knowledge_base or get_document, but there is no explicit when-to-use vs. when-not-to-use guidance. It also doesn't mention relationships to normalize_user_query or how answer_style affects invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentB
Read a document from the configured knowledge directory.
| Name | Required | Description | Default |
|---|---|---|---|
| relative_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It indicates a read-only operation with no side effects, but does not mention error handling (e.g., missing file), path restrictions, or access constraints. The output schema covers return values, but behavioral context is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary verb and resource. It contains no redundant information and is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, but the description lacks usage guidance and behavioral details that would help an agent select and invoke it correctly. It is adequate for a basic read operation but leaves gaps around error cases and when to prefer this over sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. The description implies 'relative_path' is relative to the configured knowledge directory but does not explicitly explain the parameter, its format, or any constraints. This is minimal value beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and resource ('a document from the configured knowledge directory'). It distinguishes from siblings like search_knowledge_base by indicating a direct file read by path rather than a search or query operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as search_knowledge_base. The description does not mention prerequisites, limitations, or preferred scenarios, leaving the agent without explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Return server health and runtime configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It states that the tool 'returns' data, implying a read-only operation, but it does not explicitly confirm safety, error behavior, or potential side effects. For a health check with no parameters, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words or filler. It effectively communicates the tool's purpose in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters) and the presence of an output schema, the description's high-level overview of what is returned ('server health and runtime configuration') is sufficient. No additional context about return values is needed since the output schema is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (vacuously). The description adds no parameter-specific details, but none are needed. The baseline for zero parameters is 4, and the description appropriately avoids inventing unnecessary parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and clearly states both the resource ('server health') and additional scope ('runtime configuration'). It is unambiguous and fully distinguishes this tool from sibling tools, which are knowledge-base oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The intended use is implied by the name and description—verifying server health—but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_user_queryC
Normalize user text before retrieval, routing, or agent planning.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| lowercase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. However, it fails to specify what 'normalize' entails (e.g., casing, trimming, stemming), whether it modifies the input or returns a new value, or any side effects. The 'lowercase' parameter is not mentioned, leaving significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It is front-loaded with the verb and resource, making it easy to scan. However, the extreme brevity borders on under-specification, though that is more a completeness issue than a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool being relatively simple, the description is too minimal. It lacks behavioral details, parameter explanations, and any firm usage heuristics. Given the absence of annotations and the presence of an output schema, the description still fails to provide a complete picture of when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about the 'query' or 'lowercase' parameters. The parameter names offer some hints, but the description does not explain their meaning, types, or usage. This provides no added value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Normalize') and the resource ('user text'), and provides context for when it is performed ('before retrieval, routing, or agent planning'). It is distinct from sibling tools like search_knowledge_base or get_document, though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before retrieval, routing, or agent planning' implies the usage context, but there is no explicit guidance on when not to use the tool or which alternatives might be more appropriate. The guidance is implied rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledge_baseC
Search local knowledge files by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions 'local' files, adding a scope constraint, but does not disclose whether the operation is read-only, how results are sorted, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise single sentence with no waste, making it easy to parse. However, it is slightly under-specified for the tool's functionality, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (two parameters, output schema present), a short description is acceptable, but it omits details about result ordering, limits, and the distinction between searching local vs. other sources. The lack of annotations further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, and the description only adds 'keyword' as a hint for the query parameter. The 'limit' parameter is entirely unexplained, so the description fails to compensate for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'local knowledge files', and the method 'by keyword'. It distinguishes from siblings like get_document by indicating a search operation, but does not explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings such as get_document or build_rag_prompt. No use cases, exclusions, or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
All tools have distinct roles: search and get_document are clearly separate (search vs. reading full doc), build_rag_prompt and normalize_user_query serve different pipeline stages, and health_check is standalone. Slight potential confusion exists between search_knowledge_base and get_document, but descriptions resolve this.
All tool names follow a consistent verb_noun snake_case pattern: search_knowledge_base, get_document, build_rag_prompt, normalize_user_query, health_check. The pattern is predictable and readable.
Five tools is a well-scoped count for a RAG-focused server. Each tool serves a clear purpose in the pipeline, and the count feels neither too thin nor overly heavy.
The set covers the core RAG flow (normalize, search, retrieve, build prompt) plus health check. Missing operations like adding/updating knowledge base documents or a combined retrieve tool, but these are minor gaps for the apparent scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server and client implementation with comprehensive features including structured logging, health checks, metrics, authentication, and RAG capabilities with PostgreSQL vector search. Supports both stdio and SSE transports with containerization and security features for enterprise deployment.MIT
- FlicenseNot gradedqualityDmaintenanceA foundational template for building MCP servers in Python using Streamable HTTP transport. Provides example implementations of tools, resources, and prompts to help developers create custom MCP integrations for AI assistants.
- AlicenseNot gradedqualityDmaintenanceA comprehensive Python MCP server with built-in knowledge base (SQLite + FTS5), web management interface, and flexible tool grouping system. Supports multiple transport protocols (stdio, SSE, HTTP Stream) with zero external dependencies.MIT
- FlicenseNot gradedqualityCmaintenanceA Python MCP server providing AI agents with tools for local knowledge base search, business context retrieval, and text summarization prompt generation.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yh008/Mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server