Microsoft XNA is a set of tools with a
managed runtime environment provided
by Microsoft that facilitates computer
game development and management. XNA
attempts to free game developers from
writing "repetitive boilerplate
code" and to bring different
aspects of game production into a
single system.
It is designed as a framework - in fact, XNA is the Microsoft XNA Framework - so technically it's not an engine by name.
There is no 'engine' - if you notice, you derive your main class from XNA.Framework.Game and have to override the draw and update functions yourself. There is no central rendering system, or input system, or audio system ready out of the box. There is SpriteBatch and the vertex classes, there is KeyboardState, and there are some audio classes..but they are only abstractions over the low level drawing code.
EDIT: For the sake of usefulness, why does something matter if it's labelled as an engine, framework, library, or toolset?
To clear things up somewhat: I am developing an engine in XNA. Obviously I can't do that in something like Unreal, like Jonathan has mentioned. However, there are a few things I feel are important that XNA just doesn't have:
Plug-n-play: I want to be able to make some kind of template - have this HP, this mesh, this animation and BOOM! I have an NPC in my game.
Hidden low level - XNA does this already, but I don't want to fiddle around with GameServiceProviders. I just want to shove stuff together.
Game separated from engine - There may be a 'game' class, but I want to separate my logic and my code from the base system. I don't want if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mixed with updating the buffers on my graphics renderer.