LNA-Report MCP Server
This server analyzes AWS Learning Needs Analysis (LNA) CSV data and automatically generates capability assessment reports, enabling AI agents to perform data analysis and report generation.
Capabilities:
Analyze LNA Data (
analyze_lna): Parse and analyze an LNA CSV file to return team-by-team competency status, including scores, certifications, and roles in JSON format.Generate PPT Report (
generate_report): Automatically create a full PowerPoint (.pptx) report from LNA CSV data, including radar charts, team profiles, executive summary, training recommendations, and next steps. Supports custom company name and team configuration.Get Team/Overall Scores (
get_team_scores): Retrieve course-by-course competency scores for a specific team or the entire organization in JSON format.Get Recommendations (
get_recommendations): Generate prioritized training course recommendations (urgent/high/medium priority) for a specific team or all teams based on LNA scores.Get Individual Assessments (
get_individual_assessments): Retrieve per-person competency evaluations including average score, top 3 strengths, top 3 weaknesses, and top 3 recommended training courses.
Analyzes LNA (Learning Needs Analysis) CSV data exported from Qualtrics to generate competency assessment reports in PPT format.
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., "@LNA-Report MCP ServerAnalyze the LNA CSV file and generate a PPT competency report."
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.
π§ LNA-Report MCP Server
AWS LNA(Learning Needs Analysis) CSV λ°μ΄ν°λ₯Ό μλ λΆμνμ¬ **μλκ°ν νκ° λΆμ 리ν¬νΈ(PPT)**λ₯Ό μμ±νλ MCP(Model Context Protocol) μλ²μ λλ€.
MCPλ? AI μμ΄μ νΈκ° μΈλΆ λꡬλ₯Ό νΈμΆν μ μκ² ν΄μ£Όλ νμ€ νλ‘ν μ½μ λλ€.
μ΄ μλ²λ₯Ό μ°κ²°νλ©΄ AIκ° LNA λ°μ΄ν° λΆμκ³Ό 리ν¬νΈ μμ±μ μλμΌλ‘ μνν©λλ€.
β¨ μ£Όμ κΈ°λ₯
Tool | κΈ°λ₯ | μΆλ ₯ |
| LNA CSV μ 체 λΆμ | JSON (νλ³ μ μ, μ격μ¦, μν ) |
| PPT 리ν¬νΈ μλ μμ± | PPTX (λ μ΄λ μ°¨νΈ ν¬ν¨) |
| ν/μ 체 κ³Όμ λ³ μ μ μ‘°ν | JSON (κ³Όμ λ³ μ μ) |
| κ΅μ‘ μΆμ² κ³Όμ λμΆ | JSON (κΈ΄κΈ/λμ/보ν΅) |
| κ°μΈλ³ μλ νκ° | JSON (κ°μ /μ½μ /μΆμ²κ΅μ‘) |
Related MCP server: S3 Data Lake MCP Server
π μꡬμ¬ν
Python 3.10 μ΄μ
pip ν¨ν€μ§ κ΄λ¦¬μ
Windows 10/11, macOS, λλ Linux
π μ€μΉ λ°©λ²
Step 1: 리ν¬μ§ν 리 Clone
git clone https://github.com/twkim1122/LNA_Report_MCP.git
cd LNA_Report_MCPStep 2: ν¨ν€μ§ μ€μΉ (editable λͺ¨λ)
pip install -e .μ°Έκ³ : μμ‘΄μ±μ΄ μλ μ€μΉλ©λλ€ (
mcp[cli],pandas,python-pptx,matplotlib,numpy)
Step 3: μ€μΉ νμΈ
python -m lna_mcp.server --helpμ€λ₯ μμ΄ μ€νλλ©΄ μ€μΉ μλ£!
π MCP ν΄λΌμ΄μΈνΈ μ°λ μ€μ
Option A: Amazon Quick μ°λ
Amazon Quick μ΄κΈ°
Settings β Capabilities β Connectors μ΄λ
"+ Add MCP server" β Local (stdio) μ ν
μλ κ° μ λ ₯:
νλͺ© | κ° |
Name |
|
Command |
|
Args |
|
Working Directory |
|
Save β μ λνμμ "LNA νμΌ λΆμν΄ μ€" μ λ ₯νμ¬ Tool μΈμ νμΈ
Option B: Kiro CLI μ°λ
~/.kiro/settings/mcp.json νμΌμ μΆκ° (μμΌλ©΄ μλ‘ μμ±):
{
"mcpServers": {
"lna-report": {
"command": "python",
"args": ["-m", "lna_mcp.server"],
"cwd": "<cloneν κ²½λ‘>/LNA_Report_MCP/src",
"env": {}
}
}
}Windows μμ:
"cwd": "C:\\Users\\<username>\\projects\\LNA_Report_MCP\\src"macOS/Linux μμ:
"cwd": "/home/<username>/projects/LNA_Report_MCP/src"
Kiro CLI μ¬μμ ν Toolμ΄ μΈμλ©λλ€.
Option C: Claude Desktop μ°λ
claude_desktop_config.jsonμ μΆκ°:
{
"mcpServers": {
"lna-report": {
"command": "python",
"args": ["-m", "lna_mcp.server"],
"cwd": "<cloneν κ²½λ‘>/LNA_Report_MCP/src"
}
}
}π μ¬μ© λ°©λ²
1. μ 체 λΆμ
AIμκ² μμ²:
LNA CSV νμΌμ λΆμν΄ μ£ΌμΈμ.
csv_path: "C:\κ²½λ‘\LNA_2026.csv"2. PPT 리ν¬νΈ μμ±
LNA λΆμ 리ν¬νΈλ₯Ό PPTλ‘ λ§λ€μ΄ μ£ΌμΈμ.
csv_path: "C:\κ²½λ‘\LNA_2026.csv"
output_path: "C:\μΆλ ₯\리ν¬νΈ.pptx"
company_name: "ACME Corp"
LNA λΆμ 리ν¬νΈλ₯Ό HTMLλ‘ λ§λ€μ΄ μ£ΌμΈμ.3. νΉμ ν κ΅μ‘ μΆμ²
ν΄λΌμ°λ AXνμ νμν κ΅μ‘ κ³Όμ μ μΆμ²ν΄ μ£ΌμΈμ.4. κ°μΈλ³ νκ°
κ° κ°μΈλ³ κ°μ , μ½μ , μΆμ² κ΅μ‘μ μλ € μ£ΌμΈμ.ποΈ CSV μ λ ₯ νμ
νμ μ¬ν
Qualtrics LNA Excelμμ 'Raw Data' μνΈλ₯Ό CSVλ‘ λ³ν
β οΈ 'Student Heatmap' μνΈκ° μλ 'Raw Data' μνΈ μ¬μ©
Progress컬λΌμ΄ λ°λμ ν¬ν¨λμ΄μΌ ν¨ (100% μλ£ μλ΅λ§ λΆμ)μΈμ½λ©: UTF-8 BOM κΆμ₯
CSV λ³ν λ°©λ²
Qualtrics LNA Excel μ΄κΈ°
'Raw Data' μνΈ μ ν
λ€λ₯Έ μ΄λ¦μΌλ‘ μ μ₯βCSV UTF-8 (μΌνλ‘ λΆλ¦¬)(*.csv)μ νμ μ₯
π’ ν μ€μ (team_config)
LNA CSVμ ν 컬λΌμ Qualtrics μλ² λλ λ³μ(${e://Field/Team1} λ±)λ‘ λμ΄ μμ΄, μ€μ νλͺ
κ³Ό λ§€νμ΄ νμν©λλ€.
team_config JSON νμ
{
"${e://Field/Team1}": {
"name": "μν°νλΌμ΄μ¦ ꡬμΆ/μ΄μν",
"leader": "K",
"mission": "ν΄λΌμ°λ ꡬμΆ/μ΄μ"
},
"${e://Field/Team2}": {
"name": "AXν",
"leader": "T",
"mission": "ν΄λΌμ°λ μ ν 컨μ€ν
"
}
}ν: team_config μμ΄λ λΆμμ κ°λ₯ν©λλ€. μ΄ κ²½μ° νλͺ μ΄ μμκ°μΌλ‘ νμλ©λλ€.
π 리ν¬νΈ ν¬ν¨ λ΄μ© (PPT)
μμ±λλ PPT 리ν¬νΈμλ λ€μμ΄ ν¬ν¨λ©λλ€:
νμ§ + κΈ°λ° κ³ μ§
LNA μΆμ§ λ°°κ²½ λ° λͺ©μ
Executive Summary (κ°μ /μ½μ μμ)
Score μ μ κΈ°μ€ (1~5μ ν΄μ)
μ μ¬ μλ νν© + λ μ΄λ μ°¨νΈ
νλ³ μμΈ λΆμ (νλ‘ν, μ μ, κ°λ³ λ μ΄λ μ°¨νΈ)
νλ³ λΉκ΅ λ μ΄λ μ°¨νΈ (μ€λ²λ μ΄)
νλ³ κ΅μ‘ μΆμ² (κΈ΄κΈ/λμ/보ν΅)
κ²°λ‘ λ° Next Steps
π νλ‘μ νΈ κ΅¬μ‘°
LNA_Report_MCP/
βββ pyproject.toml # ν¨ν€μ§ μ€μ λ° μμ‘΄μ±
βββ README.md # λ³Έ λ¬Έμ
βββ .gitignore
βββ src/lna_mcp/
βββ __init__.py
βββ server.py # MCP μλ² (Tool μ μ)
βββ analyzer.py # LNA λΆμ μμ§
βββ report_generator.py # PPT 리ν¬νΈ μμ±κΈ°π μ λ°μ΄νΈ λ°©λ²
μλ²κ° μ λ°μ΄νΈλλ©΄:
cd LNA_Report_MCP
git pull
pip install -e . # μμ‘΄μ± λ³κ²½ μAmazon Quick / Kiro CLI μ¬μμ λλ MCP μλ² Reconnect
β FAQ
Q: Python λ²μ μ΄ 3.9μΈλ° μ¬μ© κ°λ₯νκ°μ?
A: 3.10 μ΄μμ΄ νμν©λλ€. python --versionμΌλ‘ νμΈ ν, νμμ μ
κ·Έλ μ΄λνμΈμ.
Q: pip install -e . μμ μ€λ₯κ° λ°μν©λλ€
A: pipλ₯Ό μ΅μ μΌλ‘ μ κ·Έλ μ΄λν ν μ¬μλ:
pip install --upgrade pip
pip install -e .Q: Toolμ΄ μΈμλμ§ μμ΅λλ€
A: cwd κ²½λ‘κ° src ν΄λλ₯Ό κ°λ¦¬ν€λμ§ νμΈνμΈμ. LNA_Report_MCP/srcκ° μ νν κ²½λ‘μ
λλ€.
Q: CSV λΆμ μ "Progress μ»¬λΌ μμ" μ€λ₯
A: Qualtrics Excelμμ 'Raw Data' μνΈλ₯Ό CSVλ‘ λ³ννλμ§ νμΈνμΈμ. 'Student Heatmap' μνΈλ Progress 컬λΌμ΄ μμ΅λλ€.
Q: νκΈμ΄ κΉ¨μ§λλ€
A: CSV μ μ₯ μ UTF-8 BOM μΈμ½λ©μ μ¬μ©νμΈμ. Excelμμ CSV UTF-8 (μΌνλ‘ λΆλ¦¬) νμμΌλ‘ μ μ₯ν©λλ€.
Q: λ μ΄λ μ°¨νΈκ° μμ±λμ§ μμ΅λλ€
A: matplotlib νκΈ ν°νΈ μ΄μμΌ μ μμ΅λλ€. Windowsλ 'Malgun Gothic', macOSλ 'AppleGothic'μ΄ νμν©λλ€. macOS μ¬μ©μλ src/lna_mcp/report_generator.pyμμ ν°νΈ μ€μ μ λ³κ²½νμΈμ:
plt.rcParams["font.family"] = "AppleGothic" # macOSπ·οΈ Score μ μ
Score | μμ€ | μλ―Έ |
1 | None | κΈ°λ³Έμ μΈ κ΄λ ¨ μ§μμ΄ μλ μν |
2 | Basic | κΈ°λ³Έμ μΈ μ΄ν΄λ ₯μ κ°μΆκ³ μμΌλ μ 무 μν λΆκ° |
3 | Functional | μ€ν¬ νμ© μ 무 μν κ°λ₯, νμμ AWS μ§μ νμ |
4 | Proficient | λ€μν μμ€μ μ 무λ₯Ό μν λ° μ μ© κ°λ₯ |
5 | Expert | μ λ¬Έκ° μν μν λ° μ»¨μ€ν μν κ°λ₯ |
π License
Internal use only β AWS T&C Korea
π€ Author
AWS T&C Korea Team
Contact: ktaewoo@amazon.com
Available Tools
5 toolsanalyze_lnaA
LNA CSV νμΌμ λΆμνμ¬ νλ³ μλ νν©μ λ°νν©λλ€.
Args: csv_path: LNA CSV νμΌ κ²½λ‘ team_config: ν μ€μ JSON (μ ν). μ: {"Team1": {"name": "ꡬμΆν", "leader": "μ΅μ§μ", "mission": "ν΄λΌμ°λ ꡬμΆ/μ΄μ"}}
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | ||
| team_config | No |
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 carries full burden. It explains the purpose and parameters but does not disclose side effects (e.g., read-only or mutating), error handling, or output format details beyond the implied return of team capability status.
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 concise and front-loaded with the core purpose. The Args section is cleanly structured with no superfluous text.
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 presence of an output schema, the description adequately covers tool usage and parameter semantics. Minor gap: the expected CSV format is not described, but overall it is complete for 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?
With 0% schema description coverage, the description effectively documents both parameters. It gives a clear definition for csv_path (LNA CSV file path) and team_config (optional JSON string with example), adding essential meaning beyond the schema's type and title.
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 tool analyzes LNA CSV files to return team capability status. This distinguishes it from siblings like generate_report (creates a report) and get_individual_assessments (focuses on individuals).
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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_reportB
LNA CSV νμΌμ λΆμνμ¬ μλκ°ν νκ° λΆμ 리ν¬νΈ PPTλ₯Ό μμ±ν©λλ€.
Args: csv_path: LNA CSV νμΌ κ²½λ‘ output_path: μμ±ν PPT νμΌ κ²½λ‘ team_config: ν μ€μ JSON. μ: {"Team1": {"name": "ꡬμΆν", "leader": "μ΅μ§μ", "mission": "ν΄λΌμ°λ ꡬμΆ/μ΄μ"}} company_name: κ³ κ°μ¬λͺ
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | ||
| output_path | Yes | ||
| team_config | No | ||
| company_name | No | κ³ κ°μ¬ |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the core behavior (analyze CSV, output PPT) but omits side effects, permissions, error handling, or constraints. With no annotations, a score of 3 reflects minimal but adequate behavioral disclosure for a report-generation tool.
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 concise with a single introductory sentence and a structured Args block. Every sentence adds value, though the Args section could be slightly more compact. Overall efficient.
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 output schema exists, return values need not be explained. However, the description lacks context about input CSV format, error scenarios, and report content scope. With 4 parameters and no annotations, some completeness gaps remain.
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 coverage is 0%, so description must add meaning. The Args section provides clear descriptions for all 4 parameters, including an example for 'team_config' and default values for optional params. This compensates well for the bare 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 tool generates a PPT report from LNA CSV data. It uses a specific verb-resource pairing ('analyzes and generates') and implies a distinct purpose from sibling tools like 'analyze_lna' and 'get_individual_assessments', though not explicitly differentiating.
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 on when to use this tool versus alternatives. The description only states what it does, not when it should be selected over siblings like 'analyze_lna' or 'get_recommendations'. No 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.
get_individual_assessmentsB
κ°μΈλ³ μλ νκ° κ²°κ³Όλ₯Ό λ°νν©λλ€ (μ΄λ¦, ν, νκ· μ μ, κ°μ 3κ°, μ½μ 3κ°, μΆμ²κ΅μ‘3κ°).
Args: csv_path: LNA CSV νμΌ κ²½λ‘ team_config: ν μ€μ JSON (μ ν)
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | ||
| team_config | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It only states what is returned, with no mention of side effects, authentication, file existence handling, or read-only nature. Minimal transparency.
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 concise: a one-line purpose then a short Args list. It is front-loaded with the main action and result fields. No redundant sentences.
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 (2 params, output schema present), the description covers the basic functionality and return fields. However, it lacks usage guidance and behavioral context, making it minimally complete.
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. The Args section adds brief explanations ('LNA CSV file path', 'team setting JSON (optional)') but lacks detail on formats, defaults, or constraints. For two parameters, this is insufficient.
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?
Description clearly states it returns individual competency assessment results and lists the specific fields (name, team, average score, strengths, weaknesses, recommended trainings). The verb 'returns' and explicit resource make the purpose 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?
No guidance is provided on when to use this tool vs. its siblings (analyze_lna, get_team_scores, etc.). The description does not indicate scenarios or alternatives, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsB
νλ³ κ΅μ‘ μΆμ² κ³Όμ μ λ°νν©λλ€.
Args: csv_path: LNA CSV νμΌ κ²½λ‘ team_name: νλͺ (λΉμ΄μμΌλ©΄ μ 체)
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | ||
| team_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses the tool returns recommendations based on a CSV file and optional team name, but does not mention side effects, permissions, or error conditions. It is adequate for a simple read operation but lacks depth.
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?
Extremely concise: three lines with a clear front-loaded Korean sentence. Every phrase is necessary with no wasted words. Efficient communication.
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 an output schema exists (not shown), the description need not detail return values. However, it does not explain the nature of recommendations, how the CSV is used, or any dependencies. Minimal but sufficient for a simple tool with few parameters.
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 coverage is 0%, so description adds meaning. It explains csv_path as 'LNA CSV file path' and team_name as 'team name (empty for all)'. This adds context beyond the schema titles, though examples or format constraints would improve it.
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 tool returns team-specific training recommendations (verb+resource). It distinguishes from siblings like get_individual_assessments and get_team_scores by focusing on recommendations. However, it could be more specific about the source (LNA CSV) and the context of 'education recommendations'.
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 explicit guidance on when to use this tool versus alternatives (e.g., analyze_lna, generate_report). The description does not mention scenarios, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_scoresA
νΉμ ν λλ μ 체μ κ³Όμ λ³ μλ μ μλ₯Ό λ°νν©λλ€.
Args: csv_path: LNA CSV νμΌ κ²½λ‘ team_name: νλͺ (λΉμ΄μμΌλ©΄ μ 체)
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | Yes | ||
| team_name | No |
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 fully disclose behavior. It only states that scores are returned, but omits details such as error handling for invalid csv_path, performance implications, or what 'competency scores' entail.
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 conciseβtwo sentences plus parameter documentationβwith the purpose stated upfront. No unnecessary words or redundancy.
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 has an output schema, so the description does not need to detail returns. However, it lacks context on behavioral aspects (e.g., data format, error behavior) and does not explain how team_name interacts with the CSV. Adequate but with gaps.
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%, but the description adds meaningful context: csv_path is the 'LNA CSV file path' and team_name defaults to all teams when empty. This clarifies the parameters beyond the schema's minimal titles.
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 tool returns competency scores by process for a specific team or all teams. It uses a specific verb ('returns') and resource ('competency scores'), and distinguishes from siblings that focus on individual assessments or analysis.
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 provides no guidance on when to use this tool versus alternatives like get_individual_assessments or get_recommendations. It merely states what it does without indicating context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.0.0- First observed
analyze_lna - First observed
generate_report - First observed
get_individual_assessments - First observed
get_recommendations - First observed
get_team_scores
TDQS
Tools have distinct purposes: analysis, report generation, individual assessments, recommendations, and team scores. Minor potential overlap between 'analyze_lna' (team capability status) and 'get_team_scores' (course-specific scores) but descriptions clarify differences.
All tools follow a consistent verb_noun snake_case pattern (analyze_lna, generate_report, get_individual_assessments, get_recommendations, get_team_scores). No deviations.
Server has 5 tools, well-scoped for its purpose of analyzing LNA data and generating reports and recommendations. Not too few or too many.
Covers main operations: analysis, report generation, individual assessments, recommendations, and team scores. Missing a tool to manage team configurations or validate inputs, but not essential for core functionality.
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
Governance maturity assessment, compliance gap analysis, and evidence-linked briefs for AI agents.
AWS cloud security scanners for AI agents β S3, IAM, EC2, EKS, RDS, CloudTrail, CloudWatch Logs
HIPAA compliance AI agent β scan, grade, SRA, and generate compliance docs.
Agent-readiness scanner (0-5 score), robots.txt + llms.txt generators, managed agent enablement.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAI-first CSV analysis tool that enables AI agents to analyze, query, and audit large CSV files directly within conversations, turning raw data into actionable insights.2-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query S3 data lakes using natural language, with support for CSV, JSON, Parquet and tools for data discovery, analysis, and metadata exploration.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with PowerPoint presentations through natural language commands, supporting reading, editing, slide management, and automated speaker notes processing.MIT

AIReady MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to assess AI-readiness and improve AI leverage through analysis tools, resources, and prompts for project scanning and remediation.26MIT
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/twkim1122/LNA_Report_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server